././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.7265584 PyQt6-6.6.1/0000755000076500000240000000000014532160403011364 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0486817 PyQt6-6.6.1/ChangeLog0000644000076500000240000036446614532160372013166 0ustar00philstaff2023-11-18 Phil Thompson * NEWS, PyQt6.msp: Fix QWidgetAction ownership annotations. [68ad2464c85f] [6.6.1] <6.6-maint> 2023-10-25 Phil Thompson * .hgtags: Added tag 6.6.0 for changeset 7bd79ffe5e44 [cb763c7290c3] 2023-10-24 Phil Thompson * PyQt6.msp: Fix the handling og QSqlResult::boundValues() when protected is not public. [7bd79ffe5e44] [6.6.0] * NEWS, PyQt6.msp: The new UNIX process parameters handlign aren't available on Windows. [18d970a9100e] 2023-10-22 Phil Thompson * qpy/QtCore/qpycore_qmap.sip: Fixed the type hints for QMultiMap. [9b2e6df9277f] * PyQt6.msp, mksccode/QtMultimedia.versions, mksccode/QtPdf.versions, mksccode/QtPdfWidgets.versions, qpy/QtBluetooth/qpybluetooth_quint128.sip: Completed the updates for Qt v6.6. [b0ef6ec6e196] * PyQt6.msp: Updated QtBluetooth and QtSql for Qt v6.6. [cad379a69f92] * PyQt6.msp: Updated QtNetwork and QtWidgets for Qt v6.6. [b29ec1fc1b40] * PyQt6.msp: Updated QtGui for Qt v6.6. [f3e4b6a773ae] * NEWS, PyQt6.msp: Updated QtCore for Qt v6.6. [bbfe66e440ed] 2023-10-14 Phil Thompson * Merged the 6.5-maint branch. [780f6d92465c] 2023-10-10 Phil Thompson * .hgtags: Added tag 6.5.3 for changeset 8b5b0c663207 [797b2a52c678] <6.5-maint> * NEWS, qpy/QtCore/qpycore_types.cpp: Removed a compiler warning message. [8b5b0c663207] [6.5.3] <6.5-maint> 2023-10-08 Phil Thompson * project.py: Removed a debugging flag. [686cadf4b1bc] <6.5-maint> * PyQt6.msp, project.py: Changed the default values of the findData() and findText() methods of QComboBox so that they make sensible docstrings. [36c3449ca18e] <6.5-maint> * NEWS, project.py, qpy/QtCore/qpycore_types.cpp: Properly fix the use of PyType_GetDict(). ABI v13.6 is now needed. [a34537999cce] <6.5-maint> 2023-10-07 Phil Thompson * NEWS, qpy/QtCore/qpycore_types.cpp: Fixed the memory leak related to sipPyTypeDict() and Python v3.12. [f862a6f9f3bb] <6.5-maint> 2023-09-10 Phil Thompson * NEWS, PyQt6.msp: Fixed a v6.5 regression where /PyInt/ was missng from qint8 and quint8. [9803964f9421] <6.5-maint> 2023-09-01 Phil Thompson * NEWS, qpy/QtDBus/qpydbus_post_init.cpp: Fixed the convertion of QDBusVariant (and others) to QVariant. [ae560099c875] <6.5-maint> 2023-08-29 Phil Thompson * NEWS, PyQt6.msp: Added the /__len__/ annotation to QModelRoleDataSpan.length(). [1fc886013a86] <6.5-maint> 2023-08-27 Phil Thompson * NEWS, PyQt6.msp, qpy/QtCore/qpycore_qlist.sip: Added the missing QAbstractItemModel.multiData() method and QModelRoleDataSpan class. [f0ffbea6c75e] <6.5-maint> 2023-07-22 Phil Thompson * .hgtags: Added tag 6.5.2 for changeset 38c17a29338d [156ab803c346] <6.5-maint> * NEWS, extras/lupdate/python_source.py: Fixed an exception in pylupdate. [38c17a29338d] [6.5.2] <6.5-maint> 2023-07-21 Phil Thompson * NEWS, qpy/QtCore/qstring.sip: Fixed a regression in using None as a QString. [6089948fc034] <6.5-maint> 2023-07-15 Phil Thompson * NEWS, PyQt6.msp: Fixed the type hints for all ellipsis arguments. [dc5cc8a6f07d] <6.5-maint> 2023-07-14 Phil Thompson * qpy/QtCore/qstring.sip: Further fix fro QString's type hint. [5c0f11c46cb1] <6.5-maint> * NEWS, qpy/QtCore/qstring.sip: Fixed the type hint for QString. [2857fd3946c7] <6.5-maint> 2023-07-12 Phil Thompson * PyQt6.msp: Another type hint fix for QObject.findChild(). [dd57f73873eb] <6.5-maint> * PyQt6.msp: Fixed the type hints fro QObject.findChild() and QObject.findChildren(). [b088d75e77d6] <6.5-maint> 2023-07-09 Phil Thompson * NEWS, PyQt6.msp: Fixed PYQT_SLOT for the QtCore module. [f5cb0b97d94e] <6.5-maint> 2023-07-05 Phil Thompson * extras/lupdate/python_source.py: pylupdate will now look for tr() and translate() as a function as well as a method. [a0230e25929a] <6.5-maint> * PyQt6.msp: Fixed the type hint for pyqtSlot(). [b8e51995b3c5] <6.5-maint> * PyQt6.msp: Fixed the type hint for PYQT_SLOT. [8c73a0c3dd1f] <6.5-maint> * NEWS, PyQt6.msp, qpy/QtCore/qbytearrayview.sip: Fixed the type hints for QByteArray and QByteArrayView. [f631f8e6cc3e] <6.5-maint> 2023-06-08 Phil Thompson * NEWS, PyQt6.msp, project.py: Added the missing QEvent.Type.EnterEditFocus and QEvent.Type.LeaveEditFocus enum members. [a8d9583f33d9] <6.5-maint> * NEWS, PyQt6.msp: Added the missing QEvent.Type.NativeGesture and QEvent.Type.Quit enum members. [ebd0738bb268] <6.5-maint> 2023-06-04 Phil Thompson * NEWS: Updated the NEWS file. [6590e301a19c] <6.5-maint> * config-tests/cfgtest_QtCore.cpp: Fixed building against Qt older than v6.5. [4860e1d699d4] <6.5-maint> 2023-06-02 Phil Thompson * .hgtags: Added tag 6.5.1 for changeset 443f350df939 [9d6e72a95cae] <6.5-maint> 2023-05-26 Phil Thompson * NEWS, qpy/QtCore/qpycore_pyqtboundsignal.cpp: Fixed a regression that broke pyqtSlot arguments that where typedefs. [443f350df939] [6.5.1] <6.5-maint> 2023-05-25 Phil Thompson * NEWS, project.py: Ensure the permission plugins are built in. [dea56beea30d] <6.5-maint> 2023-05-23 Phil Thompson * PyQt6.msp: Fixed the conversion of QPermission. [ba763ef07730] <6.5-maint> 2023-05-22 Phil Thompson * PyQt6.msp, config-tests/cfgtest_QtCore.cpp: Fixed build issues with the permissions support. [04c3b8f59a6c] <6.5-maint> * NEWS, PyQt6.msp, config-tests/cfgtest_QtCore.cpp: Added support for QPermission et al. [f673353b1366] <6.5-maint> 2023-04-24 Phil Thompson * extras/uic/pyuic.py: pyuic6 doesn't, for consistency reasons, recurse when compiling a directory. [7f0f1196edd6] <6.5-maint> * NEWS, extras/uic/compile_ui.py, extras/uic/pyuic.py: compileUiDir() can now compile muliple .ui files in parallel. pyuic6 can now compile a directory contents. [09ca845e4626] <6.5-maint> 2023-04-05 Phil Thompson * .hgtags: Added tag 6.5.0 for changeset db2b0386d4f1 [a2256de71810] * NEWS, qpy/QtCore/qpycore_chimera.cpp: Fixed a regression in the handling of QFlags as signal arguments. [db2b0386d4f1] [6.5.0] 2023-04-04 Phil Thompson * NEWS, PyQt6.msp, project.py, pyproject.toml: Added the QtSpatialAudio module. [077c776029a6] 2023-04-03 Phil Thompson * NEWS, PyQt6.msp: Updated for Qt v6.5.0. [729660e6fc61] 2023-03-31 Phil Thompson * PyQt6.msp: Updated QtWidgets for Qt v6.5.0rc. [626287dd0ed1] * NEWS, PyQt6.msp: Updated QtRemoteObjects, QtSensors, QtSql, QtSvg, QtSvgWidgets, QtTest, QtTextToSpeech, QtWebChannel, QtWebSockets and QtXml for Qt v6.5.0rc. [161ffed7ef69] 2023-03-30 Phil Thompson * PyQt6.msp: Updated QtQml, QtQuick, QtQuick3D and QtQuickWidgets for Qt v6.5.0rc. [8ae811bd2c98] * NEWS, PyQt6.msp: Updated QtNetwork, QtNfc, QtOpenGL, QtOpenGLWidgets, QtPdf, QtPdfWidgets, QtPoitioning and QtPrintSupport for Qt v6.5.0rc. [b4b6ff5dc2d6] * PyQt6.msp, mksccode/QtMultimedia.versions: Updated the sub-class convertor code for QtMultimedia. [5fbc985e8383] * PyQt6.msp, qpy/QtCore/qpycore_qlist.sip: Updated QtDBus, QtDesigner, QtGui, QtHelp, QtMultimedia and QtMultimediaWidgets for Qt v6.5.0rc. [a721ab062d44] 2023-03-29 Phil Thompson * NEWS, PyQt6.msp: Updated QtBluetooth and QtCore for Qt v6.5.0rc. [8f2a4645ecca] * Merged the 6.4-maint branch. [43d0515da1a2] 2023-03-25 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Ensure Qt property getters and setters handle user-defined enums properly. Note that Designer still requires enums to be registered. [1765171f142d] <6.4-maint> * NEWS, PyQt6.msp: Improved the error checking when writing an enum property. [8432953b3600] <6.4-maint> 2023-03-24 Phil Thompson * NEWS, PyQt6.msp: Fixed QMetaProperty.write() to handle values of unregistered enums. [2064a87dba00] <6.4-maint> 2023-03-19 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Further improvements to reading user-defined Enum properties. [be6f382a1f57] <6.4-maint> * NEWS, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_types.cpp, test/metaobject/test_pyqtproperty.py: Fixed QMetaProperty.read() for user-defined enums. [9ef37f530e08] <6.4-maint> 2023-03-08 Phil Thompson * NEWS, qpy/QtCore/qpycore_pyqtboundsignal.cpp: When comparing types of a decorated slot, use the name of the C++ type rather rather than the meta-type (which may have changed). [9d77aaabfdff] <6.4-maint> 2023-02-02 Phil Thompson * .hgtags: Added tag 6.4.2 for changeset 0cf0f5deb862 [6008d812dbde] <6.4-maint> 2023-01-28 Phil Thompson * NEWS, extras/lupdate/lupdate.py: Fixed a regression in pylupdate. [0cf0f5deb862] [6.4.2] <6.4-maint> 2023-01-27 Phil Thompson * .hgtags: Added tag 6.4.1 for changeset f633ac74eeef [ffbaf766f709] <6.4-maint> * NEWS, qpy/QtCore/qpycore_qt_conf.cpp: Fixed the embedded qt.conf on Windows where there are non-ASCII characters in the pathname of the installation directory. [f633ac74eeef] [6.4.1] <6.4-maint> 2023-01-22 Phil Thompson * qpy/QtCore/qpycore_qvariant_value.cpp: Fixed the implementation of QSettings.value() for a list of strings. [a4b3ad49321b] <6.4-maint> * NEWS, PyQt6.msp: Fixed the base types of the QPdfBookmarkModel.Role and QPdfSearchModel.Role enums. [78cd78751823] <6.4-maint> 2023-01-15 Phil Thompson * PyQt6.msp: More Windows build fixes. [557383d31eef] <6.4-maint> * NEWS, PyQt6.msp: Fixed build errors on Windows. [2c160e7075fb] <6.4-maint> 2023-01-13 Phil Thompson * PyQt6.msp: Fixed the base type of the QPdfDocument.PageModelRole enum. [c31b80437d87] <6.4-maint> * extras/uic/Compiler/compiler.py, extras/uic/Compiler/qobjectcreator.py, extras/uic/Compiler/qtproxies.py, extras/uic/Loader/loader.py, extras/uic/Loader/qobjectcreator.py, extras/uic/icon_cache.py, extras/uic/objcreator.py, extras/uic/properties.py, extras/uic/uiparser.py: Refactored pyuic so that parent objects are specified as keyword arguments when possible so that custom widgets can have additional, preceding optional arguments. [5e44e8a15f2a] <6.4-maint> * NEWS, pyproject.toml, qpy/QtCore/qpycore_chimera.cpp: Backout the removal of support for unregistered enums as we still have to support protected enums and classes without a QMetaObject. [77ec5687a5fc] <6.4-maint> 2023-01-12 Phil Thompson * NEWS, pyproject.toml, qpy/QtCore/qpycore_chimera.cpp: Require SIP v6.7.6 so that all enums are registered with Qt. Simplify the enum support when converting types now that all will be registered. [79807338ba98] <6.4-maint> 2023-01-11 Phil Thompson * NEWS, qpy/QtCore/qpycore_chimera.cpp: Fixed regressions related to the handling of global enums in connections. [4f773319fd9a] <6.4-maint> 2022-12-14 Phil Thompson * NEWS, qpy/QtCore/qpycore_chimera.cpp: Fixed the handling of Qt properties when the type was a Python enum. [255ebf0c8996] <6.4-maint> 2022-12-04 Phil Thompson * NEWS, PyQt6.msp: Added toHBITMAP(), fromHBITMAP(), toHICON() and fromHICON() to QImage. [1a471b580467] <6.4-maint> 2022-10-28 Phil Thompson * extras/lupdate/lupdate.py: plupdate will now properly exclude subdirectories. [ccf01ff6a08e] <6.4-maint> * extras/lupdate/lupdate.py: pylupdate will ignore hidden files and directories when reading a directory. [301190b67f05] <6.4-maint> * NEWS, extras/uic/compile_ui.py: Fixed uic.compileUiDir() when the default system encoding is not UTF8. [9d65afef0172] <6.4-maint> 2022-10-10 Phil Thompson * NEWS, PyQt6.msp: Fixed QBoxLayout.insertItem() ownership bug. [ed33831448da] <6.4-maint> 2022-10-03 Phil Thompson * NEWS, PyQt6.msp: Added allocationLimit() and setAllocationLimit() to QImageReader. [aec5200df9d5] <6.4-maint> 2022-09-30 Phil Thompson * .hgtags: Added tag 6.4.0 for changeset 72aaf7b1fea2 [e028d20626d7] * NEWS, PyQt6.msp: Updated for Qt v6.4.0. [72aaf7b1fea2] [6.4.0] 2022-09-24 Phil Thompson * NEWS, PyQt6.msp: Fixed the base type of the QTextDocument.ResourceType enum. [97cfbe3484d8] 2022-09-21 Phil Thompson * NEWS, PyQt6.msp: Added a missing enum annotation. [333d7ba4f471] 2022-09-20 Phil Thompson * NEWS, PyQt6.msp, project.py: Added the QtPdfWidgets module. [04542ff1a3b4] * NEWS, PyQt6.msp, project.py: Added the QtPdf module. [8520491f7511] * PyQt6.msp: Updated the rest of the modules fro Qt v6.4.0rc. [b3a74e3fcad6] * PyQt6.msp: Updated QtOpenGL, QtOpenGLWidgets, QtPositioning and QtPrintSupport for Qt v6.4.0rc. [2e5315bc05d2] * PyQt6.msp, mksccode/QtNetwork.versions: Updated QtNetwork and QtNfc for Qt v6.4.0rc. [c625c73c833a] * PyQt6.msp: Updated QtMultimedia and QtMultimediaWidgets for Qt v6.4.0rc. [7343cfb4cce7] * PyQt6.msp: Updated QtBluetooth, QtDBus, QtDesigner, QtHelp and QtXML for Qt v6.4.0rc. [50664878b4ff] * NEWS, PyQt6.msp: Updated QtWidgets for Qt v6.4.0rc. [b44e64308188] 2022-09-19 Phil Thompson * PyQt6.msp: Updated QtGui for Qt v6.4.0rc. [aae1f9b46109] * NEWS, PyQt6.msp, qpy/QtCore/qanystringview.sip: Updated QtCore for Qt v6.4.0rc. [0532498dffc2] 2022-09-18 Phil Thompson * NEWS: Updated the NEWS file. [dcf4f7a92812] * Merged the 6.3-maint branch. [7a20935c2832] 2022-09-17 Phil Thompson * NEWS, qpy/QtCore/qpycore_qobject_helpers.cpp: Fixed calling QObject::inherits() from C++ on instances that were created by Python (and so was an instance of a generated derived class), had it's ownership transfered to C++ and the Python object garbage collected. This broke all sub-class converter code. [5f7909b6c1e3] <6.3-maint> 2022-09-15 Phil Thompson * NEWS, test/pyuic/QWidget/Widget03.ui: Fixed an incorrect test that breaks on Python v3.11. [bbfa52dc5e6f] <6.3-maint> 2022-08-16 Phil Thompson * NEWS, PyQt6.msp: Fixed the base type of FocusPolicy. [0215c2d5adbf] <6.3-maint> 2022-07-24 Phil Thompson * misc/pyqt-commercial.sip: Backed out changeset d3417110f23a as we can now fix universal wheels on Linux. [c6e64811b96a] <6.3-maint> 2022-07-19 Phil Thompson * NEWS, PyQt6.msp, qpy/QtWidgets/qpywidgets_post_init.cpp, qpy/QtWidgets/qpywidgets_qaction_helpers.cpp, qpy/QtWidgets/qpywidgets_qaction_helpers.h: Added QAction.menu() and QAction.setMenu(). [b8ba8efcf473] <6.3-maint> * NEWS, extras/lupdate/translation_file.py: Fixed pylupdate when restoring vanished messages. [8969d2e77bff] <6.3-maint> 2022-07-16 Phil Thompson * misc/pyqt-commercial.sip: Fixed the license check in commercial wheels for macOS. [d3417110f23a] <6.3-maint> 2022-06-30 Phil Thompson * NEWS, extras/uic/enum_map.py: Fixed pyuic's handling of Qt.ShortcutContext. [6b3e1d8bc7ec] <6.3-maint> 2022-06-25 Phil Thompson * NEWS, PyQt6.msp, config-tests/cfgtest_QtNetwork.cpp: Fixed building against Qt installations with SSL support but no DTLS support. [613ea495ccce] <6.3-maint> 2022-06-22 Phil Thompson * NEWS, qpy/QtCore/qpycore_chimera.cpp: Fixed the handling of enums when they haven't been registered with Qt's meta-type system. [3e79aeb5464d] <6.3-maint> 2022-06-17 Phil Thompson * .hgtags: Added tag 6.3.1 for changeset 247d2c1d453c [e666010cdfc4] <6.3-maint> * NEWS, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera_storage.cpp: Fixed issues when emitting signals with enum arguments. [247d2c1d453c] [6.3.1] <6.3-maint> 2022-06-15 Phil Thompson * NEWS, PyQt6.msp: Added qRegisterResourceData() and qUnregisterResourceData. [4302c2940491] <6.3-maint> 2022-06-06 Phil Thompson * NEWS, PyQt6.msp: Reordered QPainter methods so that QPolygon[F] are not handled as sequences. [eeab18cf3dc2] <6.3-maint> 2022-06-05 Phil Thompson * NEWS, qpy/QtCore/qpycore_chimera.cpp: Fixed the handling of char* slot arguments. [d367df954b70] <6.3-maint> 2022-05-20 Phil Thompson * NEWS, PyQt6.msp: Refactored the QPainter draw methods to exploit sip.array objects. [c6715cccc537] <6.3-maint> 2022-05-17 Phil Thompson * NEWS: Updated the NEWS file for sip.array. [1adefd1499a6] <6.3-maint> 2022-05-15 Phil Thompson * NEWS, PyQt6.msp, project.py: v13.4 of the sip ABI is now required (for the missing enum member support). Reverted the support for using an int instead of a Qt.GestureType. Deprecated (rather than removed) the QEvent ctor that takes an int argument. [d2ec9265d699] <6.3-maint> 2022-05-01 Phil Thompson * NEWS, PyQt6.msp: Fixes for building against a debug version of Python. [94918729af61] <6.3-maint> 2022-04-19 Phil Thompson * NEWS, PyQt6.msp: Added resize() to QPolygon, QPolygonF and QXmlStreamAttributes. [b6869cdce5ce] <6.3-maint> 2022-04-12 Phil Thompson * .hgtags: Added tag 6.3.0 for changeset 373bc2a6447e [22bcfae615cd] 2022-04-01 Phil Thompson * PyQt6.msp: Fixes for when building without protected being public. [373bc2a6447e] [6.3.0] * NEWS, project.py, qpy/QtCore/qpycore_post_init.cpp, qpy/QtCore/qpycore_post_init.cpp.in: Removed some legacy SIP v4 support. [184d70406908] 2022-03-31 Phil Thompson * PyQt6.msp: Updated the remaining modules for Qt v6.3.0rc. [1c4354d61062] * PyQt6.msp: Updated QtHelp, QtMultimedia, QtMultimediaWidgets and QtNetwork for Qt v6.3.0rc. [0566b82df55b] * PyQt6.msp, qpy/QtBluetooth/qpybluetooth_qmultihash.sip: Updated QtBluetooth, QtDBus, QtDesigner and QtGui for Qt v6.3.0rc. [cd140f0de691] * NEWS, PyQt6.msp: Updated QtCore for Qt v6.3.0rc. [a87a5ea93c97] 2022-03-28 Phil Thompson * NEWS: Merged the 6.2-maint branch. [962af9bda6d0] 2022-03-18 Phil Thompson * NEWS, qpy/QtCore/qpycore_pyqtslot.cpp: Keep a strong reference to methods when they are used as slots. [d70742ec07e0] <6.2-maint> 2022-02-26 Phil Thompson * NEWS, qpy/QtQml/qpyqml_listdata.cpp: Fixed a bug in the tidying up of QQmlListProperty. [3ce5cad6fbfe] <6.2-maint> 2022-02-01 Phil Thompson * .hgtags: Added tag 6.2.3 for changeset bf840012bc47 [76ccb7cf3d45] <6.2-maint> * qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtpyobject.h: Explicitly support comparisons of Python objects wrapped in a QVariant. [bf840012bc47] [6.2.3] <6.2-maint> * PyQt6.msp: Release the GIL when calling the QThreadPool dtor. [1e096bc898df] <6.2-maint> * NEWS, PyQt6.msp: Fixed the QLocale.FloatingPointPrecisionOption enum. [76db78226e19] <6.2-maint> 2022-01-25 Phil Thompson * NEWS, PyQt6.msp: Removed a couple of undocumented operators introduced in Qt v6.2. [f07068587ea8] <6.2-maint> 2022-01-24 Phil Thompson * NEWS, PyQt6.msp: Fixed the QFont.Stretch enum. [28de6ce508ce] <6.2-maint> 2022-01-10 Phil Thompson * NEWS, PyQt6.msp: Fixed the usage of Qt.GestureType to account for Qt returning custom values. [2d2edf8288be] <6.2-maint> 2022-01-07 Phil Thompson * NEWS, PyQt6.msp: Fixed the QSizePolicy.PolicyFlag enum. However currently it can only be used in combinations represented by the Policy enum. [1b9d11f650ad] <6.2-maint> 2022-01-04 Phil Thompson * NEWS, PyQt6.msp: Fixed the QTableWidgetItem.ItemType enum. [5d1e04945454] <6.2-maint> 2021-12-11 Phil Thompson * NEWS, qpy/QtNetwork/qpynetwork_qmap.sip: Fixed the handling of the result of QSslCertificate.subjectAlternativeNames(). [31743f3a2aec] <6.2-maint> 2021-12-01 Phil Thompson * .hgtags: Added tag 6.2.2 for changeset dd1923cdf995 [4f95f58edfec] <6.2-maint> * NEWS, PyQt6.msp: Added the missing QMediaPlayer loop-related methods. [dd1923cdf995] [6.2.2] <6.2-maint> 2021-11-29 Phil Thompson * PyQt6.msp: Fixed the toString(), toDisplayString() and toEncoded() methods of QUrl to accept QUrl.ComponentFormattingOptions flags. [94ac53ce9297] <6.2-maint> * NEWS, PyQt6.msp: Use a dedicated QEventLoop in the event hook as Qt6 seems to hide windows when the main event loop exits. [0b618767ac61] <6.2-maint> 2021-11-24 Phil Thompson * NEWS, PyQt6.msp: Fixed the QListWidgetItem.ItemType and QTreeWidgetItem.ItemType enums. [fc30342b6025] <6.2-maint> 2021-11-22 Phil Thompson * NEWS, PyQt6.msp: Added /Constrained/ to the QVariant serialiser so that it doesn't act as a catchall and bypass all subsequent serialisers (including slot extenders). [ce7d2be67940] <6.2-maint> 2021-11-21 Phil Thompson * project.py: Update the minimum ABI version of the sip module. [6e81d758b971] <6.2-maint> * PyQt6.msp: Qt.FocusPolicy members are now flags. [6f4ebc7b30e4] <6.2-maint> * NEWS, PyQt6.msp, pyproject.toml: Fixed the QStyle enums that have a custom base value so that the value is unsigned and can be added to. [8cd2a8c92b07] <6.2-maint> 2021-11-19 Phil Thompson * NEWS, extras/uic/uiparser.py: Fixed pyuic handling of alignment flags. [2c1990da7bb3] <6.2-maint> 2021-11-18 Phil Thompson * NEWS, PyQt6.msp: Added the missing QBluetoothUuid ctors. [a26c8d542c4a] <6.2-maint> 2021-11-16 Phil Thompson * NEWS, PyQt6.msp: Fixed the QBluetoothDeviceDiscoveryAgent.DiscoveryMethod enum. [a3c9210b471e] <6.2-maint> 2021-11-15 Phil Thompson * NEWS, extras/uic/enum_map.py: Fixes for pyuic handling of QFormLayout enums. [3c3c854f3f80] <6.2-maint> 2021-10-28 Phil Thompson * .hgtags: Added tag 6.2.1 for changeset a2c450b78bfa [cda76ceff903] <6.2-maint> * NEWS, PyQt6.msp: Added the QLowEnergyController.mtuChanged() signal which is now documented in Qtv v6.2.1. [a2c450b78bfa] [6.2.1] <6.2-maint> 2021-10-24 Phil Thompson * extras/uic/Compiler/qtproxies.py: Generate typing information to ignore connect() in pyuic generated code. [9c0e41c7ff2e] <6.2-maint> * NEWS, PyQt6.msp, pyproject.toml: Fixed pickling of QByteArray with Python v3.10. [a0e71847dd24] <6.2-maint> * test/classes/test_QByteArray.py: Added the QByteArray pickle test. [5030955cccde] <6.2-maint> 2021-10-23 Phil Thompson * NEWS, PyQt6.msp: Remove QObject.__getattr__() from QtCore.pyi as it hides missing/mistyped attribute names. [57b7422b71ce] <6.2-maint> 2021-10-22 Phil Thompson * NEWS, extras/uic/enum_map.py: Fixed pyuic's handling of QAction::MenuRole. [8810cca5e9b4] <6.2-maint> 2021-10-16 Phil Thompson * NEWS, pyproject.toml: SIP v6.3.2 is required to fix the /KeepReference/ in QImage ctors. [cb499c4af6b0] <6.2-maint> 2021-10-04 Phil Thompson * NEWS, extras/lupdate/python_source.py: Fixed QCoreApplication.translate() when the third argument is None. [5133bf2070f2] <6.2-maint> 2021-09-30 Phil Thompson * .hgtags: Added tag 6.2.0 for changeset 0bb49dbf5c8b [15bf52145355] * NEWS, PyQt6.msp: Updated for Qt v6.2.0. [0bb49dbf5c8b] [6.2.0] 2021-09-29 Phil Thompson * NEWS, PyQt6.msp: QCoreApplication.exit() is a slot from Qt v6.1. [7c555d2bd771] 2021-09-25 Phil Thompson * NEWS, qpy/QtCore/qpycore_pyqtmethodproxy.cpp: Fixed the invocation of meta-type methods so that the result is available. [ca7422fddf5a] 2021-09-23 Phil Thompson * unsupported/PyQt6-Purchasing/NEWS, unsupported/PyQt6-Purchasing/PyQt6-Purchasing.msp, unsupported/PyQt6-Purchasing/README, unsupported/PyQt6-Purchasing/pyproject.toml: Removed the 'unsupported' directory. [b4df868a6b6d] * NEWS, PyQt6.msp, rb-product.toml: Fixed the problem with QtRemoteObjects. [127c837acbdf] 2021-09-22 Phil Thompson * NEWS, PyQt6.msp: Completed the port of QtNfc. [512a66074830] * NEWS, PyQt6.msp, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_qmultihash.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip: Completed the port of QtBluetooth. [307d01aee62e] * project.py: Added QtBluetooth and QtNfc to project.py. [b2fe08777621] * PyQt6.msp: Initial port of QtNfc. [4ca5c5f2750d] * PyQt6.msp: Initial port of QtBluetooth. [60f45c3128bc] * modules/QAxContainer/qaxobject.sip: Updated the sub-class convertor code for QAxContainer. [de79cd0d7580] * PyQt6.msp, unsupported/PyQt6-Connectivity/PyQt6-Connectivity.msp: Add QtBluetooth and QtNfc from PyQt5 to the project file. [9aed3a4f9e43] * unsupported/PyQt6-Purchasing/PyQt6-Purchasing.msp, unsupported/PyQt6-Unsupported.msp, unsupported/PyQt6-WebEngine/NEWS, unsupported/PyQt6-WebEngine/README, unsupported/PyQt6-WebEngine/pyproject.toml: Tidies up the 'unsupported' directory. [fdaad46be1d2] * modules/QAxContainer/QAxContainermod.sip, modules/QAxContainer/qaxbase.sip, modules/QAxContainer/qaxobject.sip, modules/QAxContainer/qaxobjectinterface.sip, modules/QAxContainer/qaxwidget.sip: Ported QAxContainer to Qt6. [04a550de425a] * NEWS, project.py, rb-product.toml: Enable the build of QAxContainer. [10b014f1c5ff] 2021-09-17 Phil Thompson * NEWS, PyQt6.msp: Updated for Qt v6.2.0rc. [190b41cab26f] 2021-09-05 Phil Thompson * NEWS, PyQt6.msp: Fixed the QNetworkInformation.reachabilityChanged() signal. [a63b3cecae2c] 2021-08-27 Phil Thompson * NEWS, PyQt6.msp: Added the missing QMouseEvent.pos() which is now documented. [23e7523010e8] 2021-08-26 Phil Thompson * PyQt6.msp: Fixed the QUrl.ComponentFormattingOption and QUrl.UrlFormattingOption enums. [3dc0b4d025d1] * rb-product.toml: Disable QtRemoteObjects in the build system as the workaround doesn't seem to be reliable. [b89426d33166] 2021-08-22 Phil Thompson * NEWS, PyQt6.msp, project.py: Worked around the problem with QtRemoteObjects. [6537839dd6fa] 2021-08-19 Phil Thompson * NEWS, PyQt6.msp, project.py: Updated for Qt v6.2.0beta3. [12e1add66527] 2021-08-07 Phil Thompson * project.py: Disable QtRemoteObjects because of apparent problems with Qt v6.2.0beta2. [4e2cdf6d8481] 2021-08-06 Phil Thompson * pyproject.toml: Updated the SIP and PyQt-builder version dependencies. [41fe621c64d7] 2021-08-05 Phil Thompson * PyQt6.msp: Ignore multi-data in QtRemoteObjects. [3a85941675c1] * NEWS, PyQt6.msp, project.py: Added QtWebSockets. [83f7983dc69d] * NEWS, PyQt6.msp, project.py: Added QtWebChannel. [4f1ded0754d6] * NEWS, PyQt6.msp, project.py: Added QtSensors. [222091df778d] * NEWS, PyQt6.msp, project.py: Added QtRemoteObjects. [b204f04c9a0c] * NEWS, PyQt6.msp, project.py: Added QtPositioning. [b38d5aae7842] * NEWS, PyQt6.msp, project.py: Added the QtSerialPort module. [cf48cdf5c172] * project.py: Removed QtBluetooth and QtNfc from the build system. [17e5bf532a8d] * PyQt6.msp: Removed QtBluetooth and QtNfc from the project. [b9b06ad7df34] * unsupported/PyQt6-Connectivity/PyQt6-Connectivity.msp: Added PyQt6-Connectivity as an unsupported project. [2790e860c346] 2021-08-01 Phil Thompson * examples/multimediawidgets/camera/camera.py, examples/multimediawidgets/camera/camera.ui, examples/multimediawidgets/camera/images/shutter.svg, examples/multimediawidgets/camera/imagesettings.ui, examples/multimediawidgets/camera/ui_camera.py, examples/multimediawidgets/camera/ui_imagesettings.py, examples/multimediawidgets/camera/ui_videosettings.py, examples/multimediawidgets/camera/videosettings.ui: Added the camera example although it has a number of issues. [16f0c36a9f19] * PyQt6.msp: Added QMediaRecorder.captureSession(). [74855b5a7487] * qpy/QtMultimedia/qpymultimedia_qlist.sip: Added the QList mapped types for the QMediaFormat enums. [f36b6bf9c145] * qpy/QtMultimedia/qpymultimedia_qlist.sip: Implemented the mapped type for QList. [80046bdc1f87] * PyQt6.msp: Added the FileFormat related methods to QImageCapture. [b69357b96fec] * PyQt6.msp: Fixed the QMediaRecorder signals. [9c49ecdb1195] 2021-07-31 Phil Thompson * PyQt6.msp: Added static methods to QMediaFormat. [524ea52f51b9] * PyQt6.msp: Updated for Qt v6.2.0beta2. [643d1fc97e09] * examples/multimediawidgets/videographicsitem.py, examples/multimediawidgets/videowidget.py: Added the videographicsitem and videowidget QtMultimediaWidgets examples. [e6ecf20ffc28] * PyQt6.msp: Added QMediaMetaData.keys(). [d46d3083187b] * NEWS, PyQt6.msp: Added QMediaMetaData.insert(). [cda59a750906] 2021-07-28 Phil Thompson * NEWS, PyQt6.msp: Added the data() and constData() methods to QAudioBuffer. [500bc39c2cb2] * PyQt6.msp: Fixed the QMediaPlayer signals. [4fbc54197a4b] 2021-07-19 Phil Thompson * NEWS, examples/multimedia/audiodevices/audiodevices.py, examples/multimedia/audiodevices/audiodevicesbase.ui, examples/multimedia/audiodevices/ui_audiodevicesbase.py, examples/multimedia/audiooutput.py: Ported the QtMultimedia examples from PyQt5. [136a95203f5c] 2021-07-18 Phil Thompson * NEWS, PyQt6.msp, project.py: Added the QtMultimediaWidgets module. [a189c0448865] * NEWS, PyQt6.msp, project.py, qpy/QtMultimedia/qpymultimedia_qlist.sip: Completed the initial support for QtMultimedia. [005a5a6f2279] 2021-07-17 Phil Thompson * PyQt6.msp, qpy/QtMultimedia/qpymultimedia_qlist.sip: Completed the first pass through QtMultimedia. [47189280cc1a] 2021-07-16 Phil Thompson * NEWS, PyQt6.msp: Started work on QtMultimedia. [f2b2d9c9fa52] 2021-07-14 Phil Thompson * NEWS, PyQt6.msp, mksccode/QtOpenGL.versions, qpy/QtOpenGL/qpyopengl_qlist.sip: Fixed building against Qt configured for OpenGL ES2. [95a652ce2d96] 2021-07-12 Phil Thompson * qpy/QtCore/qpycore_std_pair.sip: Added the std::pair mapped type needed by PyQt6-Charts. [92db4a18d792] * qpy/QtCore/qpycore_qlist.sip: Fixed an exception message un the QList convertor. [e6453b26c219] * PyQt6.msp: Completed the support for Qt v6.2.0beta1. [163831f2aae3] * NEWS, PyQt6.msp: Initial pass through Qt v6.2.0beta1. [1a6569729dc9] * Merged the 6.1-maint branch. [2e3463b0829c] 2021-07-09 Phil Thompson * NEWS, PyQt6.msp: Fixed the ordering of the QCompleter ctors so that a QAbstractItemModel argument doesn't get interpreted as a parent QObject argument. [1eed874dbae5] <6.1-maint> 2021-06-13 Phil Thompson * .hgtags: Added tag 6.1.1 for changeset 4a8c6ec34804 [248b4a679303] <6.1-maint> * NEWS, PyQt6.msp: Fixed a v6.1.0 regression in QImage.fill(). [4a8c6ec34804] [6.1.1] <6.1-maint> 2021-06-03 Phil Thompson * NEWS, PyQt6.msp: Fixed the base type of the QFileSystemModel.Roles enum. [87985eec2ed8] <6.1-maint> 2021-05-30 Phil Thompson * extras/lupdate/translation_file.py: The pylupdate6 summary is now created with one print statement to reduce the chance it gets mixed up with other parallel output. [daf3e2fbfb6f] <6.1-maint> * extras/lupdate/translation_file.py: pylupdate6 bug fix. [b5519af5a1bc] <6.1-maint> * extras/lupdate/translation_file.py: Always use POSIX line endings in the .ts file. [c7f2160e2cf7] <6.1-maint> * NEWS, extras/lupdate/python_source.py: pylupdate6 now handles PEP 263 embedded source encodings in .py files. [b42c29091f7a] <6.1-maint> 2021-05-24 Phil Thompson * NEWS, extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py: Added the --exclude command line option to pylupdate6 and the corresponding Python API. [4b85ca61b80f] <6.1-maint> 2021-05-21 Phil Thompson * qpy/QtCore/qpycore_qmap.sip: Completed the full implementation of the QMultiMap mapped type. [f2ea0ac13dfe] <6.1-maint> * NEWS, PyQt6.msp: Fixed the conversion of QHostAddress.SpecialAddress. [e16e11b73278] <6.1-maint> 2021-05-20 Phil Thompson * NEWS, PyQt6.msp: Fixed the conversion of bytes objects with embedded zeros to QByteArray. [0d9a294fd927] <6.1-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Fixed the handling of char* in signal and slot signatures. [82d5a4a5e954] <6.1-maint> * qpy/QtCore/qpycore_decorators.cpp: Improved an error message. [00929c4e1a2a] <6.1-maint> 2021-05-17 Phil Thompson * NEWS, PyQt6.msp: Restored the QtCore.QXmlStreamAttributes class from PyQt5. [a9c3a332ca56] <6.1-maint> 2021-05-14 Phil Thompson * NEWS, PyQt6.msp: Added the missing QtQml.QQmlExtensionPlugin class. [e55eb8b00533] <6.1-maint> 2021-05-07 Phil Thompson * .hgtags: Added tag 6.1.0 for changeset 596ddcf79bcb [8694eb36e6e3] 2021-05-06 Phil Thompson * PyQt6.msp: Added support for QJSPrimitiveValue etc. [596ddcf79bcb] [6.1.0] * NEWS, PyQt6.msp, mksccode/QtNetwork.versions: Added support for QNetworkInformation. [fc63e614aaaf] 2021-05-01 Phil Thompson * NEWS, PyQt6.msp: Updated for Qt v6.1.0rc2. [2b64a149a6ac] 2021-04-26 Phil Thompson * NEWS, PyQt6.msp: Added the missing QLayout.setAlignment() overload. [e49adf63dc0e] 2021-04-25 Phil Thompson * NEWS, PyQt6.msp: Fixed __rmul__ for QSize and QSizeF. [d9cfdf83c8f5] * qpy/QtCore/qpycore_chimera.cpp: Fixed the handling of QFlag properties. [6f61dacb0579] 2021-04-24 Phil Thompson * PyQt6.msp: Updated for Qt v6.1.0rc. [51097cc1d2c8] * NEWS, qpy/QtCore/qflags.sip: Fixed the conversion of QFlags. [9f0d75e7e5dd] 2021-04-22 Phil Thompson * NEWS, PyQt6.msp: Fixed the automatic conversion of a QEasingCurve.Type to a QEasingCurve. [db75ac715a51] 2021-04-21 Phil Thompson * PyQt6.msp: Fixed the base type of Qt.WindowFlag. [9a82622d34d3] 2021-04-19 Phil Thompson * PyQt6.msp: Allow QEvent and QChildEvent to be created using an int event type. [590701bb226e] 2021-04-17 Phil Thompson * PyQt6.msp: Added the resource provider support for QTextDocument. [bdbf71443638] * PyQt6.msp: Implemented the resource provider support for QLabel. [ce14b46f9be1] 2021-04-16 Phil Thompson * extras/designer/pluginloader.cpp, extras/qmlscene/pluginloader.cpp: Fixes for the plugin loaders. [fd3365056f64] * PyQt6.msp, qpy/QtNetwork/qpynetwork_qlist.sip: Completed the QtNetwork changes for Qt v6.1. [78306f7b92f3] * NEWS, PyQt6.msp, qpy/QtCore/qpycore_qlist.sip: Updated QColorSpec for Qt v6.1. [102dcde6cb12] 2021-04-10 Phil Thompson * PyQt6.msp: First pass through Qt v6.1. [f953fc79b5e5] * NEWS, PyQt6.msp: Added a base version. [8e4326d7bcf4] * DevelopersNotes.txt: The developer notes are no longer required. [d39c4c8a1065] 2021-04-05 Phil Thompson * unsupported/PyQt6-Unsupported.msp: Another forward port for QtWebEngine from PyQt5. [5216e3e10fad] * unsupported/PyQt6-Unsupported.msp: Forward ported the latest QtWebEngine changes from PyQt5. [db5459a18a78] 2021-03-31 Phil Thompson * qpy/QtDataVisualization/qpydatavisualization_qlist.sip: Removed the last vestiges of QtDataVisualization. [ef3513699255] * PyQt6.msp: Fixed the base type of Qt.Key. [45ed8f417097] 2021-03-30 Phil Thompson * NEWS, PyQt6.msp: Allow an integer ARGB value to be used whenever a QColor is expected. [3534999634cd] * unsupported/PyQt6-Unsupported.msp: Tidied up the "unsupported" project. [673cd94e1f26] * test/misc/test_pickle.py: Fixed the unit tests for the renamed flags. [a6069cc88f20] * unsupported/PyQt6-Charts/NEWS, unsupported/PyQt6-Charts/README, unsupported/PyQt6-Charts/mksccode/QtCharts.versions, unsupported/PyQt6-Charts/pyproject.toml, unsupported/PyQt6-DataVisualization/NEWS, unsupported/PyQt6-DataVisualization/README, unsupported/PyQt6-DataVi sualization/mksccode/QtDataVisualization.versions, unsupported/PyQt6-DataVisualization/pyproject.toml, unsupported/PyQt6-Purchasing/pyproject.toml, unsupported/PyQt6-Unsupported.msp, unsupported/PyQt6-WebEngine/pyproject.toml: Removed PyQt6-Charts and PyQt6-DataVisualization "unsupported" projects. [8d1a612af2a0] 2021-03-21 Phil Thompson * NEWS: Updated the NEWS file. [b6c90242cc6a] * PyQt6.msp, examples/designer/calculatorform/ui_calculatorform.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/desktop/screenshot.py, examples/dialogs/configdialog/configdialog.py, examples/dialogs/extension.py, examples/dialogs/findfiles.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/puzzle/puzzle.py, examples/quick/tutorials/exte nding/chapter1-basics/chapter1-basics.py, examples/quick/tutorials/e xtending/chapter2-methods/chapter2-methods.py, examples/quick/tutori als/extending/chapter3-bindings/chapter3-bindings.py, examples/quick /tutorials/extending/chapter4-customPropertyTypes/chapter4-customPro pertyTypes.py, examples/quick/tutorials/extending/chapter5-listprope rties/chapter5-listproperties.py, examples/quick/tutorials/extending /chapter6-plugins/Charts/pieslice.py, extras/uic/enum_map.py, extras/uic/uiparser.py: Removed all the renaming of flag based enums so that they use the enum name. [ceddf66fcfeb] * Merged the 6.0-maint branch. [3921624a6c57] 2021-03-10 Phil Thompson * NEWS, extras/uic/enum_map.py: Fixed pyuic's handling of the QLayout.SizeConstraint enum. [0fc1a8dd2534] <6.0-maint> 2021-03-05 Phil Thompson * .hgtags: Added tag 6.0.3 for changeset b53bfff704f6 [1c8e346871e4] <6.0-maint> * NEWS: Released as v6.0.3. [b53bfff704f6] [6.0.3] <6.0-maint> * qpy/QtCore/qpycore_qt_conf.cpp: Fixed the embedded conf file. [4a33096c52bc] <6.0-maint> 2021-03-04 Phil Thompson * project.py: Fixed the Qt subdirectory in __init__.py. [ae45dbef9d89] <6.0-maint> 2021-03-02 Phil Thompson * extras/uic/Compiler/qtproxies.py: Fixed QAction and QActionGroup in pyuic. [44ab6ba3f031] <6.0-maint> * NEWS: Updated the NEWS file. [9512b5ae9fa6] <6.0-maint> * PyQt6.msp: Fixed the base type of QDialog.DialogCode. [4b95c1e2881e] <6.0-maint> 2021-02-27 Phil Thompson * pyproject.toml: Fixed the project dependencies. [05b9aa1414bd] <6.0-maint> 2021-02-26 Phil Thompson * PyQt6.msp: Changed the base type of QMessageBox.StandardButtons so that exec() can return a button as an int. [fc6309f743ac] <6.0-maint> 2021-02-25 Phil Thompson * extras/uic/uiparser.py: Fixed the handling of DockWidgetAreas in pyuic. [cc8eb5b0e586] <6.0-maint> 2021-02-22 Phil Thompson * .hgtags: Added tag 6.0.2 for changeset 79c47417a960 [d3c2ea0144c1] <6.0-maint> * NEWS: Released as v6.0.2. [79c47417a960] [6.0.2] <6.0-maint> * NEWS: Updated the NEWS file. [54dfec551415] <6.0-maint> 2021-02-21 Phil Thompson * extras/dbus/dbus.cpp: Fixed a compile error in the Python-dbus support. [f06de706de94] <6.0-maint> 2021-02-15 Phil Thompson * project.py, pyproject.toml: Rely on PyQt-builder v1.9 to set the minimum glibc and macOS versions. [14c3445834d0] <6.0-maint> * PyQt6.msp: Fixed a number of potential deadlocks in QSettings and QLibraryInfo.path(). [f47905c60c0a] <6.0-maint> 2021-02-13 Phil Thompson * PyQt6.msp: Removed the internal QQmlExtensionPlugin class. [3a0a1e415b25] <6.0-maint> * PyQt6.msp: Removed the internal qIsGray(). [4c94569c3333] <6.0-maint> 2021-02-12 Phil Thompson * PyQt6.msp: Removed the internal qSharedBuild(). [398c68ef66af] <6.0-maint> * PyQt6.msp: Removed the internal qIsNull(). [a989cc9346ad] <6.0-maint> * PyQt6.msp: Removed the internal qErrnoWarning(). [1bd5053693fe] <6.0-maint> * PyQt6.msp: Added the missing QTextStream-related functions defined in the Qt namespace. [7c1bcb927b2d] <6.0-maint> * PyQt6.msp: Removed QT_TR_NOOP_UTF8. [543b1cbdd133] <6.0-maint> 2021-02-10 Phil Thompson * PyQt6.msp: Restored the PyQt5 behaviour of QIODevice.readLine(). [a80b9cb45289] <6.0-maint> 2021-02-09 Phil Thompson * extras/uic/enum_map.py: Fixed the handling of QSizePolicy by uic.loadUi(). [50ec168b7758] <6.0-maint> 2021-02-08 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Fixed the parsing of pointers to non-QObject types. [f6e1ff4d1b58] <6.0-maint> 2021-02-05 Phil Thompson * .hgtags: Added tag 6.0.1 for changeset ccd0fa4fc522 [3f2f1fb12ef0] <6.0-maint> * NEWS: Released as v6.0.1. [ccd0fa4fc522] [6.0.1] <6.0-maint> * extras/designer/pluginloader.cpp, extras/qmlscene/pluginloader.cpp: Fixed build problems on Windows. [4ffbc71fc950] <6.0-maint> 2021-02-04 Phil Thompson * NEWS: Updated the NEWS file. [9801e803f723] <6.0-maint> * NEWS: Updated the NEWS file. [ae8da9d65e30] <6.0-maint> * examples/draganddrop/delayedencoding/delayedencoding.py, examples/draganddrop/delayedencoding/images/drag.png, examples/draganddrop/delayedencoding/images/example.svg, examples/draganddrop/draggableicons/draggableicons.py, examples/draganddrop/draggableicons/images/boat.png, examples/draganddrop/draggableicons/images/car.png, examples/draganddrop/draggableicons/images/house.png, examples/draganddrop/draggabletext/draggabletext.py, examples/draganddrop/draggabletext/words.txt, examples/draganddrop/dropsite.py, examples/draganddrop/fridgemagnets/fridgemagnets.py, examples/draganddrop/fridgemagnets/words.txt, examples/draganddrop/puzzle/example.jpg, examples/draganddrop/puzzle/puzzle.py: Ported the drag'n'drop examples. [20e0d10de086] <6.0-maint> * PyQt6.msp: Fixed the type of Qt.TextFlag. [2dfa82fa2f22] <6.0-maint> 2021-02-01 Phil Thompson * examples/dialogs/classwizard/classwizard.py, examples/dialogs/classwizard/images/background.png, examples/dialogs/classwizard/images/banner.png, examples/dialogs/classwizard/images/logo1.png, examples/dialogs/classwizard/images/logo2.png, examples/dialogs/classwizard/images/logo3.png, examples/dialogs/classwizard/images/watermark1.png, examples/dialogs/classwizard/images/watermark2.png, examples/dialogs/configdialog/configdialog.py, examples/dialogs/configdialog/images/config.png, examples/dialogs/configdialog/images/query.png, examples/dialogs/configdialog/images/update.png, examples/dialogs/extension.py, examples/dialogs/findfiles.py, examples/dialogs/standarddialogs.py, examples/dialogs/tabdialog.py, examples/dialogs/trivialwizard.py: Ported the dialogs examples. [469e6900995c] <6.0-maint> * PyQt6.msp: Fix the types of the Shape and Shadow enums of QFrame. [2cd6dd0666f3] <6.0-maint> * examples/desktop/screenshot.py, examples/desktop/systray/images/bad.png, examples/desktop/systray/images/heart.png, examples/desktop/systray/images/trash.png, examples/desktop/systray/systray.py: Ported the desktop examples. [f416d1380d4d] <6.0-maint> 2021-01-29 Phil Thompson * examples/quick/scenegraph/customgeometry/customgeometry.py, examples /quick/tutorials/extending/chapter1-basics/chapter1-basics.py, examp les/quick/tutorials/extending/chapter2-methods/chapter2-methods.py, e xamples/quick/tutorials/extending/chapter3-bindings/chapter3-binding s.py, examples/quick/tutorials/extending/chapter4-customPropertyType s/chapter4-customPropertyTypes.py, examples/quick/tutorials/extendin g/chapter5-listproperties/chapter5-listproperties.py, examples/quick /tutorials/extending/chapter6-plugins/Charts/chartsplugin.py: Don't specify the QML name unncessarily in the QtQuick examples. [0bc143ed9ed6] <6.0-maint> 2021-01-26 Phil Thompson * extras/qmlscene/pluginloader.cpp: Ported Designer plugin changes to the qmlscene plugin. [8391d88f9c70] <6.0-maint> * extras/designer/pluginloader.cpp: Remove redundant code from the Designer plugin. [f5f241310d79] <6.0-maint> * extras/designer/pluginloader.cpp: The Designer plugin now handles being run from a venv. [5695e5c98db4] <6.0-maint> * examples/designer/calculatorform/calculatorform.py, examples/designer/calculatorform/calculatorform.ui, examples/designer/calculatorform/ui_calculatorform.py, examples/designer/plugins/plugins.py, examples/designer/plugins/python/analogclockplugin.py, examples/designer/plugins/python/bubbleswidgetplugin.py, examples/designer/plugins/python/counterlabelplugin.py, examples/designer/plugins/python/datetimeeditplugin.py, examples/designer/plugins/python/helloglwidgetplugin.py, examples/designer/plugins/python/multipagewidgetplugin.py, examples/designer/plugins/python/polygonwidgetplugin.py, examples/designer/plugins/python/pydemoplugin.py, examples/designer/plugins/python/pythonconsoleplugin.py, examples/designer/plugins/widgets/analogclock.py, examples/designer/plugins/widgets/bubbleswidget.py, examples/designer/plugins/widgets/counterlabel.py, examples/designer/plugins/widgets/datetimeedit.py, examples/designer/plugins/widgets/helloglwidget.py, examples/designer/plugins/widgets/multipagewidget.py, examples/designer/plugins/widgets/polygonwidget.py, examples/designer/plugins/widgets/pydemo.py, examples/designer/plugins/widgets/pythonconsolewidget.py: Added the designer examples. [7c145449f6c2] <6.0-maint> * PyQt6.msp: Fixed the QFontMetrics and QFontMetricsF ctors. [62828ed053a6] <6.0-maint> 2021-01-24 Phil Thompson * examples/quick/animation/animation.py, examples/quick/animation/animation.qml, examples/quick/animation/basics/color-animation.qml, examples/quick/animation/basics/images/face-smile.png, examples/quick/animation/basics/images/moon.png, examples/quick/animation/basics/images/shadow.png, examples/quick/animation/basics/images/star.png, examples/quick/animation/basics/images/sun.png, examples/quick/animation/basics/property-animation.qml, examples/quick/animation/behaviors/SideRect.qml, examples/quick/animation/behaviors/behavior-example.qml, examples/quick/animation/behaviors/tvtennis.qml, examples/quick/animation/behaviors/wigglytext.qml, examples/quick/animation/easing/easing.qml, examples/quick/animation/pathanimation/pathanimation.qml, examples/quick/animation/pathinterpolator/pathinterpolator.qml, examples/quick/animation/states/qt-logo.png, examples/quick/animation/states/states.qml, examples/quick/animation/states/transitions.qml, examples/quick/canvas/bezierCurve/bezierCurve.qml, examples/quick/canvas/canvas.py, examples/quick/canvas/canvas.qml, examples/quick/canvas/clip/clip.qml, examples/quick/canvas/contents/Button.qml, examples/quick/canvas/contents/ScrollBar.qml, examples/quick/canvas/contents/Slider.qml, examples/quick/canvas/contents/TitleBar.qml, examples/quick/canvas/contents/ToolBar.qml, examples/quick/canvas/contents/images/button-pressed.png, examples/quick/canvas/contents/images/button.png, examples/quick/canvas/contents/images/default.svg, examples/quick/canvas/contents/images/gloss.png, examples/quick/canvas/contents/images/lineedit.png, examples/quick/canvas/contents/images/lineedit.sci, examples/quick/canvas/contents/images/quit.png, examples/quick/canvas/contents/images/stripes.png, examples/quick/canvas/contents/images/titlebar.png, examples/quick/canvas/contents/images/titlebar.sci, examples/quick/canvas/contents/images/toolbutton.png, examples/quick/canvas/contents/images/toolbutton.sci, examples/quick/canvas/contents/qt-logo.png, examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml, examples/quick/canvas/roundedrect/roundedrect.qml, examples/quick/canvas/smile/smile.qml, examples/quick/canvas/squircle/squircle.png, examples/quick/canvas/squircle/squircle.qml, examples/quick/canvas/tiger/tiger.js, examples/quick/canvas/tiger/tiger.qml, examples/quick/models/abstractitemmodel/abstractitemmodel.py, examples/quick/models/abstractitemmodel/view.qml, examples/quick/models/objectlistmodel/objectlistmodel.py, examples/quick/models/objectlistmodel/view.qml, examples/quick/models/stringlistmodel/stringlistmodel.py, examples/quick/models/stringlistmodel/view.qml, examples/quick/scenegraph/customgeometry/customgeometry.py, examples/quick/scenegraph/customgeometry/main.qml, examples/quick/shared/Button.qml, examples/quick/shared/LauncherList.qml, examples/quick/shared/SimpleLauncherDelegate.qml, examples/quick/shared/images/back.png, examples/quick/shared/images/next.png, examples/quick/tutorials/extending/chapter1-basics/app.qml, examples /quick/tutorials/extending/chapter1-basics/chapter1-basics.py, examples/quick/tutorials/extending/chapter2-methods/app.qml, example s/quick/tutorials/extending/chapter2-methods/chapter2-methods.py, examples/quick/tutorials/extending/chapter3-bindings/app.qml, exampl es/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py, examples/quick/tutorials/extending/chapter4-customPropertyTypes/app. qml, examples/quick/tutorials/extending/chapter4-customPropertyTypes /chapter4-customPropertyTypes.py, examples/quick/tutorials/extending/chapter5-listproperties/app.qml, e xamples/quick/tutorials/extending/chapter5-listproperties/chapter5-l istproperties.py, examples/quick/tutorials/extending/chapter6-plugin s/Charts/chartsplugin.py, examples/quick/tutorials/extending/chapter 6-plugins/Charts/piechart.py, examples/quick/tutorials/extending/cha pter6-plugins/Charts/pieslice.py, examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir, examples/quick/tutorials/extending/chapter6-plugins/app.qml: Ported the QtQuick examples from PyQt5. [94dd3c5f9a15] <6.0-maint> * PyQt6.msp: Fixed the '*' operator between QPoint and QPointF and floats. [6ac2e72a68a4] <6.0-maint> * PyQt6.msp: Fixed the QSGGeometry.DrawingMode enum. [8860f30c90ba] <6.0-maint> 2021-01-21 Phil Thompson * qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtDataVisualization/qpydatavisualization_qlist.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtOpenGL/qpyopengl_qlist.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtWidgets/qpywidgets_qlist.sip: iUpdates all of the QList mapped type convertors to ignore bytes objects (as they currently ignore unicode objects). [c84b4dbb8259] <6.0-maint> * examples/richtext/textobject/heart.svg, examples/richtext/textobject/textobject.py: Ported the textobject.py example. [f9c710c2ab38] <6.0-maint> * PyQt6.msp: Fix the QTextFormat enums that allow the user to define additional values. [98f2f67e93b2] <6.0-maint> 2021-01-17 Phil Thompson * README, pyproject.toml, unsupported/PyQt6-Charts/README, unsupported/PyQt6-Charts/pyproject.toml, unsupported/PyQt6-DataVisualization/README, unsupported/PyQt6-DataVisualization/pyproject.toml, unsupported/PyQt6-Purchasing/README, unsupported/PyQt6-Purchasing/pyproject.toml, unsupported/PyQt6-WebEngine/README, unsupported/PyQt6-WebEngine/pyproject.toml: Wheels depend on an external Qt wheel rather than bundle Qt. [99e49fea1bd5] <6.0-maint> 2021-01-16 Phil Thompson * PyQt6.msp: QMetaType.name() now returns a bytes object to be consistent with QMetaType.fromName(). [aff2c62bfdd1] <6.0-maint> * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_types.cpp, test/classes/test_QVariant.py, test/metaobject/test_pyqtproperty.py: It is no longer necessary to fudge the meta-type of wrapped enums as they all have their own Qt meta-type id. [c87603357133] <6.0-maint> * qpy/QtCore/qpycore_chimera.cpp: Fixed the type parsing of enum properties. [c840be8e65cf] <6.0-maint> 2021-01-13 Phil Thompson * PyQt6.msp: Fixed the QKeySequence() ctor and type convertor. [e116b55c87bf] <6.0-maint> * PyQt6.msp: Reverted the behaviour of the QImage ctors to that of PyQt5 so that unnecessary restrictions (eg. the number of dimensions) were not imposed. [3ebeab7b321e] <6.0-maint> * NEWS, PyQt6.msp: Added QSocketNotifier. [383f828d5269] <6.0-maint> 2021-01-10 Phil Thompson * extras/lupdate/pylupdate.py: Fixed a pylupdate regression. [ae3cac2d629c] <6.0-maint> * extras/lupdate/pylupdate.py, extras/uic/pyuic.py: Further tweaks to the pyuic and pylupdate main() functions. [c2e09795240a] <6.0-maint> * extras/lupdate/pylupdate.py: Fix the return code handling of pylupdate. [6c29337a0644] <6.0-maint> * extras/uic/pyuic.py: Make sure the pyuic return code is retruned properly. [ac6152d35c63] <6.0-maint> 2021-01-09 Phil Thompson * extras/uic/uiparser.py: Complete the pyuic fixes for QActionGroup. [f721d31c0e63] <6.0-maint> 2021-01-08 Phil Thompson * PyQt6.msp: Restored the readString() and writeString() methods of QDataStream. Fixed QDataStream.writeBytes() and added support for writing any object that implements the buffer protocol. [6ad6a175283f] <6.0-maint> * PyQt6.msp: QDataStream.Version is now an IntEnum because QDataStrean.setVersion() has an int argument. [8ab112f4dd64] <6.0-maint> * PyQt6.msp: QEvent.type() now returns an int and QEvent.Type is now sub-classed from IntEnum. These changes are required to a) cope with internal event types and b) user defined event types. [dc39bbd4c986] <6.0-maint> * extras/uic/icon_cache.py: Fixed pyuic handling of QIcon. [f375f1cedb46] <6.0-maint> 2021-01-06 Phil Thompson * PyQt6.msp: Don't define the OpenGL enums in QtQuick and use the provided alternatives in the handwritten code. [222b4dc0f424] <6.0-maint> 2021-01-05 Phil Thompson * extras/uic/uiparser.py, rb-product.toml: Fix QActionGroup in pyuic. [0e778d0bffe9] <6.0-maint> 2021-01-04 Phil Thompson * .hgtags: Added tag 6.0.0 for changeset f34d70fe36f2 [771d5d2132e3] * NEWS: Released as v6.0.0. [f34d70fe36f2] [6.0.0] * pyproject.toml: Require Python v3.6.1 because PyUnicode_GetLength() is missing from the limited API in v3.6.0. [3c657f034069] * NEWS: Updated the NEWS file. [c5f56d16fdcb] 2021-01-03 Phil Thompson * PyQt6.msp: Fixed a type hint typo. [7457f9bec24b] * PyQt6.msp: More type hint improvments. [a44b127d851f] * PyQt6.msp: No longer allow a QPoint when a QPointF is expected. [29784d4497a7] * PyQt6.msp: Reorder a couple of methods to remove a mypy error. [036ef03abd5a] * PyQt6.msp, qpy/QtQml/qmlregistertype.sip: More type hint fixes. [d467a5493bf2] * PyQt6.msp: Fixed a couple of type hints. [22bd87864223] 2021-01-02 Phil Thompson * PyQt6.msp, qpy/QtQml/qmlregistertype.sip: More type hint fixes. [eb64d6fcb08e] * PyQt6.msp, qpy/QtQml/qmlregistertype.sip: Fixed many type hints. [af5f13a27189] 2020-12-31 Phil Thompson * DevelopersNotes.txt: Added DevelopersNotes.txt. [a8034a952af2] * NEWS, PyQt6.msp, README, config-tests/cfgtest_QtCore.cpp, config- tests/cfgtest_QtGui.cpp, config-tests/cfgtest_QtNetwork.cpp, config- tests/cfgtest_QtPrintSupport.cpp, misc/__init__.py, misc/license.dat.commercial, misc/license.dat.internal, misc/pyqt- commercial.sip, misc/pyqt-gpl.sip, misc/pyqt-internal.sip, mksccode/QtCore.versions, mksccode/QtGui.versions, mksccode/QtNetwork.versions, mksccode/QtPrintSupport.versions, project.py, projects/PyQt6-Charts/NEWS, projects/PyQt6-Charts/README, projects/PyQt6-Charts/mksccode/QtCharts.versions, projects/PyQt6-Charts/pyproject.toml, projects/PyQt6-DataVisualization/NEWS, projects/PyQt6-DataVisualization/README, projects/PyQt6-DataVisualiz ation/mksccode/QtDataVisualization.versions, projects/PyQt6-DataVisualization/pyproject.toml, projects/PyQt6-Purchasing/NEWS, projects/PyQt6-Purchasing/README, projects/PyQt6-Purchasing/pyproject.toml, projects/PyQt6-WebEngine/NEWS, projects/PyQt6-WebEngine/README, projects/PyQt6-WebEngine/pyproject.toml, projects/PyQt6/Modules, projects/PyQt6/NEWS, projects/PyQt6/QtCore.versions, projects/PyQt6/QtGui.versions, projects/PyQt6/QtNetwork.versions, projects/PyQt6/QtPrintSupport.versions, projects/PyQt6/README, projects/PyQt6/__init__.py, projects/PyQt6/config- tests/cfgtest_QtCore.cpp, projects/PyQt6/config- tests/cfgtest_QtGui.cpp, projects/PyQt6/config- tests/cfgtest_QtNetwork.cpp, projects/PyQt6/config- tests/cfgtest_QtPrintSupport.cpp, projects/PyQt6/license.dat.commercial, projects/PyQt6/license.dat.internal, projects/PyQt6/project.py, projects/PyQt6/pyproject.toml, projects/PyQt6/pyqt-commercial.sip, projects/PyQt6/pyqt-gpl.sip, projects/PyQt6/pyqt-internal.sip, pyproject.toml, unsupported/PyQt6-Charts/NEWS, unsupported/PyQt6-Charts/README, unsupported/PyQt6-Charts/mksccode/QtCharts.versions, unsupported/PyQt6-Charts/pyproject.toml, unsupported/PyQt6-DataVisualization/NEWS, unsupported/PyQt6-DataVisualization/README, unsupported/PyQt6-DataVi sualization/mksccode/QtDataVisualization.versions, unsupported/PyQt6-DataVisualization/pyproject.toml, unsupported/PyQt6-Purchasing/NEWS, unsupported/PyQt6-Purchasing/README, unsupported/PyQt6-Purchasing/pyproject.toml, unsupported/PyQt6-Unsupported.msp, unsupported/PyQt6-WebEngine/NEWS, unsupported/PyQt6-WebEngine/README, unsupported/PyQt6-WebEngine/pyproject.toml: Restructued the repo layout now that we know the long term project structure. [ed58c869cfac] * PyQt6.msp: Qt.ItemDataRole is now int based. [1d254e41b191] 2020-12-30 Phil Thompson * projects/PyQt6-Charts/Modules, projects/PyQt6-Charts/mksccode/QtCharts.versions, projects/PyQt6-DataVisualization/Modules, projects/PyQt6-DataVisuali zation/mksccode/QtDataVisualization.versions, projects/PyQt6-Purchasing/Modules, projects/PyQt6-WebEngine/Modules: Tidy ups of the (as yet unsupported) sub-projects. [192a82c99649] * PyQt6.msp: The charts module is QtCharts in PyQt6. [957c7ea5a4d9] * PyQt6.msp, projects/PyQt6-3D/Modules, projects/PyQt6-3D/NEWS, projects/PyQt6-3D/README, projects/PyQt6-3D/pyproject.toml, qpy/Qt3DCore/qsharedpointer.sip, qpy/Qt3DRender/qvector.sip: Removed the Qt3D modules as they now have their own product. [12224511c465] 2020-12-29 Phil Thompson * tools/adlib.py: Removed adlib.py as the additional libraries can easily be built with qmake. [df5c3ac7b7be] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Removed QtNetworkAuth as it is now a separate product. [f5385c7df11e] * projects/PyQt6-3D/pyproject.toml, projects/PyQt6-Charts/pyproject.toml, projects/PyQt6-DataVisualization/pyproject.toml, projects/PyQt6-Purchasing/pyproject.toml, projects/PyQt6-WebEngine/pyproject.toml: Fixed typos in the sub-project pyproject.toml files. [222ea0e173ef] * projects/PyQt6-3D/pyproject.toml, projects/PyQt6-Charts/pyproject.toml, projects/PyQt6-DataVisualization/pyproject.toml, projects/PyQt6-Purchasing/pyproject.toml, projects/PyQt6-WebEngine/pyproject.toml: Specify the minimum GLIBC and macOS versions for the sub-projects. [06a5b4b15797] * projects/PyQt6-3D/pyproject.toml, projects/PyQt6-Charts/pyproject.toml, projects/PyQt6-DataVisualization/pyproject.toml, projects/PyQt6-Purchasing/pyproject.toml, projects/PyQt6-WebEngine/pyproject.toml: Hardcode the PyQt6 dependency as we are not going to synch minor version numbers. [dc0923611afc] * projects/PyQt3D6/Modules, projects/PyQt3D6/NEWS, projects/PyQt3D6/README, projects/PyQt3D6/pyproject.toml, projects/PyQt6-3D/Modules, projects/PyQt6-3D/NEWS, projects/PyQt6-3D/README, projects/PyQt6-3D/pyproject.toml, projects/PyQt6-Charts/Modules, projects/PyQt6-Charts/NEWS, projects/PyQt6-Charts/README, projects/PyQt6-Charts/pyproject.toml, projects/PyQt6-DataVisualization/Modules, projects/PyQt6-DataVisualization/NEWS, projects/PyQt6-DataVisualization/README, projects/PyQt6-DataVisualization/pyproject.toml, projects/PyQt6-Purchasing/Modules, projects/PyQt6-Purchasing/NEWS, projects/PyQt6-Purchasing/README, projects/PyQt6-Purchasing/pyproject.toml, projects/PyQt6-WebEngine/Modules, projects/PyQt6-WebEngine/NEWS, projects/PyQt6-WebEngine/README, projects/PyQt6-WebEngine/pyproject.toml, projects/PyQtChart6/Modules, projects/PyQtChart6/NEWS, projects/PyQtChart6/README, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/Modules, projects/PyQtDataVisualization6/NEWS, projects/PyQtDataVisualization6/README, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/Modules, projects/PyQtPurchasing6/NEWS, projects/PyQtPurchasing6/README, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/Modules, projects/PyQtWebEngine6/NEWS, projects/PyQtWebEngine6/README, projects/PyQtWebEngine6/pyproject.toml: Renamed the (as yet unsupported) additional library projects according to the new naming convention. [179ae818b445] 2020-12-28 Phil Thompson * PyQt6.msp: Fixed the QByteArray type hint. [66aecd4316bd] 2020-12-27 Phil Thompson * tools/adlib.py: Fixed a missing import in adlib.py. [b7e67504f12b] * tools/adlib.py: Windows fixes for adlib.py. [caf0ef3e0549] * tools/adlib.py: Don't rely on conan being on PATH. [caf3390c65fd] * tools/adlib.py: Added the adlib.py tool for handling the qtimageformats additional library. [04543ec809d3] * tools/mksccode.py: Updated the argument parser of the mksccode.py tool. [eaf5788bdfba] 2020-12-26 Phil Thompson * extras/lupdate/python_source.py: Fixed the disambiguation for NOOP translations. [e7c5a1fae5eb] * extras/lupdate/python_source.py, extras/lupdate/translation_file.py: Fix the handling of disambiguation comments. [0081ddee87fc] 2020-12-25 Phil Thompson * extras/lupdate/translation_file.py: Don't refer to duplicates of new messages as existing messages. [31c947366e1b] * extras/lupdate/translation_file.py: Improved the layout of the pylupdate summary. [6547208726b2] * extras/lupdate/designer_source.py: Properly handle 'string' tag in a .ui file. [993587caab3f] 2020-12-24 Phil Thompson * PyQt6.msp: Disable default ctors for all QtGui events. [aafee11e4e11] * PyQt6.msp: QtCore QEvent sub-classes have no default ctors. [78c8029521bd] * PyQt6.msp: More readData() and writeData() fixes. [5d5e55086619] * PyQt6.msp: Fixed readData() and writeData() handwritten code. [a9517b9e3b93] * PyQt6.msp: Remove some PyQt5 Windows-specific methods. [5d153a6d8ca8] * PyQt6.msp: Use Py_hash_t and Py_ssize_t where required. [349f062273ae] 2020-12-23 Phil Thompson * extras/lupdate/translation_file.py: Fix pylupdate when comparing messages. Indent the .ts file XML when using Python v3.9 and later. [9bc99ae6c985] * extras/lupdate/designer_source.py, extras/lupdate/python_source.py: Ignore empty strings in .py and .ui files. [ca36f83cc200] 2020-12-22 Phil Thompson * extras/lupdate/python_source.py: pylupdate fixes for handling the third argument to tr(). [2cb451473d69] 2020-12-21 Phil Thompson * projects/PyQt3D6/pyproject.toml, projects/PyQt6/pyproject.toml, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/pyproject.toml: PyQt-builder v1.7 will be required. [52b5da7e6bc5] * test/metaobject/test_pyqtproperty.py: Restored the test of using the property system for enums now that SIP generates the necessary calls to qMetaTypeId(). [c186ae30acf7] 2020-12-20 Phil Thompson * test/metaobject/test_pyqtproperty.py, test/metaobject/test_qvariantmap.py: Fixed the outstanding tests. [ef8f637e7e04] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, test/classes/test_QVariant.py: Fixed the conversions of QVariantMap, QVariantList etc. to Python. [4ae02d5f28c7] 2020-12-19 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Refactored the mapped type convertors. [6aed0cfc99eb] * PyQt6.msp, qpy/QtCore/qpycore_qvector.sip: Removed all uses of QVector. [0c7ecfe2445b] * qpy/QtCore/qpycore_chimera.cpp, test/classes/test_QVariant.py: Fixed the convert of dict to QVariant with a non-string key. [05f3e9d38191] * extras/uic/enum_map.py, extras/uic/properties.py, test/pyuic/QWidget/Widget03.ui: More pyuic fixes. [1e6a643a923f] * PyQt6.msp: Qt::Alignment has to be IntFlag because the various setTextAlignment() methods expect an int argument. [a25cba5fd69b] * PyQt6.msp: QFont.StyleStrategy contains flags. [b87c02c16962] * PyQt6.msp: QFont.setWeight() will now accept an int and a QFont.Weight. QFont.weight() returns an int. [1b235c631f79] * extras/uic/enum_map.py, extras/uic/properties.py, test/pyuic/test_pyuic.py: pyuic fixes. [70f4487e467a] 2020-12-18 Phil Thompson * test/classes/test_QVariant.py, test/dbus/test_multibus.py, test/mapped_types/test_QList.py, test/metaobject/test_pyqtproperty.py, test/metaobject/test_qvariantmap.py, test/misc/test_repr.py, test/pyuic/test_pyuic.py: Initial pass through the unit tests. [b462ad16d2dc] * projects/PyQt6/project.py: Specify the minimum versions of glibc and macOS. [d3934fa19d77] * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_register_type.cpp: Removed some code needed by (unsupported) versions of GCC. [303bea01c4c8] * qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp: Implemented qmlRegisterAnonymousType() and qmlRegisterSingletonInstance(). [d4822fe422bd] * qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_type.cpp: Fixed support for attached properties. [7132f63b9927] * examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/valuesource.py: QMl example fixes. [9e9c4e5ce94d] 2020-12-17 Phil Thompson * examples/qml/referenceexamples/default.py: Fixed the default.py QML example. [7b737e4d1cdb] * qpy/QtQml/qpyqml_post_init.cpp: Fix QML list properties. [9d9536278e60] * qpy/QtQml/qpyqml_post_init.cpp: Removed a legacy cast. [cc23f3eb651a] 2020-12-16 Phil Thompson * extras/lupdate/python_source.py: Gracefully handle syntax errors in Python source files. [7edaf6316381] * extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py, extras/lupdate/translation_file.py: Existing translations will be used where possible. A summary (suppressable using the --no-summary option) is displayed. [1c3fb51b4aa3] * extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py, extras/lupdate/translation_file.py: Added support for the --no-obsolete option and obsolete messages. [efd4f9451f59] 2020-12-14 Phil Thompson * modules/QtAndroidExtras/QtAndroidExtrasmod.sip, modules/QtAndroidExtras/qandroidjniobject.sip, modules/QtAndroidExtras/qtandroid.sip, modules/QtMacExtras/QtMacExtrasmod.sip, modules/QtMacExtras/qmacpasteboardmime.sip, modules/QtMacExtras/qmactoolbar.sip, modules/QtMacExtras/qmactoolbaritem.sip, modules/QtMacExtras/qtmac.sip, modules/QtWinExtras/QtWinExtrasmod.sip, modules/QtWinExtras/qwinfunctions.sip, modules/QtWinExtras/qwinjumplist.sip, modules/QtWinExtras/qwinjumplistcategory.sip, modules/QtWinExtras/qwinjumplistitem.sip, modules/QtWinExtras/qwintaskbarbutton.sip, modules/QtWinExtras/qwintaskbarprogress.sip, modules/QtWinExtras/qwinthumbnailtoolbar.sip, modules/QtWinExtras/qwinthumbnailtoolbutton.sip, modules/QtX11Extras/QtX11Extrasmod.sip, modules/QtX11Extras/qx11info_x11.sip, projects/PyQt6/project.py: Removed the legacy "Extras" modules. [774b4acf6f22] * qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_public_api.cpp: Don't call the QCoreApplication dtor if we didn't call the ctor. [d947284f2b92] 2020-12-11 Phil Thompson * PyQt6.msp: Updated for Qt v6.0.0. [179cebdaa175] 2020-12-09 Phil Thompson * extras/uic/enum_map.py, extras/uic/properties.py: Completed the pyuic changes. [01faaf18f852] * PyQt6.msp: Removed some internal enum members. Enums no longer have to be constrained. [13c2f924f71d] 2020-12-08 Phil Thompson * extras/uic/Compiler/qtproxies.py, extras/uic/enum_map.py, extras/uic/properties.py: pyuic fixes. [b01d8894edc7] * PyQt6.msp: Removed a couple of internal enum members. [d7873d822d39] * PyQt6.msp: Fixed creating a QColor from a GlobalColor. [63928f38b8a0] * PyQt6.msp: Fixed the creation of a QCursor from a CursorShape. [a58b5cbd3860] 2020-12-07 Phil Thompson * PyQt6.msp: Added QImage.setAlphaChannel(). [6df3e04649ef] 2020-12-05 Phil Thompson * extras/uic/properties.py: Fixed scoped types in pyuic when loading a .ui file. [c7bec57b9d88] * PyQt6.msp: Removed the QT_MAC_WANTS_LAYER workaround as it's not needed with Qt6. [ac7bd5f81f99] * extras/uic/compile_ui.py, extras/uic/enum_map.py, extras/uic/properties.py, extras/uic/uiparser.py: Initial support for fully scoped enums in pyuic. [3545be202518] * extras/uic/uiparser.py: Fixed pyuic handling of size policies. [9cbd62c0f5ec] * extras/uic/uiparser.py: pyuic fixes for form layouts. [145e473b3550] 2020-12-03 Phil Thompson * PyQt6.msp, examples/qml/referenceexamples/attached.py, examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/default.py, examples/qml/referenceexamples/grouped.py, examples/qml/referenceexamples/signal.py, examples/qml/referenceexamples/valuesource.py, qpy/QtCore/qpycore_classinfo.cpp, test/metaobject/test_qclassinfo.py: Changed the signature of pyqtClassInfo() because QML uses characters that cannot be used in a Python identifier. [19103b6b0443] * PyQt6.msp: Updated for Qt v6.0.0rc2. [71d325f6834f] 2020-12-02 Phil Thompson * examples/qml/referenceexamples/adding.py, examples/qml/referenceexamples/attached.py, examples/qml/referenceexamples/binding.py, examples/qml/referenceexamples/coercion.py, examples/qml/referenceexamples/default.py, examples/qml/referenceexamples/grouped.py, examples/qml/referenceexamples/methods.py, examples/qml/referenceexamples/properties.py, examples/qml/referenceexamples/signal.py, examples/qml/referenceexamples/valuesource.py: Added the QML examples. [9adff8784705] * qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_types.cpp, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmllistproperty.cpp: The QML registration functions now have the name as the last, and optional, argument. The default name is taken from the type being registered. [faebb54b01c6] 2020-12-01 Phil Thompson * PyQt6.msp: Fixed the fully qualified names of the sip builtin types. [f970363f81be] * PyQt6.msp: Removed the resource system hooks. [c6125be2d315] * PyQt6.msp, projects/PyQt6/config-tests/cfgtest_QtCore.cpp, projects/PyQt6/config-tests/cfgtest_QtNetwork.cpp, projects/PyQt6/config-tests/cfgtest_QtPrintSupport.cpp: Updated the feature configuration tests. [07499ea2808f] 2020-11-30 Phil Thompson * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtQuick3D and QtQuickWidgets. [24558dbbb5ba] * PyQt6.msp, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquickframebufferobject.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickview.cpp, qpy/QtQuick/qpyquickwindow.cpp: Completed QtQuick (for now). [82cd622c8b75] 2020-11-29 Phil Thompson * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py, qpy/QtCore/qbytearraylist.sip: First pass through QtQuick. [b08ce1c79954] * PyQt6.msp, extras/qmlscene/pluginloader.cpp, projects/PyQt6/Modules, projects/PyQt6/project.py, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmllistproperty.cpp: Ported QtQml. [d77190c8d22c] 2020-11-28 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_std_pair.sip, qpy/QtGui/opengl_types.sip, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_array_convertors.cpp, qpy/QtOpenGL/qpyopengl_data_cache.h, qpy/QtOpenGL/qpyopengl_std_pair.sip, qpy/QtOpenGL/qpyopengl_value_array.cpp, qpy/QtOpenGL/qpyopengl_version_functions.cpp: Completed the port of QtOpenGL. [5c4bbe555837] 2020-11-27 Phil Thompson * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/QtGui.versions, projects/PyQt6/config-tests/cfgtest_QtGui.cpp, projects/PyQt6/project.py, qpy/QtCore/qpycore_qlist.sip, qpy/QtGui/opengl_types.sip, qpy/QtOpenGL/qpyopengl_add_constants.cpp, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_array_convertors.cpp, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_data_cache.cpp, qpy/QtOpenGL/qpyopengl_data_cache.h, qpy/QtOpenGL/qpyopengl_get.cpp, qpy/QtOpenGL/qpyopengl_init.cpp, qpy/QtOpenGL/qpyopengl_qlist.sip, qpy/QtOpenGL/qpyopengl_qpair.sip, qpy/QtOpenGL/qpyopengl_qvector.sip, qpy/QtOpenGL/qpyopengl_std_pair.sip, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp, qpy/QtOpenGL/qpyopengl_value_array.cpp, qpy/QtOpenGL/qpyopengl_version_functions.cpp, tools/OpenGL/gen_opengl_constants.py: Initial pass through the port of QtOpenGL. [9758fa02a55c] 2020-11-26 Phil Thompson * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtXml. [34d6ae39f52a] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtTest. [f659109b0fd0] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtSvg. [492a7a4e2f60] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtSql. [283705efb009] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/QtCore.versions, projects/PyQt6/QtGui.versions, projects/PyQt6/QtPrintSupport.versions, projects/PyQt6/project.py, qpy/QtPrintSupport/qpyprintsupport_qlist.sip: Ported QtPrintSupport. [7200dec0095d] * PyQt6.msp: Updated for Qt v6.0.0rc. [22d7178b9d61] 2020-11-25 Phil Thompson * PyQt6.msp: Eliminated all remaining warning messages. [ffddad72bcfe] * PyQt6.msp, projects/PyQt6/project.py: Ensure that the buffer protocol can be used for all writeData() implementations. [8b67fd2bc643] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/QtNetwork.versions, projects/PyQt6/project.py: Ported QtNetwork. [4f350f4cdc7c] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtHelp. [f93cd8d1b207] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtDesigner. [3233b05fde65] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Ported QtDBus. [e1491e940d08] * PyQt6.msp, qpy/QtWidgets/qmaccocoaviewcontainer.sip: QtWidgets now builds without warnings. [44f1bc2ac21e] 2020-11-24 Phil Thompson * PyQt6.msp: Completed the porting of QtWidgets. [7b141726025e] 2020-11-23 Phil Thompson * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Work on QtWidgets. [9b3edac520d2] 2020-11-22 Phil Thompson * PyQt6.msp: QImage fixes. [f74c666a81d5] 2020-11-21 Phil Thompson * PyQt6.msp: Completed the QtGui implementation. [2d14a1a4c258] * PyQt6.msp: Added the QObject sub-class code for QtGui. [31609a1eb40f] * PyQt6.msp: Completed the QEvent support in QtGui. [959c175bdc0d] 2020-11-20 Phil Thompson * projects/PyQt6/Modules, projects/PyQt6/project.py: Don't generate .sip files for modules not yet ported. [c7cba18d2b0c] * PyQt6.msp, projects/PyQt6/Modules, projects/PyQt6/project.py: Removed the internal version-specific OpenGL modules. [45b963fea98c] * PyQt6.msp: QtGui now builds without warnings. [ab05d3ffc6af] * PyQt6.msp, projects/PyQt6/project.py, qpy/QtCore/qpycore_qlist.sip, qpy/QtGui/opengl_types.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtOpenGL/opengl_types.sip, qpy/QtOpenGL/qpyopengl_qpair.sip, qpy/QtOpenGL/qpyopengl_qvector.sip: Fixes so that SIP parses QtGui. [d6787031f3f4] * PyQt6.msp, qpy/QtGui/opengl_types.sip, qpy/QtGui/qpyopengl_add_constants.cpp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_get.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_misc.h, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp, qpy/QtOpenGL/opengl_types.sip, qpy/QtOpenGL/qpyopengl_add_constants.cpp, qpy/QtOpenGL/qpyopengl_api.h, qpy/QtOpenGL/qpyopengl_array_convertors.cpp, qpy/QtOpenGL/qpyopengl_attribute_array.cpp, qpy/QtOpenGL/qpyopengl_data_cache.cpp, qpy/QtOpenGL/qpyopengl_data_cache.h, qpy/QtOpenGL/qpyopengl_get.cpp, qpy/QtOpenGL/qpyopengl_init.cpp, qpy/QtOpenGL/qpyopengl_misc.h, qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp, qpy/QtOpenGL/qpyopengl_value_array.cpp, qpy/QtOpenGL/qpyopengl_version_functions.cpp: Moved the OpenGL stuff from QtGui to QtOpenGL. [da79c41d0698] 2020-11-19 Phil Thompson * PyQt6.msp: Completed the initial run through of QtGui. [4f49b6ee5b8c] * PyQt6.msp: Moe work on QtGui. [fea98385a350] * PyQt6.msp: More work on QtGui. [5b033bc6d3f0] 2020-11-18 Phil Thompson * PyQt6.msp: Work on QtGui. [81e9984ec299] * PyQt6.msp: Removed some redundant %MethodCode. [6218efb96825] * PyQt6.msp: Added the QObject sub-class convertor code. [cedfb4d930d4] * tools/mksccode.py: Fixed the script for generating sub-class convertor code. [fb15c90fb5ce] * PyQt6.msp: Implemented the operator|() overloads that create a QKeyCombination. [8f4131e92e48] 2020-11-17 Phil Thompson * PyQt6.msp, qpy/QtCore/qmutexlocker.sip, qpy/QtCore/qpycore_pyqtmutexlocker.cpp, qpy/QtCore/qpycore_pyqtmutexlocker.h: Implemented QMutexLocker. [72c25137e386] 2020-11-16 Phil Thompson * PyQt6.msp: Finish QMutex. [f6c686dc795a] * PyQt6.msp: Fixed some minor TODOs. [1f6556f41d57] * PyQt6.msp: Updated QCborStreamWriter. [e84c4ca54da3] * PyQt6.msp: Updated QCborStreamReader. [dc0d7dcf5cc8] * PyQt6.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_qvariantmap.cpp, qpy/QtCore/qpycore_qvariantmap.sip: Removed the old QVariantMap support. [960789898bc5] * qpy/QtCore/qpycore_chimera.cpp: Refactored the QVariantMap support. [1d3795e9e8ad] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Refactored the QVariantHash support. [f23c4e26dc86] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Refactored the QVariantList support. [11504464fe75] * PyQt6.msp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Added support for QVariantPair. [2c8990b62862] 2020-11-15 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp: Added support for QMetaType::Nullptr. [fa10c713aedf] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h: Added support for QMetaType::Char16 and QMetaType::Char32. [b382e36d4a51] * qpy/QtCore/qpycore_chimera.cpp: Don't handle a 'char *' as a QString (or as a bytes object as PyQt5) when parsing a C++ type specified as a string. [204855e7571e] * PyQt6.msp: Updated for Qt v6.0.0.0beta5. [c51cc6316690] 2020-11-14 Phil Thompson * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtpyobject.h, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_types.cpp: QtCore now builds without compiler warnings. [5c62dfc70218] 2020-11-13 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qvariant_value.cpp: Remove deprecated API elements. [4355f4316eba] 2020-11-12 Phil Thompson * PyQt6.msp: Updated for Qt v6.0.0.0beta4. [ddf87413aa33] * PyQt6.msp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qobject_helpers.cpp: The QtCore module now builds and can be imported. [4c45e3aa0d68] * PyQt6.msp: Bug fixes. [ea3efdf4c3a2] 2020-11-11 Phil Thompson * PyQt6.msp, qpy/QtCore/qbytearrayview.sip, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qsysinfo.sip: Bug fixes. [d1733bcde2d0] * PyQt6.msp: Removed QModelRoleDataSpan because it is inappropriate in a Python context. [f29867eac956] * PyQt6.msp: The QtCore code is now generated. [325f92fe27dc] 2020-11-10 Phil Thompson * PyQt6.msp, projects/PyQt6/project.py, qpy/QtCore/qbytearrayview.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qstring.sip, qpy/QtCore/qstringview.sip: More work on QtCore. [3bf0bb52a577] 2020-11-09 Phil Thompson * PyQt6.msp: Updated QtCore for Qt v6.0.0beta3. [8fc0f04e50de] 2020-11-05 Phil Thompson * PyQt6.msp: Refactored the QIODevice methods in QtCore. [41825eabd9ef] 2020-11-04 Phil Thompson * PyQt6.msp: QIODevice updates. [b29cf9904968] * PyQt6.msp: Completed the initial pass of QtCore. [be3d02b2c14a] * PyQt6.msp: More work on QtCore. [a7d1ca9ba59d] 2020-11-03 Phil Thompson * PyQt6.msp, qpy/QtCore/qchar.sip: More work on QtCore. [abaae2bba4aa] 2020-11-01 Phil Thompson * PyQt6.msp, qpy/QtCore/qbytearrayview.sip: Re-factored the QByteArray support. [98b7277f1167] 2020-10-28 Phil Thompson * PyQt6.msp, qpy/QtCore/qstring.sip: Move qstring.sip out of the project. [01aeac0b5e87] * PyQt6.msp: More work on QtCore. [2025096ebd84] 2020-10-25 Phil Thompson * PyQt6.msp: Updating of some QtCore classes. [df82a8e5f31c] 2020-10-24 Phil Thompson * projects/PyQt3D6/pyproject.toml, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/pyproject.toml: Updated the pyproject.toml files now that Qt6 is being used. [333636927a25] * PyQt6.msp, projects/PyQt6/project.py: Scan QtCore from Qt v6.0.0beta removing the .sip files for the corresponding removed .h files. [6ee9b41573b9] 2020-10-23 Phil Thompson * extras/lupdate/designer_source.py: Provided a comment about the element. [0b27ecd8b925] * extras/lupdate/translation_file.py: .ts files created from .ui files now contain location information. [7783517e0365] * extras/lupdate/designer_source.py, extras/uic/ui_file.py: pylupdate now handles the attributes of a string element in a .ui file. [9a55e5300725] * extras/lupdate/designer_source.py, extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py, extras/lupdate/python_source.py, extras/lupdate/source_file.py, extras/lupdate/translation_file.py, extras/uic/compile_ui.py, extras/uic/ui_file.py, extras/uic/uiparser.py: pylupdate will now handle .ui files. [551b6804f90c] 2020-10-22 Phil Thompson * extras/uic/__init__.py, extras/uic/exceptions.py, extras/uic/pyuic.py, extras/uic/ui_file.py, extras/uic/uiparser.py: Refactor the parsing of a .ui file so it can be reused by pylupdate. [27ae3f8ba09e] 2020-10-10 Phil Thompson * PyQt6.msp: QObject.tr() is now implemented as a class method so it can be called with an explicit context. [a6af3664d65a] 2020-10-09 Phil Thompson * extras/lupdate/python_source.py, extras/lupdate/translation_file.py, extras/lupdate/translations.py: Added support for embedded translator comments to pylupdate. [36e006df69cb] 2020-10-08 Phil Thompson * extras/lupdate/translation_file.py: Added the 'numerusform' tag when required. [a08ac34a887e] * extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py, extras/lupdate/python_source.py: A directory can be specified as well as the name of a Python file. [1181e4c8cd61] * extras/lupdate/translation_file.py: Contexts are now sorted by their name. [7458543602c6] * extras/lupdate/translation_file.py: There is no need to use escape() as etree handles it automatically. [31e3a843636a] * extras/lupdate/python_source.py, extras/lupdate/translation_file.py: Context names now include any scoping class. [1c753b1b3c2c] * extras/lupdate/translation_file.py: Fixed the updating of a message location. [6b151a4e4c6e] * extras/lupdate/translation_file.py, extras/lupdate/user.py: Improve the dispay of source text in progress messages. [d81c802ed873] * extras/lupdate/translation_file.py: The Python source filename is relative to the .ts filename. [3db8d5efaeae] * extras/lupdate/pylupdate.py: Improvements to the error report text. [8fa461638929] * extras/lupdate/exceptions.py, extras/lupdate/lupdate.py, extras/lupdate/messages.py, extras/lupdate/pylupdate.py, extras/lupdate/python_source.py, extras/lupdate/translation_file.py, extras/lupdate/user.py: Added the --verbose flag to pylupdate. [bebff95dab1d] 2020-10-06 Phil Thompson * extras/lupdate/exceptions.py, extras/lupdate/lupdate.py, extras/lupdate/messages.py, extras/lupdate/pylupdate.py, extras/lupdate/python_source.py, extras/lupdate/translation_file.py: Added the messaging and error handling infrastructure. [0bb5ca9f9a86] * extras/lupdate/python_source.py, extras/lupdate/translation_file.py, extras/lupdate/translations.py: Completed the initial implementation of pylupdate. [3cda34ff4e37] 2020-10-04 Phil Thompson * extras/lupdate/__init__.py, extras/lupdate/lupdate.py, extras/lupdate/pylupdate.py, extras/lupdate/python_source.py, extras/lupdate/translation_file.py, extras/pylupdate/lupdate/__init__.py, extras/pylupdate/lupdate/lupdate.py, extras/pylupdate/lupdate/pylupdate.py, extras/pylupdate/lupdate/python_source.py, extras/pylupdate/lupdate/translation_file.py, extras/pyuic/uic/Compiler/__init__.py, extras/pyuic/uic/Compiler/as_string.py, extras/pyuic/uic/Compiler/compiler.py, extras/pyuic/uic/Compiler/indenter.py, extras/pyuic/uic/Compiler/misc.py, extras/pyuic/uic/Compiler/proxy_metaclass.py, extras/pyuic/uic/Compiler/qobjectcreator.py, extras/pyuic/uic/Compiler/qtproxies.py, extras/pyuic/uic/Loader/__init__.py, extras/pyuic/uic/Loader/loader.py, extras/pyuic/uic/Loader/qobjectcreator.py, extras/pyuic/uic/__init__.py, extras/pyuic/uic/compile_ui.py, extras/pyuic/uic/exceptions.py, extras/pyuic/uic/icon_cache.py, extras/pyuic/uic/load_ui.py, extras/pyuic/uic/objcreator.py, extras/pyuic/uic/properties.py, extras/pyuic/uic/pyuic.py, extras/pyuic/uic/uiparser.py, extras/pyuic/uic/widget- plugins/qaxcontainer.py, extras/pyuic/uic/widget- plugins/qscintilla.py, extras/pyuic/uic/widget-plugins/qtcharts.py, extras/pyuic/uic/widget-plugins/qtprintsupport.py, extras/pyuic/uic/widget-plugins/qtquickwidgets.py, extras/pyuic/uic/widget-plugins/qtwebenginewidgets.py, extras/uic/Compiler/__init__.py, extras/uic/Compiler/as_string.py, extras/uic/Compiler/compiler.py, extras/uic/Compiler/indenter.py, extras/uic/Compiler/misc.py, extras/uic/Compiler/proxy_metaclass.py, extras/uic/Compiler/qobjectcreator.py, extras/uic/Compiler/qtproxies.py, extras/uic/Loader/__init__.py, extras/uic/Loader/loader.py, extras/uic/Loader/qobjectcreator.py, extras/uic/__init__.py, extras/uic/compile_ui.py, extras/uic/exceptions.py, extras/uic/icon_cache.py, extras/uic/load_ui.py, extras/uic/objcreator.py, extras/uic/properties.py, extras/uic/pyuic.py, extras/uic/uiparser.py, extras/uic/widget-plugins/qaxcontainer.py, extras/uic/widget-plugins/qscintilla.py, extras/uic/widget- plugins/qtcharts.py, extras/uic/widget-plugins/qtprintsupport.py, extras/uic/widget-plugins/qtquickwidgets.py, extras/uic/widget- plugins/qtwebenginewidgets.py, projects/PyQt6/project.py: Simplified the directory structure of pyuic and pylupdate. [65479b8446aa] * extras/pylupdate/lupdate/__init__.py, extras/pylupdate/lupdate/lupdate.py, extras/pylupdate/lupdate/pylupdate.py, extras/pylupdate/lupdate/python_source.py, extras/pylupdate/lupdate/translation_file.py, extras/pylupdate/pylupdate_main.py, extras/pylupdate/pylupdatemod.sip, projects/PyQt6/project.py: Added the stub of the pylupdate6 implementation. [4922d727e586] * extras/pyuic/uic/pyuic.py: Fixed the name of pyuic6. [9e2d19ebf2bb] * extras/designer/pluginloader.cpp, extras/qmlscene/pluginloader.cpp: Eliminate deprecation warnings from Python v3.9. [ed7abf162983] * PyQt6.msp: Ensure QtQuick will build without OpenGL. [a70f17b8c38c] 2020-10-03 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_enums_flags.cpp: pyqtEnum() now makes use of SIP_PYENUM and sipIsEnumFlag(). [02632981bade] * qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, qpy/QtCore/qpycore_types.cpp: Use a better data type for holding parsed enum members. [5a1bc01a7c46] * qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Check the arguments of pyqtClassInfo when they are passed rather than when they are used. [7286db7eec67] * PyQt6.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, qpy/QtCore/qpycore_types.cpp, test/metaobject/test_qenum.py: Replaced Q_ENUM and Q_FLAG with pyqtEnum. [f6df9d5af282] 2020-10-02 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Improved the method of ensuring the QMetaObject is created in time. [a386fa108f2c] * qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h: Ensure the QMetaObject is created in time. [1f0154cd9c57] * PyQt6.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, test/metaobject/test_qclassinfo.py: A QMetaObject is now created when referenced rather than when the QObject sub-class is defined. Replaced Q_CLASSINFO with the pyqtClassInfo class decorator. [478204118318] 2020-10-01 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, test/metaobject/test_qenum.py: Removed support for Q_ENUMS and Q_FLAGS. [04924904e31b] * test/metaobject/test_qclassinfo.py: Added the Q_CLASSINFO unit test. [1780fdda45b8] 2020-09-28 Phil Thompson * PyQt6.msp: Removed the unused qsql.h file. [14ff91794411] * PyQt6.msp: Added a missing /TransferBack/ annotation to QLayout.removeWidget(). [a98e3346fddd] 2020-09-25 Phil Thompson * projects/PyQt3D6/pyproject.toml, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/pyproject.toml: Fixed the temporary specification of the ABI version. [1e66bd83ae93] * test/pyuic/test_pyuic.py: All unit tests now pass (except for the one pyuic expected failure). [5bc0c7ad9c31] * extras/pyuic/uic/Compiler/compiler.py, extras/pyuic/uic/Loader/loader.py, extras/pyuic/uic/__init__.py, extras/pyuic/uic/compile_ui.py, extras/pyuic/uic/driver.py, extras/pyuic/uic/load_ui.py, extras/pyuic/uic/pyuic.py, extras/pyuic/uic/uiparser.py: Refactored pyuic and removed support for resource files. [ced4605bfb06] 2020-09-24 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_qvariant.cpp, test/metaobject/test_pyqtproperty.py: QMetaProperty.read() now correctly handles enum properties. [baf5b002d176] * test/misc/test_pickle.py: Fixed the unit test for pickling enums. [e35c7596760d] * qpy/QtCore/qpycore_chimera.cpp, test/classes/test_QVariant.py: Fixes for converting enums to QVariants. [a58086482403] * test/classes/test_QFlags.py: Removed the QFlags unit test as it would only be testing standard Python enums. [1b59859b92d0] * PyQt6.msp: Renamed the enums implementing QFlags. [24360bd5c4ef] * PyQt6.msp: Don't use /PyName/ to handle clashes with Python keywords now that SIP v6 will handle it automatically. [b7050df954a7] * PyQt6.msp, qpy/QtCore/qflags.sip: QFlags is now implemented as enum.Flag. [1e6401e9e31e] 2020-09-23 Phil Thompson * PyQt6.msp: Update the PyQt annotations on QUrlTwoFlags. [0acd56a19476] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Don't assume that there is plugin data for a type. The QFlags flag is now part of the mapped type plugin. [0758332c5800] * qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Renamed qpycore_is_pyqt_class() to qpycore_is_pyqt_type(). [094cb8d31f38] * qpy/QtCore/qflags.sip: Reimplemented QFlags as a mapped type. [9a06be216246] * PyQt6.msp, qpy/QtCore/qflags.sip: Moved the QFlags implementation out of the project file. [8a6cea906ea0] * extras/pyuic/uic/Loader/loader.py: Fix pyuic. [b621768247ea] 2020-09-21 Phil Thompson * projects/PyQt6/project.py: Fixed a regression in the name of the sip module to be used. [3a242e9b4743] 2020-09-18 Phil Thompson * projects/PyQt6/project.py: Check the version of Qt is supported. [f71b7e5daa26] 2020-09-17 Phil Thompson * projects/PyQt3D6/pyproject.toml, projects/PyQt6/project.py, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/pyproject.toml: Explicity set the ABI version until we start using Qt6. [b9f688d9255f] * projects/PyQt3D6/pyproject.toml, projects/PyQt6/project.py, projects/PyQt6/pyproject.toml, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine6/pyproject.toml: Require PyQt-builder v1.6 as we no longer specify the sip module and ABI. [1ed491e43ee4] * PyQt6.msp: Added the QT_MAC_WANTS_LAYER workaround for missing paint events. [d89c9fad5d09] 2020-09-15 Phil Thompson * qpy/QtCore/qpycore_pyqtboundsignal.cpp, test/metaobject/test_pyqtboundsignal.py: Bound signals are now hashable. [6fe95eb8c9ca] 2020-09-14 Phil Thompson * PyQt6.msp: Removed some legacy casts. [fd0e56cd4bc7] * PyQt6.msp: Removed qApp. [7abdd4517679] * test/classes/test_QQmlComponent.py, test/classes/test_QSignalSpy.py, test/mapped_types/__init__.py, test/mapped_types/test_QList.py, test/metaobject/__init__.py, test/metaobject/test_connections.py, test/metaobject/test_connectslotsbyname.py, test/metaobject/test_gc_slots.py, test/metaobject/test_invoke.py, test/metaobject/test_pyqtproperty.py, test/metaobject/test_pyqtsignal.py, test/metaobject/test_pyqtslot.py, test/metaobject/test_qenum.py, test/metaobject/test_qvariantmap.py, test/metaobject/test_sender.py, test/misc/__init__.py, test/misc/test_pickle.py, test/misc/test_repr.py, test/pyuic/QMainWindow/MainWindow00.ui, test/pyuic/QToolBox/ToolBox00.ui, test/pyuic/QToolBox/ToolBox01.ui, test/pyuic/QWidget/Widget00.ui, test/pyuic/QWidget/Widget01.ui, test/pyuic/QWidget/Widget02.ui, test/pyuic/QWidget/Widget03.ui, test/pyuic/QWidget/Widget04.ui, test/pyuic/QWidget/Widget05.ui, test/pyuic/__init__.py, test/pyuic/test_pyuic.py, test/tests/mapped_types/__init__.py, test/tests/mapped_types/test_QList.py, test/tests/metaobject/__init__.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qenum.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/misc/__init__.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/QMainWindow/MainWindow00.ui, test/tests/pyuic/QToolBox/ToolBox00.ui, test/tests/pyuic/QToolBox/ToolBox01.ui, test/tests/pyuic/QWidget/Widget00.ui, test/tests/pyuic/QWidget/Widget01.ui, test/tests/pyuic/QWidget/Widget02.ui, test/tests/pyuic/QWidget/Widget03.ui, test/tests/pyuic/QWidget/Widget04.ui, test/tests/pyuic/QWidget/Widget05.ui, test/tests/pyuic/__init__.py, test/tests/pyuic/test_pyuic.py: Completed the initial refactoring of the unit tests. [eb200713c25e] 2020-09-12 Phil Thompson * test/classes/__init__.py, test/classes/test_QByteArray.py, test/classes/test_QFlags.py, test/classes/test_QObject.py, test/classes/test_QQmlComponent.py, test/classes/test_QSettings.py, test/classes/test_QSignalSpy.py, test/classes/test_QVariant.py, test/dbus/test_multibus.py, test/runtests.py, test/tests/__init__.py, test/tests/classes/__init__.py, test/tests/classes/test_QByteArray.py, test/tests/classes/test_QFlags.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QQmlComponent.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QSignalSpy.py, test/tests/classes/test_QVariant.py: Parial refactoring of the unit tests. [7244f37eb2a2] 2020-09-11 Phil Thompson * PyQt6.msp: QSGNode fixes from PyQt5. [572b4061a97a] * projects/PyQt6/project.py: Fixed a typo in the handling of platform tags. [11cbef1a82d1] * projects/PyQt6/project.py: The full set of platforms tags can now be derived from py_platform. [7e814ddb9952] 2020-09-10 Phil Thompson * extras/pyuic/uic/Compiler/compiler.py, extras/pyuic/uic/Compiler/qtproxies.py, extras/pyuic/uic/Loader/qobjectcreator.py, extras/pyuic/uic/__init__.py, extras/pyuic/uic/driver.py, extras/pyuic/uic/pyuic.py, extras/pyuic/uic/uiparser.py, extras/pyuic/uic/widget-plugins/qaxcontainer.py, extras/pyuic/uic/widget-plugins/qscintilla.py, extras/pyuic/uic/widget-plugins/qtcharts.py, extras/pyuic/uic/widget-plugins/qtprintsupport.py, extras/pyuic/uic/widget-plugins/qtquickwidgets.py, extras/pyuic/uic/widget-plugins/qtwebenginewidgets.py, extras/pyuic/uic/widget-plugins/qtwebkit.py: Updated pyuic for PyQt6. [7ce320fb7235] * extras/pyuic/uic/Compiler/as_string.py, extras/pyuic/uic/Compiler/qobjectcreator.py, extras/pyuic/uic/Compiler/qtproxies.py, extras/pyuic/uic/__init__.py, extras/pyuic/uic/driver.py, extras/pyuic/uic/port_v2/__init__.py, extras/pyuic/uic/port_v2/as_string.py, extras/pyuic/uic/port_v2/ascii_upper.py, extras/pyuic/uic/port_v2/proxy_base.py, extras/pyuic/uic/port_v2/string_io.py, extras/pyuic/uic/port_v3/__init__.py, extras/pyuic/uic/port_v3/as_string.py, extras/pyuic/uic/port_v3/ascii_upper.py, extras/pyuic/uic/port_v3/proxy_base.py, extras/pyuic/uic/port_v3/string_io.py, extras/pyuic/uic/properties.py: Removed the Python v2 support from pyuic. [42116b5282a0] * PyQt6.msp: Handle the wrapping of the project version attributes consistently. [74e630b207d0] * projects/PyQt6/project.py: Fixed the handling of the .sip handling the license. [c6c896d0db2e] * projects/PyQt6/pyqt-commercial.sip: Updated an error message. [cd90da846e38] * projects/PyQt6/project.py: Remove the redundant code to create the Qt composite module. [84f08ad54745] * PyQt6.msp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_types.cpp: Use the PyQt6 %Plugin. [6fd31e04b6e4] * rb-product, rb-product.toml, test/dbus/test_multibus.py, test/runtests.py, test/tests/__init__.py, test/tests/classes/__init__.py, test/tests/classes/test_QByteArray.py, test/tests/classes/test_QFlags.py, test/tests/classes/test_QObject.py, test/tests/classes/test_QQmlComponent.py, test/tests/classes/test_QSettings.py, test/tests/classes/test_QSignalSpy.py, test/tests/classes/test_QVariant.py, test/tests/mapped_types/__init__.py, test/tests/mapped_types/test_QList.py, test/tests/metaobject/__init__.py, test/tests/metaobject/test_connections.py, test/tests/metaobject/test_connectslotsbyname.py, test/tests/metaobject/test_gc_slots.py, test/tests/metaobject/test_invoke.py, test/tests/metaobject/test_pyqtproperty.py, test/tests/metaobject/test_pyqtsignal.py, test/tests/metaobject/test_pyqtslot.py, test/tests/metaobject/test_qenum.py, test/tests/metaobject/test_qvariantmap.py, test/tests/metaobject/test_sender.py, test/tests/misc/__init__.py, test/tests/misc/test_pickle.py, test/tests/misc/test_repr.py, test/tests/pyuic/QMainWindow/MainWindow00.ui, test/tests/pyuic/QToolBox/ToolBox00.ui, test/tests/pyuic/QToolBox/ToolBox01.ui, test/tests/pyuic/QWidget/Widget00.ui, test/tests/pyuic/QWidget/Widget01.ui, test/tests/pyuic/QWidget/Widget02.ui, test/tests/pyuic/QWidget/Widget03.ui, test/tests/pyuic/QWidget/Widget04.ui, test/tests/pyuic/QWidget/Widget05.ui, test/tests/pyuic/__init__.py, test/tests/pyuic/test_pyuic.py: Add the PyQt5 tests. [e58465fae79f] 2020-09-09 Phil Thompson * projects/PyQt3D/METADATA.in, projects/PyQt3D/Modules, projects/PyQt3D/NEWS, projects/PyQt3D/README, projects/PyQt3D/pyproject.toml, projects/PyQt3D6/Modules, projects/PyQt3D6/NEWS, projects/PyQt3D6/README, projects/PyQt3D6/pyproject.toml, projects/PyQt6/METADATA.in, projects/PyQtChart/METADATA.in, projects/PyQtChart/Modules, projects/PyQtChart/NEWS, projects/PyQtChart/README, projects/PyQtChart/pyproject.toml, projects/PyQtChart6/Modules, projects/PyQtChart6/NEWS, projects/PyQtChart6/README, projects/PyQtChart6/pyproject.toml, projects/PyQtDataVisualization/METADATA.in, projects/PyQtDataVisualization/Modules, projects/PyQtDataVisualization/NEWS, projects/PyQtDataVisualization/README, projects/PyQtDataVisualization/pyproject.toml, projects/PyQtDataVisualization6/Modules, projects/PyQtDataVisualization6/NEWS, projects/PyQtDataVisualization6/README, projects/PyQtDataVisualization6/pyproject.toml, projects/PyQtPurchasing/METADATA.in, projects/PyQtPurchasing/Modules, projects/PyQtPurchasing/NEWS, projects/PyQtPurchasing/README, projects/PyQtPurchasing/pyproject.toml, projects/PyQtPurchasing6/Modules, projects/PyQtPurchasing6/NEWS, projects/PyQtPurchasing6/README, projects/PyQtPurchasing6/pyproject.toml, projects/PyQtWebEngine/METADATA.in, projects/PyQtWebEngine/Modules, projects/PyQtWebEngine/NEWS, projects/PyQtWebEngine/README, projects/PyQtWebEngine/pyproject.toml, projects/PyQtWebEngine6/Modules, projects/PyQtWebEngine6/NEWS, projects/PyQtWebEngine6/README, projects/PyQtWebEngine6/pyproject.toml: Gave the subprojects a '6' suffix so that they can be installed side by side with the PyQt5 versions. [8c6d04c537ef] * projects/PyQt3D/METADATA.in, projects/PyQt3D/Modules, projects/PyQt3D/NEWS, projects/PyQt3D/README, projects/PyQt3D/pyproject.toml, projects/PyQt6/pyproject.toml, projects/PyQtChart/METADATA.in, projects/PyQtChart/Modules, projects/PyQtChart/NEWS, projects/PyQtChart/README, projects/PyQtChart/pyproject.toml, projects/PyQtDataVisualization/METADATA.in, projects/PyQtDataVisualization/Modules, projects/PyQtDataVisualization/NEWS, projects/PyQtDataVisualization/README, projects/PyQtDataVisualization/pyproject.toml, projects/PyQtPurchasing/pyproject.toml, projects/PyQtWebEngine/METADATA.in, projects/PyQtWebEngine/Modules, projects/PyQtWebEngine/NEWS, projects/PyQtWebEngine/README, projects/PyQtWebEngine/pyproject.toml: Added the remaining PyQt sub-projects. [77362503963b] * qpy/QtDataVisualization/qpydatavisualization_qlist.sip: More SIP_SSIZE_T removals. [b3ee41e1e684] * PyQt6.msp: Removed SIP_SSIZE_T. [59c1c6367e48] * PyQt6.msp: Fixed a legacy macro. [2df55da1386c] * PyQt6.msp: Removed an old timeline. [8cf15fb9f795] * projects/PyQt6/pyproject.toml: Fixed a type in the PyQt6 metadata. [df71929ed61f] * qpy/QtCore/qpycore_post_init.cpp.in: Remove the reference to sipEnableOverflowChecking(). [056baebe726e] * qpy/Qt3DCore/qsharedpointer.sip, qpy/QtCore/qpycore_chimera_signature.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_uniform_value_array.cpp: Removed all references to SIP_USE_PYCAPSULE. [cb708d30e5d9] * projects/PyQt6/license.dat.commercial, projects/PyQt6/license.dat.internal, projects/PyQt6/project.py: Updates to the PyQt6 project build system. [dd2edf3eae7c] * PyQt6.msp: For the moment treat WebAssembly the same as Linux. [aafdd15f84e3] 2020-09-08 Phil Thompson * extras/dbus/dbus.cpp, extras/dbus/helper.h, extras/designer/designer.pro-in, extras/designer/pluginloader.cpp, extras/designer/pluginloader.h, extras/pylupdate/pylupdate_main.py, extras/pylupdate/pylupdatemod.sip, extras/pyuic/uic/Compiler/__init__.py, extras/pyuic/uic/Compiler/compiler.py, extras/pyuic/uic/Compiler/indenter.py, extras/pyuic/uic/Compiler/misc.py, extras/pyuic/uic/Compiler/proxy_metaclass.py, extras/pyuic/uic/Compiler/qobjectcreator.py, extras/pyuic/uic/Compiler/qtproxies.py, extras/pyuic/uic/Loader/__init__.py, extras/pyuic/uic/Loader/loader.py, extras/pyuic/uic/Loader/qobjectcreator.py, extras/pyuic/uic/__init__.py, extras/pyuic/uic/driver.py, extras/pyuic/uic/exceptions.py, extras/pyuic/uic/icon_cache.py, extras/pyuic/uic/objcreator.py, extras/pyuic/uic/port_v2/__init__.py, extras/pyuic/uic/port_v2/as_string.py, extras/pyuic/uic/port_v2/ascii_upper.py, extras/pyuic/uic/port_v2/proxy_base.py, extras/pyuic/uic/port_v2/string_io.py, extras/pyuic/uic/port_v3/__init__.py, extras/pyuic/uic/port_v3/as_string.py, extras/pyuic/uic/port_v3/ascii_upper.py, extras/pyuic/uic/port_v3/proxy_base.py, extras/pyuic/uic/port_v3/string_io.py, extras/pyuic/uic/properties.py, extras/pyuic/uic/pyuic.py, extras/pyuic/uic/uiparser.py, extras/pyuic/uic/widget- plugins/qaxcontainer.py, extras/pyuic/uic/widget- plugins/qscintilla.py, extras/pyuic/uic/widget-plugins/qtcharts.py, extras/pyuic/uic/widget-plugins/qtprintsupport.py, extras/pyuic/uic/widget-plugins/qtquickwidgets.py, extras/pyuic/uic/widget-plugins/qtwebenginewidgets.py, extras/pyuic/uic/widget-plugins/qtwebkit.py, extras/qmlscene/pluginloader.cpp, extras/qmlscene/pluginloader.h, extras/qmlscene/qmlscene.pro-in: Added the extra stuff from PyQt5. [46613e339d46] * modules/QAxContainer/QAxContainermod.sip, modules/QAxContainer/qaxbase.sip, modules/QAxContainer/qaxobject.sip, modules/QAxContainer/qaxwidget.sip, modules/QtAndroidExtras/QtAndroidExtrasmod.sip, modules/QtAndroidExtras/qandroidjniobject.sip, modules/QtAndroidExtras/qtandroid.sip, modules/QtMacExtras/QtMacExtrasmod.sip, modules/QtMacExtras/qmacpasteboardmime.sip, modules/QtMacExtras/qmactoolbar.sip, modules/QtMacExtras/qmactoolbaritem.sip, modules/QtMacExtras/qtmac.sip, modules/QtWinExtras/QtWinExtrasmod.sip, modules/QtWinExtras/qwinfunctions.sip, modules/QtWinExtras/qwinjumplist.sip, modules/QtWinExtras/qwinjumplistcategory.sip, modules/QtWinExtras/qwinjumplistitem.sip, modules/QtWinExtras/qwintaskbarbutton.sip, modules/QtWinExtras/qwintaskbarprogress.sip, modules/QtWinExtras/qwinthumbnailtoolbar.sip, modules/QtWinExtras/qwinthumbnailtoolbutton.sip, modules/QtX11Extras/QtX11Extrasmod.sip, modules/QtX11Extras/qx11info_x11.sip: Added the platform-specific handwritten modules from PyQt5. [db1fd2139285] * .hgignore, projects/PyQt6/Modules, projects/PyQtPurchasing/Modules: Added the Modules files for the currently implemented projects. [49e21155f9e4] * projects/PyQt6/METADATA.in, projects/PyQt6/NEWS, projects/PyQtPurchasing/METADATA.in, projects/PyQtPurchasing/NEWS, projects/PyQtPurchasing/README, projects/PyQtPurchasing/pyproject.toml: Updated project build systems. [3d0e682b0503] * tools/OpenGL/gen_opengl_constants.py, tools/OpenGL/gl.xml, tools/mksccode.py: Added some tools from PyQt5. [0736add6b699] * projects/PyQt6/README, projects/PyQt6/__init__.py, projects/PyQt6/config-tests/cfgtest_QtCore.cpp, projects/PyQt6/config-tests/cfgtest_QtGui.cpp, projects/PyQt6/config-tests/cfgtest_QtNetwork.cpp, projects/PyQt6/config-tests/cfgtest_QtPrintSupport.cpp, projects/PyQt6/project.py, projects/PyQt6/pyproject.toml, projects/PyQt6/pyqt-commercial.sip, projects/PyQt6/pyqt-gpl.sip, projects/PyQt6/pyqt-internal.sip: Added the initial build system for the PyQt6 project. [ea310826f59a] * rb-product: Added the rb-product file. [8c1ccc17e43b] * qpy/QtCore/qpycore_post_init.cpp.in: Removed QtCore.PYQT_CONFIGURATION. [243be8a8f9af] * qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_types.cpp: Refactor the PyQtSlot ctors. [6e87b0219b71] 2020-09-07 Phil Thompson * PyQt6.msp, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qpycore_types.cpp, qpy/QtGui/qpyopengl_array_convertors.cpp: Removed calls to SIPLong_*() and SIPBytes_()*. [9f8927c1a7aa] * PyQt6.msp, qpy/Qt3DRender/qvector.sip, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qt_conf.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_virtual_error_handler.sip, qpy/QtCore/qstringlist.sip, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbusreply.cpp, qpy/QtDataVisualization/qpydatavisualization_qlist.sip, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_version_functions.cpp, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlvalidator.cpp, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquickframebufferobject.cpp, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickview.cpp, qpy/QtQuick/qpyquickwindow.cpp, qpy/QtWidgets/qpywidgets_post_init.cpp: Removed references to PyQt5 and pyqt5. [797c8a7cb2fe] * qpy/Qt3DCore/qsharedpointer.sip, qpy/Qt3DRender/qvector.sip, qpy/QtBluetooth/qpybluetooth_qlist.sip, qpy/QtBluetooth/qpybluetooth_quint128.sip, qpy/QtCore/qjsonarray.sip, qpy/QtCore/qjsonobject.sip, qpy/QtCore/qpycore_api.h, qpy/QtCore/qpycore_chimera.cpp, qpy/QtCore/qpycore_chimera.h, qpy/QtCore/qpycore_chimera_signature.cpp, qpy/QtCore/qpycore_chimera_storage.cpp, qpy/QtCore/qpycore_classinfo.cpp, qpy/QtCore/qpycore_classinfo.h, qpy/QtCore/qpycore_decorators.cpp, qpy/QtCore/qpycore_enums_flags.cpp, qpy/QtCore/qpycore_enums_flags.h, qpy/QtCore/qpycore_event_handlers.cpp, qpy/QtCore/qpycore_event_handlers.h, qpy/QtCore/qpycore_init.cpp, qpy/QtCore/qpycore_misc.cpp, qpy/QtCore/qpycore_misc.h, qpy/QtCore/qpycore_namespace.h, qpy/QtCore/qpycore_objectified_strings.h, qpy/QtCore/qpycore_post_init.cpp.in, qpy/QtCore/qpycore_public_api.cpp, qpy/QtCore/qpycore_public_api.h, qpy/QtCore/qpycore_pyqtboundsignal.cpp, qpy/QtCore/qpycore_pyqtboundsignal.h, qpy/QtCore/qpycore_pyqtconfigure.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.cpp, qpy/QtCore/qpycore_pyqtmethodproxy.h, qpy/QtCore/qpycore_pyqtproperty.cpp, qpy/QtCore/qpycore_pyqtproperty.h, qpy/QtCore/qpycore_pyqtpyobject.cpp, qpy/QtCore/qpycore_pyqtpyobject.h, qpy/QtCore/qpycore_pyqtsignal.cpp, qpy/QtCore/qpycore_pyqtsignal.h, qpy/QtCore/qpycore_pyqtslot.cpp, qpy/QtCore/qpycore_pyqtslot.h, qpy/QtCore/qpycore_pyqtslotproxy.cpp, qpy/QtCore/qpycore_pyqtslotproxy.h, qpy/QtCore/qpycore_qhash.sip, qpy/QtCore/qpycore_qjsonvalue.cpp, qpy/QtCore/qpycore_qlist.sip, qpy/QtCore/qpycore_qmap.sip, qpy/QtCore/qpycore_qmessagelogger.cpp, qpy/QtCore/qpycore_qmetaobject.cpp, qpy/QtCore/qpycore_qmetaobject_helpers.cpp, qpy/QtCore/qpycore_qmetaobjectbuilder.h, qpy/QtCore/qpycore_qobject_getattr.cpp, qpy/QtCore/qpycore_qobject_helpers.cpp, qpy/QtCore/qpycore_qobject_helpers.h, qpy/QtCore/qpycore_qpair.sip, qpy/QtCore/qpycore_qset.sip, qpy/QtCore/qpycore_qstring.cpp, qpy/QtCore/qpycore_qt_conf.cpp, qpy/QtCore/qpycore_qvariant.cpp, qpy/QtCore/qpycore_qvariant_value.cpp, qpy/QtCore/qpycore_qvariantmap.cpp, qpy/QtCore/qpycore_qvariantmap.sip, qpy/QtCore/qpycore_qvector.sip, qpy/QtCore/qpycore_types.cpp, qpy/QtCore/qpycore_types.h, qpy/QtCore/qpycore_virtual_error_handler.sip, qpy/QtCore/qstringlist.sip, qpy/QtCore/qsysinfo.sip, qpy/QtCore/qwineventnotifier.sip, qpy/QtDBus/qpydbus_api.h, qpy/QtDBus/qpydbus_chimera_helpers.cpp, qpy/QtDBus/qpydbus_chimera_helpers.h, qpy/QtDBus/qpydbus_post_init.cpp, qpy/QtDBus/qpydbuspendingreply.cpp, qpy/QtDBus/qpydbuspendingreply.h, qpy/QtDBus/qpydbuspendingreply.sip, qpy/QtDBus/qpydbusreply.cpp, qpy/QtDBus/qpydbusreply.h, qpy/QtDBus/qpydbusreply.sip, qpy/QtDataVisualization/qpydatavisualization_qlist.sip, qpy/QtDesigner/qpydesignercontainerextension.h, qpy/QtDesigner/qpydesignercontainerextension.sip, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h, qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip, qpy/QtDesigner/qpydesignercustomwidgetplugin.h, qpy/QtDesigner/qpydesignercustomwidgetplugin.sip, qpy/QtDesigner/qpydesignermembersheetextension.h, qpy/QtDesigner/qpydesignermembersheetextension.sip, qpy/QtDesigner/qpydesignerpropertysheetextension.h, qpy/QtDesigner/qpydesignerpropertysheetextension.sip, qpy/QtDesigner/qpydesignertaskmenuextension.h, qpy/QtDesigner/qpydesignertaskmenuextension.sip, qpy/QtGui/opengl_types.sip, qpy/QtGui/qpygui_qlist.sip, qpy/QtGui/qpygui_qpair.sip, qpy/QtGui/qpygui_qvector.sip, qpy/QtGui/qpyopengl_add_constants.cpp, qpy/QtGui/qpyopengl_api.h, qpy/QtGui/qpyopengl_array_convertors.cpp, qpy/QtGui/qpyopengl_attribute_array.cpp, qpy/QtGui/qpyopengl_data_cache.cpp, qpy/QtGui/qpyopengl_data_cache.h, qpy/QtGui/qpyopengl_get.cpp, qpy/QtGui/qpyopengl_init.cpp, qpy/QtGui/qpyopengl_misc.h, qpy/QtGui/qpyopengl_uniform_value_array.cpp, qpy/QtGui/qpyopengl_value_array.cpp, qpy/QtGui/qpyopengl_version_functions.cpp, qpy/QtMultimedia/qpymultimedia_qlist.sip, qpy/QtNetwork/qpynetwork_qhash.sip, qpy/QtNetwork/qpynetwork_qmap.sip, qpy/QtPrintSupport/qpyprintsupport_qlist.sip, qpy/QtQml/qmlattachedpropertiesobject.sip, qpy/QtQml/qmlregistertype.sip, qpy/QtQml/qpyqml_api.h, qpy/QtQml/qpyqml_listdata.cpp, qpy/QtQml/qpyqml_listdata.h, qpy/QtQml/qpyqml_post_init.cpp, qpy/QtQml/qpyqml_qjsvalue.cpp, qpy/QtQml/qpyqml_register_singleton_type.cpp, qpy/QtQml/qpyqml_register_type.cpp, qpy/QtQml/qpyqmllistproperty.cpp, qpy/QtQml/qpyqmllistproperty.h, qpy/QtQml/qpyqmllistproperty.sip, qpy/QtQml/qpyqmllistpropertywrapper.cpp, qpy/QtQml/qpyqmllistpropertywrapper.h, qpy/QtQml/qpyqmlobject.cpp, qpy/QtQml/qpyqmlobject.h, qpy/QtQml/qpyqmlsingletonobject.cpp, qpy/QtQml/qpyqmlsingletonobject.h, qpy/QtQml/qpyqmlvalidator.cpp, qpy/QtQml/qpyqmlvalidator.h, qpy/QtQuick/qpyquick_api.h, qpy/QtQuick/qpyquick_chimera_helpers.cpp, qpy/QtQuick/qpyquick_chimera_helpers.h, qpy/QtQuick/qpyquick_post_init.cpp, qpy/QtQuick/qpyquick_register_type.cpp, qpy/QtQuick/qpyquick_register_type.h, qpy/QtQuick/qpyquickframebufferobject.cpp, qpy/QtQuick/qpyquickframebufferobject.h, qpy/QtQuick/qpyquickitem.cpp, qpy/QtQuick/qpyquickitem.h, qpy/QtQuick/qpyquickpainteditem.cpp, qpy/QtQuick/qpyquickpainteditem.h, qpy/QtQuick/qpyquickview.cpp, qpy/QtQuick/qpyquickview.h, qpy/QtQuick/qpyquickwindow.cpp, qpy/QtQuick/qpyquickwindow.h, qpy/QtWidgets/qmaccocoaviewcontainer.sip, qpy/QtWidgets/qpywidgets_api.h, qpy/QtWidgets/qpywidgets_chimera_helpers.cpp, qpy/QtWidgets/qpywidgets_chimera_helpers.h, qpy/QtWidgets/qpywidgets_post_init.cpp, qpy/QtWidgets/qpywidgets_qlist.sip: Added the qpy support code from PyQt5 but with most redundant code removed. [27152732c630] * PyQt6.msp: Removal of more Python v2 handwritten code. [3541f134d6cc] * PyQt6.msp: Removed any reference to old Qt timelines. [04f530adec6d] * PyQt6.msp: Removed all Qt version dependent code. [76eafef36ace] * PyQt6.msp: Updated the platform definitions. [32f373a5ff13] * PyQt6.msp: Removed all Python v2 handwritten code. [ee05a90c906a] * PyQt6.msp: Removed the Py_v3 feature. Removed all implementations of exec_() and print_(). [f7489cd39d11] * PyQt6.msp: Imported the other sub-projects. [b228f7b24140] * PyQt6.msp: Removed all old versions and unsupported modules. [0855d708b41f] 2020-09-03 Phil Thompson * PyQt6.msp: Added the current PyQt5 project file as the basis of PyQt6. [77889d649aa0] * .hgignore: Added .hgignore. [232375a0de55] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372153.6445992 PyQt6-6.6.1/LICENSE0000644000076500000240000010451314532160372012402 0ustar00philstaff GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0511303 PyQt6-6.6.1/NEWS0000644000076500000240000001002314532160372012064 0ustar00philstaffv6.6.1 18th November 2023 - Bug fixes. v6.6.0 24th October 2023 - Added support for Qt v6.6. v6.5.3 10th October 2023 - Added the missing QAbstractItemModel.multiData() method. - Added the missing QModelRoleDataSpan class. - PyQt6-sip v13.6 is now required for Python v3.12 support. - Bug fixes. v6.5.2 22nd July 2023 - Added the missing NativeGesture, Quit, EnterEditFocus and LeaveEditFocus members of QEventType. - Bug fixes. v6.5.1 26th May 2023 - Added support for QPermission and related classes and methods. - Added the max_workers argument to uic.compileUiDir() to specifiy the maximum number of worker processes to use when compiling the .ui files in a directory. - pyuic6 will now compile all the .ui files in a directory if the name of the directory is passed instead of a .ui file. - Added the --max-workers command line option to pyuic6. - Bug fixes. v6.5.0 5th April 2023 - Added support for Qt v6.5 including the QtSpatialAudio module. - Bug fixes. v6.4.2 28th January 2023 - Bug fixes. v6.4.1 27th January 2023 - Added allocationLimit() and setAllocationLimit() to QImageReader. - Added toHBITMAP(), fromHBITMAP(), toHICON() and fromHICON() to QImage on Windows. - Bug fixes. v6.4.0 30th September 2022 - Added support for Qt v6.4 including the QtPdf, QtPdfWidgets and QtTextToSpeech modules. - Added QAction.menu() and QAction.setMenu(). - Bug fixes. v6.3.1 17th June 2022 - Added qRegisterResourceData() and qUnregisterResourceData() to QtCore to help in supporting legacy resource files from PyQt5. - Requires v13.4 of the sip module which adds support for enums with missing members and the sip.array support. - Reverted the Qt.GestureType related changes made in v6.2.3 as they are no longer necessary with the support for missing enum members. - The QEvent constructor that takes an int argument is now deprecated. - Refactored the draw methods of QPainter to accept sip.array objects of appropriate types. Such arrays, once initialised, can be used very efficiently as they do not require repeated conversion from the usual Python collection types. - Added resize() to QPolygon, QPolygonF and QXmlStreamAttributes. - Bug fixes. v6.3.0 1st April 2022 - Added support for Qt v6.3. - Bug fixes. v6.2.3 1st February 2022 - All Qt.GestureType callable arguments will also accept an int. All callables that return a Qt::GestureType in C++ will return an int (which can be compared with a Qt.GestureType member). - Bug fixes. v6.2.2 1st December 2021 - Added the missing QBluetoothUuid constructors. - Added the missing QMediaPlayer loop-related methods. - Bug fixes. v6.2.1 28th October 2021 - Bug fixes. v6.2.0 30th September 2021 - Added support for Qt v6.2 including the QtBluetooth, QtMultimedia, QtMultimediaWidgets, QtNfc, QtPositioning, QtRemoteObjects, QtSensors, QtSerialPort, QtWebChannel and QtWebSockets modules. - Added support for QAxContainer on Windows. - Ported the QtMultimedia examples from PyQt5. - Bug fixes. v6.1.2 9th July 2021 - Bug fixes. v6.1.1 13th June 2021 - Added the missing QtCore.QXmlStreamAttributes class. - Added the missing QtQml.QQmlExtensionPlugin class. - Added the --exclude command line option to pylupdate6. - pylupdate6 now handles PEP 263 embedded source encodings in .py files. - Bug fixes. v6.1.0 6th May 2021 - Added support for Qt v6.1. - All flag-based enums have been renamed so that they use the name of the Qt enum rather than the name of the Qt QFlag. - An integer ARGB value can now be used whenever a QColor is expected. v6.0.3 5th March 2021 - Bug fixes. v6.0.2 23rd February 2021 - Bug fixes. v6.0.1 5th February 2021 - Added QSocketNotifier. - The Qt Designer and qmlscene plugins now work when installed in a venv. - Ported some of the PyQt5 examples. - Wheels now assume that the corresponding Qt libraries are in an external wheel rather than being bundled. - Bug fixes. v6.0.0 4th January 2021 - The first release of PyQt6. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.7267172 PyQt6-6.6.1/PKG-INFO0000644000076500000240000000403314532160403012461 0ustar00philstaffMetadata-Version: 2.1 Name: PyQt6 Version: 6.6.1 Requires-Python: >=3.6.1 Summary: Python bindings for the Qt cross platform application toolkit Home-Page: https://www.riverbankcomputing.com/software/pyqt/ Author: Riverbank Computing Limited Author-Email: info@riverbankcomputing.com License: GPL v3 Requires-Dist: PyQt6-sip (>=13.6, <14) PyQt6 - Comprehensive Python Bindings for Qt v6 =============================================== Qt is set of cross-platform C++ libraries that implement high-level APIs for accessing many aspects of modern desktop and mobile systems. These include location and positioning services, multimedia, NFC and Bluetooth connectivity, a Chromium based web browser, as well as traditional UI development. PyQt6 is a comprehensive set of Python bindings for Qt v6. It is implemented as more than 35 extension modules and enables Python to be used as an alternative application development language to C++ on all supported platforms including iOS and Android. PyQt6 may also be embedded in C++ based applications to allow users of those applications to configure or enhance the functionality of those applications. Author ------ PyQt6 is copyright (c) Riverbank Computing Limited. Its homepage is https://www.riverbankcomputing.com/software/pyqt/. Support may be obtained from the PyQt mailing list at https://www.riverbankcomputing.com/mailman/listinfo/pyqt/. License ------- PyQt6 is released under the GPL v3 license and under a commercial license that allows for the development of proprietary applications. Documentation ------------- The documentation for the latest release can be found `here `__. Installation ------------ The GPL version of PyQt6 can be installed from PyPI:: pip install PyQt6 ``pip`` will also build and install the bindings from the sdist package but Qt's ``qmake`` tool must be on ``PATH``. The ``sip-install`` tool will also install the bindings from the sdist package but will allow you to configure many aspects of the installation. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.322415 PyQt6-6.6.1/README0000644000076500000240000000330714532160372012254 0ustar00philstaffPyQt6 - Comprehensive Python Bindings for Qt v6 =============================================== Qt is set of cross-platform C++ libraries that implement high-level APIs for accessing many aspects of modern desktop and mobile systems. These include location and positioning services, multimedia, NFC and Bluetooth connectivity, a Chromium based web browser, as well as traditional UI development. PyQt6 is a comprehensive set of Python bindings for Qt v6. It is implemented as more than 35 extension modules and enables Python to be used as an alternative application development language to C++ on all supported platforms including iOS and Android. PyQt6 may also be embedded in C++ based applications to allow users of those applications to configure or enhance the functionality of those applications. Author ------ PyQt6 is copyright (c) Riverbank Computing Limited. Its homepage is https://www.riverbankcomputing.com/software/pyqt/. Support may be obtained from the PyQt mailing list at https://www.riverbankcomputing.com/mailman/listinfo/pyqt/. License ------- PyQt6 is released under the GPL v3 license and under a commercial license that allows for the development of proprietary applications. Documentation ------------- The documentation for the latest release can be found `here `__. Installation ------------ The GPL version of PyQt6 can be installed from PyPI:: pip install PyQt6 ``pip`` will also build and install the bindings from the sdist package but Qt's ``qmake`` tool must be on ``PATH``. The ``sip-install`` tool will also install the bindings from the sdist package but will allow you to configure many aspects of the installation. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0664685 PyQt6-6.6.1/__init__.py0000644000076500000240000000170014532160372013500 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # Support PyQt6 sub-packages that have been created by setuptools. __path__ = __import__('pkgutil').extend_path(__path__, __name__) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.331812 PyQt6-6.6.1/config-tests/0000755000076500000240000000000014532160402013770 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0639577 PyQt6-6.6.1/config-tests/cfgtest_QtCore.cpp0000644000076500000240000000152014532160372017414 0ustar00philstaff#include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // This is not a feature and needs to be handled separately. #if defined(QT_SHARED) || defined(QT_DLL) out << "shared\n"; #else out << "static\n"; #endif // Determine which features should be disabled. #if defined(QT_NO_PROCESS) out << "PyQt_Process\n"; #endif // qreal is double unless QT_COORD_TYPE is defined. if (sizeof (qreal) != sizeof (double)) out << "PyQt_qreal_double\n"; #if QT_VERSION < 0x060500 || !QT_CONFIG(permissions) out << "PyQt_Permissions"; #endif return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0615776 PyQt6-6.6.1/config-tests/cfgtest_QtGui.cpp0000644000076500000240000000145514532160372017257 0ustar00philstaff#include #include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QFont(); // Determine which features should be disabled. #if defined(QT_NO_ACCESSIBILITY) out << "PyQt_Accessibility\n"; #endif #if !QT_CONFIG(opengles2) out << "PyQt_OpenGL_ES2\n"; #if defined(QT_NO_OPENGL) out << "PyQt_OpenGL\n"; #endif #endif #if defined(QT_NO_RAWFONT) out << "PyQt_RawFont\n"; #endif #if defined(QT_NO_SESSIONMANAGER) out << "PyQt_SessionManager\n"; #endif return 0; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.065007 PyQt6-6.6.1/config-tests/cfgtest_QtNetwork.cpp0000644000076500000240000000107114532160372020156 0ustar00philstaff#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QHostAddress(); // Determine which features should be disabled. #if !QT_CONFIG(ssl) out << "PyQt_SSL\n"; #endif #if !QT_CONFIG(dtls) out << "PyQt_DTLS\n"; #endif return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0629478 PyQt6-6.6.1/config-tests/cfgtest_QtPrintSupport.cpp0000644000076500000240000000136014532160372021217 0ustar00philstaff#include #include #include #include #include int main(int argc, char **argv) { QCoreApplication app(argc, argv); QFile outf(argv[1]); if (!outf.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text)) return 1; QTextStream out(&outf); // The link test. new QPrinter(); // Determine which features should be disabled. #if defined(QT_NO_PRINTER) out << "PyQt_Printer\n"; #endif #if !QT_CONFIG(printdialog) out << "PyQt_PrintDialog\n"; #endif #if !QT_CONFIG(printpreviewdialog) out << "PyQt_PrintPreviewDialog\n"; #endif #if !QT_CONFIG(printpreviewwidget) out << "PyQt_PrintPreviewWidget\n"; #endif return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3296802 PyQt6-6.6.1/dbus/0000755000076500000240000000000014532160402012320 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3150344 PyQt6-6.6.1/dbus/dbus.cpp0000644000076500000240000002612014532160372013770 0ustar00philstaff// This is the SIP interface definition for the Qt support for the standard // Python DBus bindings. // // Copyright (c) 2021 Riverbank Computing Limited // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, copy, // modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #include #include #include #include #include #include "helper.h" // The callback to add a watch. extern "C" {static dbus_bool_t add_watch(DBusWatch *watch, void *data);} static dbus_bool_t add_watch(DBusWatch *watch, void *data) { pyqt6DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt6DBusHelper::Watcher watcher; watcher.watch = watch; if (flags & DBUS_WATCH_READABLE) { watcher.read = new QSocketNotifier(fd, QSocketNotifier::Read, hlp); watcher.read->setEnabled(enabled); hlp->connect(watcher.read, SIGNAL(activated(int)), SLOT(readSocket(int))); } if (flags & DBUS_WATCH_WRITABLE) { watcher.write = new QSocketNotifier(fd, QSocketNotifier::Write, hlp); watcher.write->setEnabled(enabled); hlp->connect(watcher.write, SIGNAL(activated(int)), SLOT(writeSocket(int))); } hlp->watchers.insert(fd, watcher); return true; } // The callback to remove a watch. extern "C" {static void remove_watch(DBusWatch *watch, void *data);} static void remove_watch(DBusWatch *watch, void *data) { pyqt6DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); pyqt6DBusHelper::Watchers::iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { pyqt6DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (watcher.read) delete watcher.read; if (watcher.write) delete watcher.write; hlp->watchers.erase(it); return; } ++it; } } // The callback to toggle a watch. extern "C" {static void toggle_watch(DBusWatch *watch, void *data);} static void toggle_watch(DBusWatch *watch, void *data) { pyqt6DBusHelper *hlp = reinterpret_cast(data); int fd = dbus_watch_get_fd(watch); unsigned int flags = dbus_watch_get_flags(watch); dbus_bool_t enabled = dbus_watch_get_enabled(watch); pyqt6DBusHelper::Watchers::const_iterator it = hlp->watchers.find(fd); while (it != hlp->watchers.end() && it.key() == fd) { const pyqt6DBusHelper::Watcher &watcher = it.value(); if (watcher.watch == watch) { if (flags & DBUS_WATCH_READABLE && watcher.read) watcher.read->setEnabled(enabled); if (flags & DBUS_WATCH_WRITABLE && watcher.write) watcher.write->setEnabled(enabled); return; } ++it; } } // The callback to add a timeout. extern "C" {static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data);} static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) { // Nothing to do if the timeout is disabled. if (!dbus_timeout_get_enabled(timeout)) return true; // Pretend it is successful if there is no application instance. This can // happen if the global application gets garbage collected before the // dbus-python main loop does. if (!QCoreApplication::instance()) return true; pyqt6DBusHelper *hlp = reinterpret_cast(data); int id = hlp->startTimer(dbus_timeout_get_interval(timeout)); if (!id) return false; hlp->timeouts[id] = timeout; return true; } // The callback to remove a timeout. extern "C" {static void remove_timeout(DBusTimeout *timeout, void *data);} static void remove_timeout(DBusTimeout *timeout, void *data) { pyqt6DBusHelper *hlp = reinterpret_cast(data); pyqt6DBusHelper::Timeouts::iterator it = hlp->timeouts.begin(); while (it != hlp->timeouts.end()) if (it.value() == timeout) { hlp->killTimer(it.key()); it = hlp->timeouts.erase(it); } else ++it; } // The callback to toggle a timeout. extern "C" {static void toggle_timeout(DBusTimeout *timeout, void *data);} static void toggle_timeout(DBusTimeout *timeout, void *data) { remove_timeout(timeout, data); add_timeout(timeout, data); } // The callback to delete a helper instance. extern "C" {static void dbus_qt_delete_helper(void *data);} static void dbus_qt_delete_helper(void *data) { delete reinterpret_cast(data); } // The callback to wakeup the event loop. extern "C" {static void wakeup_main(void *data);} static void wakeup_main(void *data) { pyqt6DBusHelper *hlp = reinterpret_cast(data); QTimer::singleShot(0, hlp, SLOT(dispatch())); } // The callback to set up a DBus connection. extern "C" {static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data);} static dbus_bool_t dbus_qt_conn(DBusConnection *conn, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS pyqt6DBusHelper *hlp = reinterpret_cast(data); hlp->connections.append(conn); if (!dbus_connection_set_watch_functions(conn, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_connection_set_timeout_functions(conn, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; dbus_connection_set_wakeup_main_function(conn, wakeup_main, hlp, 0); Py_END_ALLOW_THREADS return rc; } // The callback to set up a DBus server. extern "C" {static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data);} static dbus_bool_t dbus_qt_srv(DBusServer *srv, void *data) { bool rc; Py_BEGIN_ALLOW_THREADS if (!dbus_server_set_watch_functions(srv, add_watch, remove_watch, toggle_watch, data, 0)) rc = false; else if (!dbus_server_set_timeout_functions(srv, add_timeout, remove_timeout, toggle_timeout, data, 0)) rc = false; else rc = true; Py_END_ALLOW_THREADS return rc; } // Create a new helper instance. pyqt6DBusHelper::pyqt6DBusHelper() : QObject() { } // Handle a socket being ready to read. void pyqt6DBusHelper::readSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.read && watcher.read->isEnabled()) { watcher.read->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_READABLE); // The notifier could have just been destroyed. if (watcher.read) watcher.read->setEnabled(true); break; } ++it; } dispatch(); } // Handle a socket being ready to write. void pyqt6DBusHelper::writeSocket(int fd) { Watchers::const_iterator it = watchers.find(fd); while (it != watchers.end() && it.key() == fd) { const Watcher &watcher = it.value(); if (watcher.write && watcher.write->isEnabled()) { watcher.write->setEnabled(false); dbus_watch_handle(watcher.watch, DBUS_WATCH_WRITABLE); // The notifier could have just been destroyed. if (watcher.write) watcher.write->setEnabled(true); break; } ++it; } } // Handoff to the connection dispatcher while there is data. void pyqt6DBusHelper::dispatch() { for (Connections::const_iterator it = connections.constBegin(); it != connections.constEnd(); ++it) while (dbus_connection_dispatch(*it) == DBUS_DISPATCH_DATA_REMAINS) ; } // Reimplemented to handle timer events. void pyqt6DBusHelper::timerEvent(QTimerEvent *e) { DBusTimeout *timeout = timeouts.value(e->timerId()); if (timeout) dbus_timeout_handle(timeout); } PyDoc_STRVAR(DBusQtMainLoop__doc__, "DBusQtMainLoop([set_as_default=False]) -> NativeMainLoop\n" "\n" "Return a NativeMainLoop object.\n" "\n" "If the keyword argument set_as_default is given and is True, set the new\n" "main loop as the default for all new Connection or Bus instances.\n"); extern "C" {static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs);} static PyObject *DBusQtMainLoop(PyObject *, PyObject *args, PyObject *kwargs) { if (PyTuple_Size(args) != 0) { PyErr_SetString(PyExc_TypeError, "DBusQtMainLoop() takes no positional arguments"); return 0; } int set_as_default = 0; static char *argnames[] = {"set_as_default", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i", argnames, &set_as_default)) return 0; pyqt6DBusHelper *hlp = new pyqt6DBusHelper; PyObject *mainloop = DBusPyNativeMainLoop_New4(dbus_qt_conn, dbus_qt_srv, dbus_qt_delete_helper, hlp); if (!mainloop) { delete hlp; return 0; } if (set_as_default) { PyObject *func = PyObject_GetAttrString(_dbus_bindings_module, "set_default_main_loop"); if (!func) { Py_DECREF(mainloop); return 0; } PyObject *res = PyObject_CallFunctionObjArgs(func, mainloop, 0); Py_DECREF(func); if (!res) { Py_DECREF(mainloop); return 0; } Py_DECREF(res); } return mainloop; } // The table of module functions. static PyMethodDef module_functions[] = { {"DBusQtMainLoop", (PyCFunction)DBusQtMainLoop, METH_VARARGS|METH_KEYWORDS, DBusQtMainLoop__doc__}, {0, 0, 0, 0} }; // The module entry point. PyMODINIT_FUNC PyInit_pyqt6() { static PyModuleDef module_def = { PyModuleDef_HEAD_INIT, "pyqt6", NULL, -1, module_functions, }; // Import the generic part of the Python DBus bindings. if (import_dbus_bindings("dbus.mainloop.pyqt6") < 0) return 0; return PyModule_Create(&module_def); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3128943 PyQt6-6.6.1/dbus/helper.h0000644000076500000240000000402314532160372013755 0ustar00philstaff// This is the declaration of the helper class for the Qt specific support for // the standard Python DBus bindings. // // Copyright (c) 2020 Riverbank Computing Limited // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, copy, // modify, merge, publish, distribute, sublicense, and/or sell copies // of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #include #include #include #include #include #include #include class QTimerEvent; class pyqt6DBusHelper : public QObject { Q_OBJECT public: struct Watcher { Watcher() : watch(0), read(0), write(0) {} DBusWatch *watch; QPointer read; QPointer write; }; typedef QMultiHash Watchers; typedef QHash Timeouts; typedef QListConnections; pyqt6DBusHelper(); Watchers watchers; Timeouts timeouts; Connections connections; public slots: void readSocket(int fd); void writeSocket(int fd); void dispatch(); protected: void timerEvent(QTimerEvent *e); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4571407 PyQt6-6.6.1/designer/0000755000076500000240000000000014532160402013163 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3156886 PyQt6-6.6.1/designer/designer.pro-in0000644000076500000240000000066314532160372016124 0ustar00philstaffCONFIG += plugin @QTCONFIG@ warn_on QT += designer # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt6 TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ LIBS += @PYLINK@ DEFINES += PYTHON_LIB=\\\"@PYSHLIB@\\\" SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3176727 PyQt6-6.6.1/designer/pluginloader.cpp0000644000076500000240000002201514532160372016362 0ustar00philstaff/* * This is the Qt Designer plugin that collects all the Python plugins it can * find as a widget collection to Designer. * * Copyright (c) 2023 Riverbank Computing Limited * * This file is part of PyQt6. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include "pluginloader.h" #include #include #include #include #include #include #include #include #include #include "../qpy/QtDesigner/qpydesignercustomwidgetplugin.h" // Construct the collection of Python widgets. PyCustomWidgets::PyCustomWidgets(QObject *parent) : QObject(parent), sys_path(0), sip_unwrapinstance(0), qtdesigner_custom(0) { // Get the default list of directories to search. These correspond to a // standard "python" subdirectory of all the places that Designer looks for // its own plugins. QStringList default_dirs; QStringList path_list = QCoreApplication::libraryPaths(); foreach (const QString &path, path_list) default_dirs.append(path + QDir::separator() + QLatin1String("designer") + QDir::separator() + QLatin1String("python")); default_dirs.append(QDir::homePath() + QDir::separator() + QLatin1String(".designer") + QDir::separator() + QLatin1String("plugins") + QDir::separator() + QLatin1String("python")); // Get the list of directories to search. QStringList dirs; char *pyqt_path = getenv("PYQTDESIGNERPATH"); if (pyqt_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList pyqt_dirs = QString::fromLatin1(pyqt_path).split(sep); for (QStringList::const_iterator it = pyqt_dirs.constBegin(); it != pyqt_dirs.constEnd(); ++it) if ((*it).isEmpty()) dirs << default_dirs; else dirs.append(QDir(*it).canonicalPath()); } else dirs = default_dirs; // Go through each directory. for (int i = 0; i < dirs.size(); ++i) { QString dir = dirs.at(i); // Get a list of all candidate plugin modules. We sort by name to // provide control over the order they are imported. QStringList candidates = QDir(dir).entryList(QDir::Files, QDir::Name); QStringList plugins; for (int p = 0; p < candidates.size(); ++p) { QStringList parts = candidates.at(p).split('.'); if (parts.size() != 2) continue; if (!parts.at(1).startsWith("py")) continue; const QString &plugin = parts.at(0); if (!plugin.endsWith("plugin")) continue; if (plugins.contains(plugin)) continue; plugins.append(plugin); } // Skip if there is nothing of interest in this directory. if (!plugins.size()) continue; // Make sure the interpreter is initialised. Leave this as late as // possible. if (!Py_IsInitialized()) { QLibrary library(PYTHON_LIB); library.setLoadHints(QLibrary::ExportExternalSymbolsHint); if (!library.load()) return; // If we seem to be running in a venv the set the program name // explicitly so that Python finds the right site-packages. QString venv = QString::fromLocal8Bit(qgetenv("VIRTUAL_ENV")); if (!venv.isEmpty()) { venv.append(QDir::separator()); #if defined(Q_OS_WIN) venv.append(QLatin1String("Scripts")); #else venv.append(QLatin1String("bin")); #endif venv.append(QDir::separator()).append(QLatin1String("python")); wchar_t *venv_wc = new wchar_t[venv.length() + 1]; venv_wc[venv.toWCharArray(venv_wc)] = L'\0'; Py_SetProgramName(venv_wc); delete[] venv_wc; } Py_Initialize(); #ifdef WITH_THREAD // Make sure we don't have the GIL. #if PY_VERSION_HEX < 0x03070000 PyEval_InitThreads(); #endif PyEval_SaveThread(); #endif } // Import the plugins with the GIL held. #if defined(WITH_THREAD) PyGILState_STATE gil_state = PyGILState_Ensure(); #endif bool fatal = importPlugins(dir, plugins); #if defined(WITH_THREAD) PyGILState_Release(gil_state); #endif if (fatal) break; } } // Import the plugins from a directory. bool PyCustomWidgets::importPlugins(const QString &dir, const QStringList &plugins) { // Make sure we have sys.path. if (!sys_path) { sys_path = getModuleAttr("sys", "path"); if (!sys_path) return true; } // Make sure we have sip.unwrapinstance. if (!sip_unwrapinstance) { sip_unwrapinstance = getModuleAttr("PyQt6.sip", "unwrapinstance"); if (!sip_unwrapinstance) return true; } // Convert the directory to a Python object with native separators. QString native_dir = QDir::toNativeSeparators(dir); PyObject *dobj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, native_dir.constData(), native_dir.length()); if (!dobj) { PyErr_Print(); return false; } // Add the directory to sys.path. int rc = PyList_Append(sys_path, dobj); Py_DECREF(dobj); if (rc < 0) { PyErr_Print(); return false; } // Import each plugin. for (int plug = 0; plug < plugins.size(); ++plug) { PyObject *plug_mod = PyImport_ImportModule(plugins.at(plug).toLatin1().data()); if (!plug_mod) { PyErr_Print(); continue; } // Make sure we have QPyDesignerCustomWidgetPlugin. We make sure this // is after the import of the first plugin to allow that plugin to // change any API versions. if (!qtdesigner_custom) { qtdesigner_custom = getModuleAttr("PyQt6.QtDesigner", "QPyDesignerCustomWidgetPlugin"); if (!qtdesigner_custom) return true; } // Go through the module looking for types that implement // QDesignerCustomWidgetInterface (ie. by deriving from // QPyDesignerCustomWidgetPlugin). PyObject *mod_dict = PyModule_GetDict(plug_mod); PyObject *key, *value; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) { if (!PyType_Check(value)) continue; if (value == qtdesigner_custom) continue; if (!PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)qtdesigner_custom)) continue; // Create the plugin instance. Note that we don't give it a // parent, which make things easier. It also means that Python // owns the instance so we don't decrement the reference count so // that it doesn't get garbage collected. PyObject *plugobj = PyObject_CallObject(value, NULL); if (!plugobj) { PyErr_Print(); continue; } // Get the address of the C++ instance. PyObject *plugaddr = PyObject_CallFunctionObjArgs(sip_unwrapinstance, plugobj, NULL); if (!plugaddr) { Py_DECREF(plugobj); PyErr_Print(); continue; } void *addr = PyLong_AsVoidPtr(plugaddr); Py_DECREF(plugaddr); widgets.append(reinterpret_cast(addr)); } Py_DECREF(plug_mod); } // No fatal errors. return false; } // Return the list of custom widgets. QList PyCustomWidgets::customWidgets() const { return widgets; } // Return the named attribute object from the named module. PyObject *PyCustomWidgets::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) { PyErr_Print(); return 0; } PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); if (!obj) { PyErr_Print(); return 0; } return obj; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3182204 PyQt6-6.6.1/designer/pluginloader.h0000644000076500000240000000367614532160372016043 0ustar00philstaff/* * This is the interface of the Qt Designer plugin. * * Copyright (c) 2023 Riverbank Computing Limited * * This file is part of PyQt6. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include QT_BEGIN_NAMESPACE class QDesignerCustomWidgetInterface; QT_END_NAMESPACE class PyCustomWidgets : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface") Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: PyCustomWidgets(QObject *parent = 0); virtual QList customWidgets() const; private: bool importPlugins(const QString &dir, const QStringList &plugins); static PyObject *getModuleAttr(const char *module, const char *attr); // The sys.path object if we need it. PyObject *sys_path; // The sip.unwrapinstance object if we need it. PyObject *sip_unwrapinstance; // The PyQt6.QtDesigner.QPyDesignerCustomWidgetPlugin object if we need it. PyObject *qtdesigner_custom; QList widgets; }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4553542 PyQt6-6.6.1/examples/0000755000076500000240000000000014532160402013201 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.447481 PyQt6-6.6.1/examples/designer/0000755000076500000240000000000014532160402015001 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4483643 PyQt6-6.6.1/examples/designer/calculatorform/0000755000076500000240000000000014532160402020016 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618379 PyQt6-6.6.1/examples/designer/calculatorform/calculatorform.py0000644000076500000240000000536514532151332023420 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtSlot from PyQt6.QtWidgets import QApplication, QWidget from ui_calculatorform import Ui_CalculatorForm class CalculatorForm(QWidget): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_CalculatorForm() self.ui.setupUi(self) @pyqtSlot(int) def on_inputSpinBox1_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox2.value())) @pyqtSlot(int) def on_inputSpinBox2_valueChanged(self, value): self.ui.outputWidget.setText(str(value + self.ui.inputSpinBox1.value())) if __name__ == '__main__': import sys app = QApplication(sys.argv) calculator = CalculatorForm() calculator.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623746 PyQt6-6.6.1/examples/designer/calculatorform/calculatorform.ui0000644000076500000240000001575614532151332023412 0ustar00philstaff CalculatorForm CalculatorForm 0 0 400 300 5 5 0 0 Calculator Form 9 6 horizontalSpacer 239 9 152 52 Qt::Horizontal 40 20 label_3_2 169 9 20 52 = Qt::AlignCenter 1 6 label_2_2_2 1 1 36 17 Output outputWidget 1 24 36 27 QFrame::Box QFrame::Sunken 0 Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask verticalSpacer 89 67 20 224 Qt::Vertical 20 40 1 6 label_2 1 1 46 19 Input 2 inputSpinBox2 1 26 46 25 label_3 63 9 20 52 + Qt::AlignCenter 1 6 label 1 1 46 19 Input 1 inputSpinBox1 1 26 46 25 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.619763 PyQt6-6.6.1/examples/designer/calculatorform/ui_calculatorform.py0000644000076500000240000001264214532151332024111 0ustar00philstaff# Form implementation generated from reading ui file 'calculatorform.ui' # # Created by: PyQt6 UI code generator 6.1.0.dev2103211315 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from PyQt6 import QtCore, QtGui, QtWidgets class Ui_CalculatorForm(object): def setupUi(self, CalculatorForm): CalculatorForm.setObjectName("CalculatorForm") CalculatorForm.resize(400, 300) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy(5), QtWidgets.QSizePolicy.Policy(5)) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(CalculatorForm.sizePolicy().hasHeightForWidth()) CalculatorForm.setSizePolicy(sizePolicy) self.gridlayout = QtWidgets.QGridLayout(CalculatorForm) self.gridlayout.setContentsMargins(9, 9, 9, 9) self.gridlayout.setSpacing(6) self.gridlayout.setObjectName("gridlayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) self.gridlayout.addItem(spacerItem, 0, 6, 1, 1) self.label_3_2 = QtWidgets.QLabel(CalculatorForm) self.label_3_2.setGeometry(QtCore.QRect(169, 9, 20, 52)) self.label_3_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_3_2.setObjectName("label_3_2") self.gridlayout.addWidget(self.label_3_2, 0, 4, 1, 1) self.vboxlayout = QtWidgets.QVBoxLayout() self.vboxlayout.setContentsMargins(1, 1, 1, 1) self.vboxlayout.setSpacing(6) self.vboxlayout.setObjectName("vboxlayout") self.label_2_2_2 = QtWidgets.QLabel(CalculatorForm) self.label_2_2_2.setGeometry(QtCore.QRect(1, 1, 36, 17)) self.label_2_2_2.setObjectName("label_2_2_2") self.vboxlayout.addWidget(self.label_2_2_2) self.outputWidget = QtWidgets.QLabel(CalculatorForm) self.outputWidget.setGeometry(QtCore.QRect(1, 24, 36, 27)) self.outputWidget.setFrameShape(QtWidgets.QFrame.Shape.Box) self.outputWidget.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) self.outputWidget.setAlignment(QtCore.Qt.AlignmentFlag.AlignAbsolute|QtCore.Qt.AlignmentFlag.AlignBottom|QtCore.Qt.AlignmentFlag.AlignCenter|QtCore.Qt.AlignmentFlag.AlignHCenter|QtCore.Qt.AlignmentFlag.AlignHorizontal_Mask|QtCore.Qt.AlignmentFlag.AlignJustify|QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTop|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter|QtCore.Qt.AlignmentFlag.AlignVertical_Mask) self.outputWidget.setObjectName("outputWidget") self.vboxlayout.addWidget(self.outputWidget) self.gridlayout.addLayout(self.vboxlayout, 0, 5, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridlayout.addItem(spacerItem1, 1, 2, 1, 1) self.vboxlayout1 = QtWidgets.QVBoxLayout() self.vboxlayout1.setContentsMargins(1, 1, 1, 1) self.vboxlayout1.setSpacing(6) self.vboxlayout1.setObjectName("vboxlayout1") self.label_2 = QtWidgets.QLabel(CalculatorForm) self.label_2.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label_2.setObjectName("label_2") self.vboxlayout1.addWidget(self.label_2) self.inputSpinBox2 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox2.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox2.setObjectName("inputSpinBox2") self.vboxlayout1.addWidget(self.inputSpinBox2) self.gridlayout.addLayout(self.vboxlayout1, 0, 3, 1, 1) self.label_3 = QtWidgets.QLabel(CalculatorForm) self.label_3.setGeometry(QtCore.QRect(63, 9, 20, 52)) self.label_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_3.setObjectName("label_3") self.gridlayout.addWidget(self.label_3, 0, 1, 1, 1) self.vboxlayout2 = QtWidgets.QVBoxLayout() self.vboxlayout2.setContentsMargins(1, 1, 1, 1) self.vboxlayout2.setSpacing(6) self.vboxlayout2.setObjectName("vboxlayout2") self.label = QtWidgets.QLabel(CalculatorForm) self.label.setGeometry(QtCore.QRect(1, 1, 46, 19)) self.label.setObjectName("label") self.vboxlayout2.addWidget(self.label) self.inputSpinBox1 = QtWidgets.QSpinBox(CalculatorForm) self.inputSpinBox1.setGeometry(QtCore.QRect(1, 26, 46, 25)) self.inputSpinBox1.setObjectName("inputSpinBox1") self.vboxlayout2.addWidget(self.inputSpinBox1) self.gridlayout.addLayout(self.vboxlayout2, 0, 0, 1, 1) self.retranslateUi(CalculatorForm) QtCore.QMetaObject.connectSlotsByName(CalculatorForm) def retranslateUi(self, CalculatorForm): _translate = QtCore.QCoreApplication.translate CalculatorForm.setWindowTitle(_translate("CalculatorForm", "Calculator Form")) self.label_3_2.setText(_translate("CalculatorForm", "=")) self.label_2_2_2.setText(_translate("CalculatorForm", "Output")) self.outputWidget.setText(_translate("CalculatorForm", "0")) self.label_2.setText(_translate("CalculatorForm", "Input 2")) self.label_3.setText(_translate("CalculatorForm", "+")) self.label.setText(_translate("CalculatorForm", "Input 1")) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4438365 PyQt6-6.6.1/examples/designer/plugins/0000755000076500000240000000000014532160402016462 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.608631 PyQt6-6.6.1/examples/designer/plugins/plugins.py0000644000076500000240000000677214532151332020533 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys import os from PyQt6.QtCore import QLibraryInfo, QProcess, QProcessEnvironment from PyQt6.QtWidgets import QApplication, QMessageBox app = QApplication(sys.argv) QMessageBox.information(None, "PyQt Designer Plugins", "

This example will start Qt Designer when you click the OK " "button.

" "

Before doing so it sets the PYQTDESIGNERPATH environment " "variable to the python directory that is part of this " "example. This directory contains all the example Python plugin " "modules.

" "

It also sets the PYTHONPATH environment variable to the " "widgets directory that is also part of this example. This " "directory contains the Python modules that implement the example " "custom widgets.

" "

All of the example custom widgets should then appear in " "Designer's widget box in the PyQt Examples group.

") # Tell Qt Designer where it can find the directory containing the plugins and # Python where it can find the widgets. base = os.path.dirname(__file__) env = QProcessEnvironment.systemEnvironment() env.insert('PYQTDESIGNERPATH', os.path.join(base, 'python')) env.insert('PYTHONPATH', os.path.join(base, 'widgets')) # Start Designer. designer = QProcess() designer.setProcessEnvironment(env) designer_bin = QLibraryInfo.path(QLibraryInfo.LibraryPath.BinariesPath) if sys.platform == 'darwin': designer_bin += '/Designer.app/Contents/MacOS/Designer' else: designer_bin += '/designer' designer.start(designer_bin) designer.waitForFinished(-1) sys.exit(designer.exitCode()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4434605 PyQt6-6.6.1/examples/designer/plugins/python/0000755000076500000240000000000014532160402020003 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.608909 PyQt6-6.6.1/examples/designer/plugins/python/analogclockplugin.py0000644000076500000240000001265414532151332024063 0ustar00philstaff""" analogclockplugin.py An analog clock custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from analogclock import PyAnalogClock class PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin): """PyAnalogClockPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PyAnalogClock(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PyAnalogClock" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' The current time\n' \ ' \n' \ ' \n' \ ' The analog clock widget displays the current ' \ 'time.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "analogclock" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 58 1", "L c #2d2d2d", "N c #4f4f4f", "K c #636363", "J c #666666", "I c #696969", "D c #727272", "F c #737373", "O c #757575", "G c #7f7f7f", "o c #878787", "t c #888888", "Y c #898989", "c c #8a8a8a", "d c #8b8b8b", "H c #8d8d8d", "Q c #8f8f8f", "b c #909090", "M c #959595", "g c #979797", "n c #989898", "x c #999999", "0 c #9a9a9a", "X c #9b9b9b", "a c #9d9d9d", "E c #9e9e9e", "1 c #9f9f9f", "T c #a0a0a0", "v c #a1a1a1", "r c #a2a2a2", "B c #a6a6a6", "R c #a7a7a7", "3 c #a8a8a8", "z c #aaaaaa", "A c #ababab", "m c #acacac", "h c #adadad", "u c #b1b1b1", "q c #b2b2b2", "V c #bfbfbf", "W c #c6c6c6", "w c #c7c7c7", "s c #c8c8c8", "p c #c9c9c9", "k c #cdcdcd", "l c #cfcfcf", "2 c #d3d3d3", "S c #d4d4d4", "C c #d5d5d5", "y c #d8d8d8", "# c #d9d9d9", "e c #dadada", "i c #dbdbdb", "P c #dcdcdc", "U c #dfdfdf", "j c #e1e1e1", "f c #fbfbfb", "Z c #fcfcfc", ". c #ffffff", "....#abcdbae....", "..fghijkljimnf..", ".fopjjjqrjjjstf.", ".gsjjjjuvjjjjwx.", "yvjjjjjzbjjjjjAi", "BCjjjjjaDjjjjjiE", "bjjjjjjEFjjjjjjG", "HjjjjjjIJjjjjjjc", "HjjjjjjnKLtjjjjc", "bjjjjjjj#MNOPjjQ", "RSjjjjjjjj#mdPiE", "#TjjjjjjjjjjUjzP", ".nVjjjjjjjjjjWX.", ".fEVjjjjjjjjWYZ.", "..f012jjjj2EXZ..", "....i3QccQ3P...."] _logo_pixmap = QPixmap(_logo_16x16_xpm) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.611262 PyQt6-6.6.1/examples/designer/plugins/python/bubbleswidgetplugin.py0000644000076500000240000001176214532151332024427 0ustar00philstaff""" bubbleswidgetplugin.py A bubbles widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from bubbleswidget import BubblesWidget class BubblesPlugin(QPyDesignerCustomWidgetPlugin): """BubblesPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return BubblesWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "BubblesWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Click and drag here\n' \ ' \n' \ ' \n' \ ' The bubbles widget displays colorful ' \ 'bubbles.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "bubbleswidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 48 1", "O c #d0cfcf", "d c #d0d0d0", "i c #d3d3d2", "q c #d3d3d3", "M c #dad7d7", "g c #dad8d7", "e c #dcd9d9", "f c #e0dcdc", "c c #e0e0e0", "L c #e1dddb", "D c #e1dddc", "E c #e1e0e0", "R c #e1e1e1", "Q c #e2dedc", "p c #e2dedd", "j c #e3dfdf", "b c #e7e7e7", "S c #ebe4e3", "z c #ebe5e3", "r c #ece6e8", "a c #eeeeee", "N c #f6edeb", "I c #f6eeed", "o c #f6eeee", "h c #f7f7f7", "K c #f8efee", "C c #f8efef", "T c #f8f8f8", "y c #f9f1f0", "H c #f9f1f1", "n c #f9f1f2", "m c #f9f1f3", "k c #f9f2f4", "x c #faf3f5", "l c #faf3f6", "w c #faf3f7", "G c #faf3f8", "v c #fbf5fa", "s c #fbf5fb", "u c #fbf5fc", "t c #fbf5fd", "# c #fbfbfb", "J c #fcf6fe", "B c #fcf7fe", "P c #fcfcfc", "F c #fdf8ff", "A c #fefbff", ". c #ffffff", ".....#abba#.....", "...#cdeffgdc#...", "..hijkllmnopqh..", ".#irstuvwxnyzq#.", ".cjs.ABuvwknCDE.", "#dktAAFtsGlmHId#", "aeluBFJusGlmHKga", "bflvutusvGlmHKLb", "bfmwvssvGwxmHKLb", "agnxwGGGwlmnyKMa", "#donklllxmnHCNOP", ".cpynmmmmnHCKQR.", ".#qzCHHHHyCKSqP.", "..hqDIKKKKNQqT..", "...#EdgLLMORP...", ".....#abbaP....."] _logo_pixmap = QPixmap(_logo_16x16_xpm) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.716232 PyQt6-6.6.1/examples/designer/plugins/python/counterlabelplugin.py0000644000076500000240000000656714532151332024273 0ustar00philstaff""" counterlabelplugin.py A counter label custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from counterlabel import CounterLabel class CounterLabelPlugin(QPyDesignerCustomWidgetPlugin): """CounterLabelPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): widget = CounterLabel(parent) widget.setValue(1) return widget # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "CounterLabel" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "counterlabel" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.615137 PyQt6-6.6.1/examples/designer/plugins/python/datetimeeditplugin.py0000644000076500000240000001046114532151332024242 0ustar00philstaff#============================================================================# # Designer plugins for PyDateEdit and PyDateTimeEdit # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt6.QtGui import QIcon from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from datetimeedit import PyDateEdit, PyDateTimeEdit #============================================================================# # The group name in designer widgetbox # #----------------------------------------------------------------------------# DESIGNER_GROUP_NAME = "PyQt Examples" #============================================================================# # Plugin for PyDateEdit # #----------------------------------------------------------------------------# class PyDateEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super().__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateEdit(parent) #============================================================================# # Plugin for PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEditPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super().__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def isContainer(self): return False def icon(self): return QIcon() def domXml(self): return '\n\n' def group(self): return DESIGNER_GROUP_NAME def includeFile(self): return "datetimeedit" def name(self): return "PyDateTimeEdit" def toolTip(self): return "" def whatsThis(self): return "" def createWidget(self, parent): return PyDateTimeEdit(parent) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.612347 PyQt6-6.6.1/examples/designer/plugins/python/helloglwidgetplugin.py0000644000076500000240000000675614532151332024446 0ustar00philstaff""" helloglwidgetplugin.py A simple OpenGL custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from helloglwidget import HelloGLWidget class HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin): """HelloGLWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return HelloGLWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "HelloGLWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon() # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "helloglwidget" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.615907 PyQt6-6.6.1/examples/designer/plugins/python/multipagewidgetplugin.py0000644000076500000240000001200614532151332024770 0ustar00philstaff#============================================================================# # PyQt6 port of the designer/containerextension example from Qt v4.x # #----------------------------------------------------------------------------# from PyQt6.QtGui import QIcon from PyQt6.QtDesigner import (QDesignerFormWindowInterface, QExtensionFactory, QPyDesignerContainerExtension, QPyDesignerCustomWidgetPlugin, QPyDesignerPropertySheetExtension) from PyQt6.sip import cast from multipagewidget import PyMultiPageWidget Q_TYPEID = { 'QDesignerContainerExtension': 'org.qt-project.Qt.Designer.Container', 'QDesignerPropertySheetExtension': 'org.qt-project.Qt.Designer.PropertySheet' } #============================================================================# # ContainerExtension # #----------------------------------------------------------------------------# class MultiPageWidgetContainerExtension(QPyDesignerContainerExtension): def __init__(self, widget, parent=None): super().__init__(parent) self._widget = widget def addWidget(self, widget): self._widget.addPage(widget) def count(self): return self._widget.count() def currentIndex(self): return self._widget.getCurrentIndex() def insertWidget(self, index, widget): self._widget.insertPage(index, widget) def remove(self, index): self._widget.removePage(index) def setCurrentIndex(self, index): self._widget.setCurrentIndex(index) def widget(self, index): return self._widget.widget(index) #============================================================================# # ExtensionFactory # #----------------------------------------------------------------------------# class MultiPageWidgetExtensionFactory(QExtensionFactory): def __init__(self, parent=None): super().__init__(parent) def createExtension(self, obj, iid, parent): if iid != Q_TYPEID['QDesignerContainerExtension']: return None if isinstance(obj, PyMultiPageWidget): return MultiPageWidgetContainerExtension(obj, parent) return None #============================================================================# # CustomWidgetPlugin # #----------------------------------------------------------------------------# class MultiPageWidgetPlugin(QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super().__init__(parent) self.initialized = False def initialize(self, formEditor): if self.initialized: return manager = formEditor.extensionManager() if manager: self.factory = MultiPageWidgetExtensionFactory(manager) manager.registerExtensions(self.factory, Q_TYPEID['QDesignerContainerExtension']) self.initialized = True def isInitialized(self): return self.initialized def createWidget(self, parent): widget = PyMultiPageWidget(parent) widget.currentIndexChanged.connect(self.currentIndexChanged) widget.pageTitleChanged.connect(self.pageTitleChanged) return widget def name(self): return "PyMultiPageWidget" def group(self): return "PyQt Examples" def icon(self): return QIcon() def toolTip(self): return "" def whatsThis(self): return "" def isContainer(self): return True def domXml(self): return ('' ' ' '') def includeFile(self): return "multipagewidget" def currentIndexChanged(self, index): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): form = QDesignerFormWindowInterface.findFormWindow(widget) if form: form.emitSelectionChanged() def pageTitleChanged(self, title): widget = self.sender() if widget and isinstance(widget, PyMultiPageWidget): page = widget.widget(widget.getCurrentIndex()) form = QDesignerFormWindowInterface.findFormWindow(widget) if form: editor = form.core() manager = editor.extensionManager() sheet = manager.extension(page, Q_TYPEID['QDesignerPropertySheetExtension']) # This explicit cast is necessary here sheet = cast(sheet, QPyDesignerPropertySheetExtension) propertyIndex = sheet.indexOf('windowTitle') sheet.setChanged(propertyIndex, True) #============================================================================# # EOF # #----------------------------------------------------------------------------# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.613334 PyQt6-6.6.1/examples/designer/plugins/python/polygonwidgetplugin.py0000644000076500000240000001115214532151332024471 0ustar00philstaff""" polygonwidgetplugin.py A polygon widget custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from polygonwidget import PolygonWidget class PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin): """PolygonWidgetPlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PolygonWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PolygonWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "polygonwidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 46 1", ". c #a5a5dc", "l c #a69fd6", "k c #a7a5da", "h c #a7a6dc", "a c #a7a7de", "Q c #a8a5da", "s c #a9a7d7", "R c #a9a9e0", "z c #abaad4", "E c #afafda", "M c #afafdb", "K c #b0a8e2", "o c #b1afe4", "p c #b2b2d7", "# c #b2b2ed", "i c #b39eb6", "F c #b3b3e1", "e c #b4b4ef", "t c #b58bab", "d c #b6b6f2", "n c #b798b8", "P c #b798b9", "c c #b8b6f2", "D c #b8b89c", "m c #b9648d", "J c #ba84b0", "A c #bdbdfb", "f c #bfbffe", "g c #c06996", "b c #c0c0ff", "B c #cbb889", "L c #cbb989", "O c #cfcf87", "I c #d09585", "w c #d0cf86", "x c #dede81", "G c #e8e87c", "q c #edde7b", "N c #f1e07b", "v c #f2e07b", "H c #f6e57c", "j c #fb917e", "u c #ffb580", "r c #ffda80", "C c #fffe80", "y c #ffff80", ".##############a", "#bbbbbbbbcdbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbijkbbbbe", "#blmnobpqrsbbbbe", "#bbtuvwxyyzbbbbe", "#bbABCyyyyDEfbbe", "#bbbFGyyyyyHIJKe", "#bbbFGyyyyyHIJKe", "#bbALCyyyyDMfbbe", "#bbtuNOxyyzbbbbe", "#blmPobpqrsbbbbe", "#bbbbbbbijQbbbbe", "#bbbbbbbfghbbbbe", "#bbbbbbbbcdbbbbe", "aeeeeeeeeeeeeeeR"] _logo_pixmap = QPixmap(_logo_16x16_xpm) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618752 PyQt6-6.6.1/examples/designer/plugins/python/pydemoplugin.py0000644000076500000240000001013014532151332023066 0ustar00philstaff# A demonstration custom widget plugin for Qt Designer. # # Copyright (c) 2021 Riverbank Computing Limited from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from pydemo import PyDemo # This class implements the interface expected by Qt Designer to access the # custom widget. See the description of the QDesignerCustomWidgetInterface # class for full details. class PyDemoPlugin(QPyDesignerCustomWidgetPlugin): # Initialise the instance. def __init__(self, parent=None): super().__init__(parent) self._initialized = False # Initialise the custom widget for use with the specified formEditor # interface. def initialize(self, formEditor): if self._initialized: return self._initialized = True # Return True if the custom widget has been intialised. def isInitialized(self): return self._initialized # Return a new instance of the custom widget with the given parent. def createWidget(self, parent): return PyDemo(parent) # Return the name of the class that implements the custom widget. def name(self): return "PyDemo" # Return the name of the group to which the custom widget belongs. A new # group will be created if it doesn't already exist. def group(self): return "PyQt Examples" # Return the icon used to represent the custom widget in Designer's widget # box. def icon(self): return QIcon(_logo_pixmap) # Return a short description of the custom widget used by Designer in a # tool tip. def toolTip(self): return "PyQt demonstration widget" # Return a full description of the custom widget used by Designer in # "What's This?" help for the widget. def whatsThis(self): return "PyDemo is a demonstration custom widget written in Python " \ "using PyQt." # Return True if the custom widget acts as a container for other widgets. def isContainer(self): return False # Return an XML fragment that allows the default values of the custom # widget's properties to be overridden. def domXml(self): return '\n' \ ' \n' \ ' PyQt demonstration widget\n' \ ' \n' \ ' \n' \ ' PyDemo is a demonstration custom widget written ' \ 'in Python using PyQt.\n' \ ' \n' \ '\n' # Return the name of the module containing the class that implements the # custom widget. It may include a module path. def includeFile(self): return "pydemo" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 61 1", "6 c #5bbd7c", "a c #7aaada", "h c #7eaddb", "n c #7faddb", "E c #82afdc", "x c #83b0dd", "C c #84b0dd", "z c #84b1dd", "B c #85b1dd", "u c #87b2de", "U c #9ec1e4", "Z c #9fc1e4", "H c #a1c3e5", "Y c #a5c5e4", "V c #a6c6e4", "P c #afcbe2", "S c #afcbe3", "O c #b1cde9", "T c #b2cee9", "t c #b4cee3", "r c #b5cee3", "q c #c2d8ee", "0 c #c7dbef", "f c #cedddb", "b c #cfdddb", "1 c #d0e1f2", "J c #d8e2d2", "I c #d9e2d2", "# c #dfeaf6", "g c #e3edf7", "K c #ecf2f9", "N c #ecf3f9", "o c #eeecbb", "i c #f2edb2", "l c #f2edb3", "w c #f6eea6", "v c #f7eea6", "W c #fcee8c", "m c #fcfdfe", "L c #fdec73", "k c #fedd00", "e c #fede06", "p c #fede07", "j c #fee013", "X c #fee015", "s c #fee223", "d c #fee32c", "A c #fee749", "Q c #fee850", "R c #fee851", "D c #fee854", "y c #feea65", "M c #feec74", "c c #feed7c", "F c #feee85", "G c #feee86", "5 c #fef095", "4 c #fef195", "3 c #fef6bb", "2 c #fefdf5", ". c #fefefe", "..#abcdeedcfa#..", ".ghijkkkkkkjlhg.", "mnopkkkkkkkkponm", "qrskkkkkkkkkkstq", "uvkkkkkkkkkkkkwu", "xykkkkkkkkkkkkyx", "zAkkkkkkkkkkkkAB", "CDkkkkkkkkkkkkDC", "EFkkkkkkkkkkkkGE", "HIekkkkkkkkkkeJH", "KBLkkkkkkkkkkMBN", ".OPQkkkkkkkkRST.", "..UVWXkkkkXWYZ..", "...0123453210...", "6666666666666666", "BBBBBBBBBBBBBBBB"] _logo_pixmap = QPixmap(_logo_16x16_xpm) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.620283 PyQt6-6.6.1/examples/designer/plugins/python/pythonconsoleplugin.py0000644000076500000240000001100414532151332024476 0ustar00philstaff""" pythonconsoleplugin.py A Python console custom widget plugin for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtDesigner import QPyDesignerCustomWidgetPlugin from pythonconsolewidget import PythonConsoleWidget class PythonConsolePlugin(QPyDesignerCustomWidgetPlugin): """PythonConsolePlugin(QPyDesignerCustomWidgetPlugin) Provides a Python custom plugin for Qt Designer by implementing the QDesignerCustomWidgetPlugin via a PyQt-specific custom plugin class. """ # The __init__() method is only used to set up the plugin and define its # initialized variable. def __init__(self, parent=None): super().__init__(parent) self.initialized = False # The initialize() and isInitialized() methods allow the plugin to set up # any required resources, ensuring that this can only happen once for each # plugin. def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized # This factory method creates new instances of our custom widget with the # appropriate parent. def createWidget(self, parent): return PythonConsoleWidget(parent) # This method returns the name of the custom widget class that is provided # by this plugin. def name(self): return "PythonConsoleWidget" # Returns the name of the group in Qt Designer's widget box that this # widget belongs to. def group(self): return "PyQt Examples" # Returns the icon used to represent the custom widget in Qt Designer's # widget box. def icon(self): return QIcon(_logo_pixmap) # Returns a short description of the custom widget for use in a tool tip. def toolTip(self): return "" # Returns a short description of the custom widget for use in a "What's # This?" help message for the widget. def whatsThis(self): return "" # Returns True if the custom widget acts as a container for other widgets; # otherwise returns False. Note that plugins for custom containers also # need to provide an implementation of the QDesignerContainerExtension # interface if they need to add custom editing support to Qt Designer. def isContainer(self): return False # Returns an XML description of a custom widget instance that describes # default values for its properties. Each custom widget created by this # plugin will be configured using this description. def domXml(self): return '\n' \ ' \n' \ ' Python console\n' \ ' \n' \ ' \n' \ ' The Python console widget can be used to explore ' \ 'Qt Designer.\n' \ ' \n' \ '\n' # Returns the module containing the custom widget class. It may include # a module path. def includeFile(self): return "pythonconsolewidget" # Define the image used for the icon. _logo_16x16_xpm = [ "16 16 6 1", " c None", ". c #FFFFFF", "a c #000000", "b c #808080", "c c #C0C0C0", "d c #404040", "................", "................", "................", ".aa..aa..aa.....", "..aa..aa..aa....", "...aa..aa..aa...", "....aa..aa..aa..", ".....aa..aa..aa.", ".....aa..aa..aa.", "....aa..aa..aa..", "...aa..aa..aa...", "..aa..aa..aa....", ".aa..aa..aa.....", "................", "................", "................"] _logo_pixmap = QPixmap(_logo_16x16_xpm) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4471598 PyQt6-6.6.1/examples/designer/plugins/widgets/0000755000076500000240000000000014532160402020130 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625135 PyQt6-6.6.1/examples/designer/plugins/widgets/analogclock.py0000644000076500000240000001415514532151332022767 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPoint, QSize, Qt, QTime, QTimer) from PyQt6.QtGui import QBrush, QColor, QPainter, QPen, QPolygon from PyQt6.QtWidgets import QApplication, QWidget class PyAnalogClock(QWidget): """PyAnalogClock(QWidget) Provides an analog clock custom widget with signals, slots and properties. The implementation is based on the Analog Clock example provided with both Qt and PyQt. """ # Emitted when the clock's time changes. timeChanged = pyqtSignal(QTime) # Emitted when the clock's time zone changes. timeZoneChanged = pyqtSignal(int) def __init__(self, parent=None): super().__init__(parent) self.timeZoneOffset = 0 timer = QTimer(self) timer.timeout.connect(self.update) timer.timeout.connect(self.updateTime) timer.start(1000) self.setWindowTitle("Analog Clock") self.resize(200, 200) self.hourHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -40) ]) self.minuteHand = QPolygon([ QPoint(7, 8), QPoint(-7, 8), QPoint(0, -70) ]) self.hourColor = QColor(0, 127, 0) self.minuteColor = QColor(0, 127, 127, 191) def paintEvent(self, event): side = min(self.width(), self.height()) time = QTime.currentTime() time = time.addSecs(self.timeZoneOffset * 3600) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.RenderHint.Antialiasing) painter.translate(self.width() / 2, self.height() / 2) painter.scale(side / 200.0, side / 200.0) painter.setPen(Qt.PenStyle.NoPen) painter.setBrush(QBrush(self.hourColor)) painter.save() painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0))) painter.drawConvexPolygon(self.hourHand) painter.restore() painter.setPen(self.hourColor) for i in range(0, 12): painter.drawLine(88, 0, 96, 0) painter.rotate(30.0) painter.setPen(Qt.PenStyle.NoPen) painter.setBrush(QBrush(self.minuteColor)) painter.save() painter.rotate(6.0 * (time.minute() + time.second() / 60.0)) painter.drawConvexPolygon(self.minuteHand) painter.restore() painter.setPen(QPen(self.minuteColor)) for j in range(0, 60): if (j % 5) != 0: painter.drawLine(92, 0, 96, 0) painter.rotate(6.0) painter.end() def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(100, 100) def updateTime(self): self.timeChanged.emit(QTime.currentTime()) # The timeZone property is implemented using the getTimeZone() getter # method, the setTimeZone() setter method, and the resetTimeZone() method. # The getter just returns the internal time zone value. def getTimeZone(self): return self.timeZoneOffset # The setTimeZone() method is also defined to be a slot. The @pyqtSlot # decorator is used to tell PyQt which argument type the method expects, # and is especially useful when you want to define slots with the same # name that accept different argument types. @pyqtSlot(int) def setTimeZone(self, value): self.timeZoneOffset = value self.timeZoneChanged.emit(value) self.update() # Qt's property system supports properties that can be reset to their # original values. This method enables the timeZone property to be reset. def resetTimeZone(self): self.timeZoneOffset = 0 self.timeZoneChanged.emit(0) self.update() # Qt-style properties are defined differently to Python's properties. # To declare a property, we call pyqtProperty() to specify the type and, # in this case, getter, setter and resetter methods. timeZone = pyqtProperty(int, getTimeZone, setTimeZone, resetTimeZone) if __name__ == "__main__": import sys app = QApplication(sys.argv) clock = PyAnalogClock() clock.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.621333 PyQt6-6.6.1/examples/designer/plugins/widgets/bubbleswidget.py0000644000076500000240000002417514532151332023337 0ustar00philstaff""" bubbleswidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import random from PyQt6.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, QPointF, QRectF, QSize, QSizeF, Qt, QTimer) from PyQt6.QtGui import QBrush, QColor, QPainter, QPen, QRadialGradient from PyQt6.QtWidgets import QApplication, QWidget class BaseClass(QWidget): """BaseClass(QWidget) Provides a base custom widget class to show that properties implemented in Python can be inherited and shown as belonging to distinct classes in Qt Designer's Property Editor. """ def __init__(self, parent=None): super().__init__(parent) self.resetAuthor() # Define getter, setter and resetter methods for the author property. def getAuthor(self): return self._author def setAuthor(self, name): self._author = name def resetAuthor(self): self._author = "David Boddie" author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) class Bubble: """Bubble Provides a class to represent individual bubbles in a BubblesWidget. Each Bubble instance can render itself onto a paint device using a QPainter passed to its drawBubble() method. """ def __init__(self, position, radius, speed, innerColor, outerColor): self.position = position self.radius = radius self.speed = speed self.innerColor = innerColor self.outerColor = outerColor self.updateBrush() def updateBrush(self): gradient = QRadialGradient( QPointF(self.radius, self.radius), self.radius, QPointF(self.radius*0.5, self.radius*0.5)) gradient.setColorAt(0, QColor(255, 255, 255, 255)) gradient.setColorAt(0.25, self.innerColor) gradient.setColorAt(1, self.outerColor) self.brush = QBrush(gradient) def drawBubble(self, painter): painter.save() painter.translate(self.position.x() - self.radius, self.position.y() - self.radius) painter.setBrush(self.brush) painter.drawEllipse(0, 0, int(2*self.radius), int(2*self.radius)) painter.restore() class BubblesWidget(BaseClass): """BubblesWidget(BaseClass) Provides a custom widget that shows a number of rising bubbles. Various properties are defined so that the user can customize the appearance of the widget, and change the number and behaviour of the bubbles shown. """ # We define two signals that are used to indicate changes to the status # of the widget. bubbleLeft = pyqtSignal() bubblesRemaining = pyqtSignal(int) def __init__(self, parent=None): super().__init__(parent) self.pen = QPen(QColor("#cccccc")) self.bubbles = [] self.backgroundColor1 = self.randomColor() self.backgroundColor2 = self.randomColor().darker(150) self.newBubble = None random.seed() self.animation_timer = QTimer(self) self.animation_timer.setSingleShot(False) self.animation_timer.timeout.connect(self.animate) self.animation_timer.start(25) self.bubbleTimer = QTimer() self.bubbleTimer.setSingleShot(False) self.bubbleTimer.timeout.connect(self.expandBubble) self.setMouseTracking(True) self.setMinimumSize(QSize(200, 200)) self.setWindowTitle("Bubble Maker") def paintEvent(self, event): background = QRadialGradient(QPointF(self.rect().topLeft()), 500, QPointF(self.rect().bottomRight())) background.setColorAt(0, self.backgroundColor1) background.setColorAt(1, self.backgroundColor2) painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.RenderHint.Antialiasing) painter.fillRect(event.rect(), QBrush(background)) painter.setPen(self.pen) for bubble in self.bubbles: if QRectF(bubble.position - QPointF(bubble.radius, bubble.radius), QSizeF(2*bubble.radius, 2*bubble.radius)).intersects(QRectF(event.rect())): bubble.drawBubble(painter) if self.newBubble: self.newBubble.drawBubble(painter) painter.end() def mousePressEvent(self, event): if event.button() == Qt.MouseButton.LeftButton and self.newBubble is None: self.newBubble = Bubble(QPointF(event.position()), 4.0, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) self.bubbleTimer.start(50) event.accept() def mouseMoveEvent(self, event): if self.newBubble: self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.position = QPointF(event.position()) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) event.accept() def mouseReleaseEvent(self, event): if self.newBubble: self.bubbles.append(self.newBubble) self.newBubble = None self.bubbleTimer.stop() self.bubblesRemaining.emit(len(self.bubbles)) event.accept() def expandBubble(self): if self.newBubble: self.newBubble.radius = min(self.newBubble.radius + 4.0, self.width()/8.0, self.height()/8.0) self.update( QRectF(self.newBubble.position - \ QPointF(self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect() ) self.newBubble.updateBrush() def randomColor(self): red = int(205 + random.random() * 50) green = int(205 + random.random() * 50) blue = int(205 + random.random() * 50) alpha = int(91 + random.random() * 100) return QColor(red, green, blue, alpha) def animate(self): bubbles = [] left = False for bubble in self.bubbles: bubble.position = bubble.position + QPointF(0, -bubble.speed) self.update( QRectF(bubble.position - QPointF(bubble.radius + 1, bubble.radius + 1), QSizeF(2*bubble.radius + 2, 2*bubble.radius + 2 + bubble.speed)).toRect()) if bubble.position.y() + bubble.radius > 0: bubbles.append(bubble) else: self.bubbleLeft.emit() left = True if self.newBubble: self.update( QRectF(self.newBubble.position - QPointF( self.newBubble.radius + 1, self.newBubble.radius + 1), QSizeF(2*self.newBubble.radius + 2, 2*self.newBubble.radius + 2)).toRect()) self.bubbles = bubbles if left: self.bubblesRemaining.emit(len(self.bubbles)) def sizeHint(self): return QSize(200, 200) # We provide getter and setter methods for the numberOfBubbles property. def getBubbles(self): return len(self.bubbles) # The setBubbles() method can also be used as a slot. @pyqtSlot(int) def setBubbles(self, value): value = max(0, value) while len(self.bubbles) < value: newBubble = Bubble(QPointF(random.random() * self.width(), random.random() * self.height()), 4.0 + random.random() * 20, 1.0 + random.random() * 7, self.randomColor(), self.randomColor()) newBubble.updateBrush() self.bubbles.append(newBubble) self.bubbles = self.bubbles[:value] self.bubblesRemaining.emit(value) self.update() numberOfBubbles = pyqtProperty(int, getBubbles, setBubbles) # We provide getter and setter methods for the color1 and color2 # properties. The red, green and blue components for the QColor # values stored in these properties can be edited individually in # Qt Designer. def getColor1(self): return self.backgroundColor1 def setColor1(self, value): self.backgroundColor1 = QColor(value) self.update() color1 = pyqtProperty(QColor, getColor1, setColor1) def getColor2(self): return self.backgroundColor2 def setColor2(self, value): self.backgroundColor2 = QColor(value) self.update() color2 = pyqtProperty(QColor, getColor2, setColor2) # The stop() and start() slots provide simple control over the animation # of the bubbles in the widget. @pyqtSlot() def stop(self): self.animation_timer.stop() @pyqtSlot() def start(self): self.animation_timer.start(25) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = BubblesWidget() widget.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.610016 PyQt6-6.6.1/examples/designer/plugins/widgets/counterlabel.py0000644000076500000240000001210314532151332023160 0ustar00philstaff""" counterlabel.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, QSize, Qt from PyQt6.QtGui import QFont, QFontMetricsF, QPainter from PyQt6.QtWidgets import QApplication, QWidget class CounterLabel(QWidget): """CounterLabel(QWidget) Provides a custom label widget to be used as a counter, with signals similar to those provided by QAbstractSlider subclasses and properties similar to those provided by QLabel. """ # We define two signals that are used to indicate changes to the status # of the widget. valueChanged = pyqtSignal((int, ), (str, )) def __init__(self, parent=None): super().__init__(parent) self.setAutoFillBackground(False) self._font = QFont() self._minimum = 1 self._maximum = 1 self._value = 1 self._offset = 0 self.rescale() self.reposition() def paintEvent(self, event): p = QPainter() p.begin(self) p.setRenderHint(QPainter.RenderHint.Antialiasing) p.setFont(self._font) p.translate(self.width()/2.0, self.height()/2.0) p.scale(self._scale, self._scale) p.drawText(int(self._xpos), int(self._ypos), str(self._value)) p.end() def sizeHint(self): return QSize(32, 32) def rescale(self): fm = QFontMetricsF(self._font, self) maxRect = fm.boundingRect(QRectF(self.rect()), Qt.AlignmentFlag.AlignCenter, str(self._maximum)) xscale = float(self.width())/maxRect.width() yscale = float(self.height())/maxRect.height() self._scale = min(xscale, yscale) def reposition(self): fm = QFontMetricsF(self._font, self) rect = fm.boundingRect(QRectF(self.rect()), Qt.AlignmentFlag.AlignCenter, str(self._value)) self._xpos = -rect.width()/2.0 self._ypos = rect.height()/2.0 - fm.descent() self.update() # Provide getter and setter methods for the font property. def getFont(self): return self._font def setFont(self, font): self._font = font self.rescale() self.reposition() font = pyqtProperty(QFont, getFont, setFont) # Provide getter and setter methods for the minimum and maximum properties. def getMinimum(self): return self._minimum def setMinimum(self, value): self._minimum = value if self._minimum > self._maximum: self.setMaximum(self._minimum) if self._minimum > self._value: self.setValue(self._minimum) minimum = pyqtProperty(int, getMinimum, setMinimum) def getMaximum(self): return self._maximum def setMaximum(self, value): self._maximum = value self._minimum = min(self._minimum, self._maximum) if self._maximum < self._value: self.setValue(self._maximum) self.rescale() self.reposition() maximum = pyqtProperty(int, getMaximum, setMaximum) # We provide an offset property to allow the value shown to differ from # the internal value held by the widget. def getOffset(self): return self._offset def setOffset(self, value): self._offset = value offset = pyqtProperty(int, getOffset, setOffset) # The value property is implemented using the getValue() and setValue() # methods. def getValue(self): return self._value # The setter method for the value property can also be used as a slot. @pyqtSlot(int) def setValue(self, value): if not self._minimum <= value <= self._maximum: return self._value = value self.valueChanged[int].emit(value + self._offset) self.valueChanged[str].emit(str(value + self._offset)) self.reposition() value = pyqtProperty(int, getValue, setValue) # Like QAbstractSpinBox, we provide stepUp() and stepDown() slots to # enable the value to be incremented and decremented. @pyqtSlot() def stepUp(self): self.setValue(self._value + 1) @pyqtSlot() def stepDown(self): self.setValue(self._value - 1) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = CounterLabel() widget.setValue(123) widget.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.610997 PyQt6-6.6.1/examples/designer/plugins/widgets/datetimeedit.py0000644000076500000240000003743014532151332023155 0ustar00philstaff#============================================================================# # (Re)Implementation of QDateEdit and QDateTimeEdit. These classes force the # # use of the calendar popup. # #----------------------------------------------------------------------------# # Copyright (c) 2008 by Denviso GmbH, # # # # All Rights Reserved # # # # Permission to use, copy, modify, and distribute this software and its # # documentation for any purpose and without fee is hereby granted, # # provided that the above copyright notice appear in all copies and that # # both that copyright notice and this permission notice appear in # # supporting documentation. # # # # DENVISO DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS # # SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # # AND FITNESS, IN NO EVENT SHALL DENVISO BE LIABLE FOR ANY # # SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE # # OR PERFORMANCE OF THIS SOFTWARE. # #----------------------------------------------------------------------------# from PyQt6.QtCore import pyqtProperty, Qt from PyQt6.QtWidgets import (QApplication, QCalendarWidget, QDateEdit, QDateTimeEdit, QHBoxLayout, QWidget) #============================================================================# # PyDateEdit # #----------------------------------------------------------------------------# class PyDateEdit(QDateEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super().__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.DayOfWeek.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.HorizontalHeaderFormat.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super().mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.DayOfWeek.Monday: self.__firstDayOfWeek = Qt.DayOfWeek.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.DayOfWeek.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.HorizontalHeaderFormat.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.HorizontalHeaderFormat.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.HorizontalHeaderFormat.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) #============================================================================# # PyDateTimeEdit # #----------------------------------------------------------------------------# class PyDateTimeEdit(QDateTimeEdit): # # Initialize base class # Force use of the calendar popup # Set default values for calendar properties # def __init__(self, *args): super().__init__(*args) self.setCalendarPopup(True) self.__cw = None self.__firstDayOfWeek = Qt.DayOfWeek.Monday self.__gridVisible = False self.__horizontalHeaderFormat = QCalendarWidget.HorizontalHeaderFormat.ShortDayNames self.__verticalHeaderFormat = QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers self.__navigationBarVisible = True # # Call event handler of base class # Get the calendar widget, if not already done # Set the calendar properties # def mousePressEvent(self, event): super().mousePressEvent(event) if not self.__cw: self.__cw = self.findChild(QCalendarWidget) if self.__cw: self.__cw.setFirstDayOfWeek(self.__firstDayOfWeek) self.__cw.setGridVisible(self.__gridVisible) self.__cw.setHorizontalHeaderFormat(self.__horizontalHeaderFormat) self.__cw.setVerticalHeaderFormat(self.__verticalHeaderFormat) self.__cw.setNavigationBarVisible(self.__navigationBarVisible) # # Make sure, the calendarPopup property is invisible in Designer # def getCalendarPopup(self): return True calendarPopup = pyqtProperty(bool, fget=getCalendarPopup) # # Property firstDayOfWeek: Qt::DayOfWeek # Get: getFirstDayOfWeek() # Set: setFirstDayOfWeek() # Reset: resetFirstDayOfWeek() # def getFirstDayOfWeek(self): return self.__firstDayOfWeek def setFirstDayOfWeek(self, dayOfWeek): if dayOfWeek != self.__firstDayOfWeek: self.__firstDayOfWeek = dayOfWeek if self.__cw: self.__cw.setFirstDayOfWeek(dayOfWeek) def resetFirstDayOfWeek(self): if self.__firstDayOfWeek != Qt.DayOfWeek.Monday: self.__firstDayOfWeek = Qt.DayOfWeek.Monday if self.__cw: self.__cw.setFirstDayOfWeek(Qt.DayOfWeek.Monday) firstDayOfWeek = pyqtProperty(Qt.DayOfWeek, fget=getFirstDayOfWeek, fset=setFirstDayOfWeek, freset=resetFirstDayOfWeek) # # Property gridVisible: bool # Get: isGridVisible() # Set: setGridVisible() # Reset: resetGridVisible() # def isGridVisible(self): return self.__gridVisible def setGridVisible(self, show): if show != self.__gridVisible: self.__gridVisible = show if self.__cw: self.__cw.setGridVisible(show) def resetGridVisible(self): if self.__gridVisible != False: self.__gridVisible = False if self.__cw: self.__cw.setGridVisible(False) gridVisible = pyqtProperty(bool, fget=isGridVisible, fset=setGridVisible, freset=resetGridVisible) # # Property horizontalHeaderFormat: QCalendarWidget::HorizontalHeaderFormat # Get: getHorizontalHeaderFormat() # Set: setHorizontalHeaderFormat() # Reset: resetHorizontalHeaderFormat() # def getHorizontalHeaderFormat(self): return self.__horizontalHeaderFormat def setHorizontalHeaderFormat(self, format): if format != self.__horizontalHeaderFormat: self.__horizontalHeaderFormat = format if self.__cw: self.__cw.setHorizontalHeaderFormat(format) def resetHorizontalHeaderFormat(self): if self.__horizontalHeaderFormat != QCalendarWidget.HorizontalHeaderFormat.ShortDayNames: self.__horizontalHeaderFormat = QCalendarWidget.HorizontalHeaderFormat.ShortDayNames if self.__cw: self.__cw.setHorizontalHeaderFormat(QCalendarWidget.HorizontalHeaderFormat.ShortDayNames) horizontalHeaderFormat = pyqtProperty(QCalendarWidget.HorizontalHeaderFormat, fget=getHorizontalHeaderFormat, fset=setHorizontalHeaderFormat, freset=resetHorizontalHeaderFormat) # # Property verticalHeaderFormat: QCalendarWidget::VerticalHeaderFormat # Get: getVerticalHeaderFormat() # Set: setVerticalHeaderFormat() # Reset: resetVerticalHeaderFormat() # def getVerticalHeaderFormat(self): return self.__verticalHeaderFormat def setVerticalHeaderFormat(self, format): if format != self.__verticalHeaderFormat: self.__verticalHeaderFormat = format if self.__cw: self.__cw.setVerticalHeaderFormat(format) def resetVerticalHeaderFormat(self): if self.__verticalHeaderFormat != QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers: self.__verticalHeaderFormat = QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers if self.__cw: self.__cw.setVerticalHeaderFormat(QCalendarWidget.VerticalHeaderFormat.ISOWeekNumbers) verticalHeaderFormat = pyqtProperty(QCalendarWidget.VerticalHeaderFormat, fget=getVerticalHeaderFormat, fset=setVerticalHeaderFormat, freset=resetVerticalHeaderFormat) # # Property navigationBarVisible: bool # Get: isNavigationBarVisible() # Set: setNavigationBarVisible() # Reset: resetNavigationBarVisible() # def isNavigationBarVisible(self): return self.__navigationBarVisible def setNavigationBarVisible(self, visible): if visible != self.__navigationBarVisible: self.__navigationBarVisible = visible if self.__cw: self.__cw.setNavigationBarVisible(visible) def resetNavigationBarVisible(self): if self.__navigationBarVisible != True: self.__navigationBarVisible = True if self.__cw: self.__cw.setNavigationBarVisible(True) navigationBarVisible = pyqtProperty(bool, fget=isNavigationBarVisible, fset=setNavigationBarVisible, freset=resetNavigationBarVisible) if __name__ == "__main__": import sys app = QApplication(sys.argv) w = QWidget() lay = QHBoxLayout() lay.addWidget(PyDateEdit()) lay.addWidget(PyDateTimeEdit()) w.setLayout(lay) w.show() sys.exit(app.exec()) #============================================================================# # EOF # #----------------------------------------------------------------------------# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.612443 PyQt6-6.6.1/examples/designer/plugins/widgets/helloglwidget.py0000644000076500000240000002015614532151332023342 0ustar00philstaff""" helloglwidget.py A simple OpenGL custom widget for Qt Designer. Copyright (C) 2007 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QPointF, QSize, Qt from PyQt6.QtGui import QColor, QOpenGLContext from PyQt6.QtOpenGL import QOpenGLVersionFunctionsFactory from PyQt6.QtOpenGLWidgets import QOpenGLWidget from PyQt6.QtWidgets import QApplication class HelloGLWidget(QOpenGLWidget): """HelloGLWidget(QOpenGLWidget) Provides a custom widget to display an OpenGL-rendered Qt logo. Various properties and slots are defined so that the user can rotate the logo, and signals are defined to enable other components to react to changes to its orientation. """ # We define three signals that are used to indicate changes to the # rotation of the logo. xRotationChanged = pyqtSignal(int) yRotationChanged = pyqtSignal(int) zRotationChanged = pyqtSignal(int) def __init__(self, parent=None): super().__init__(parent) self.object = 0 self.xRot = 0 self.yRot = 0 self.zRot = 0 self.lastPos = QPointF() self.trolltechGreen = QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) self.trolltechPurple = QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) self.setWindowTitle("Hello GL") # The rotation of the logo about the x-axis can be controlled using the # xRotation property, defined using the following getter and setter # methods. def getXRotation(self): return self.xRot # The setXRotation() setter method is also a slot. @pyqtSlot(int) def setXRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.xRot: self.xRot = angle self.xRotationChanged.emit(angle) self.update() xRotation = pyqtProperty(int, getXRotation, setXRotation) # The rotation of the logo about the y-axis can be controlled using the # yRotation property, defined using the following getter and setter # methods. def getYRotation(self): return self.yRot # The setYRotation() setter method is also a slot. @pyqtSlot(int) def setYRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.yRot: self.yRot = angle self.yRotationChanged.emit(angle) self.update() yRotation = pyqtProperty(int, getYRotation, setYRotation) # The rotation of the logo about the z-axis can be controlled using the # zRotation property, defined using the following getter and setter # methods. def getZRotation(self): return self.zRot # The setZRotation() setter method is also a slot. @pyqtSlot(int) def setZRotation(self, angle): angle = self.normalizeAngle(angle) if angle != self.zRot: self.zRot = angle self.zRotationChanged.emit(angle) self.update() zRotation = pyqtProperty(int, getZRotation, setZRotation) def minimumSizeHint(self): return QSize(50, 50) def sizeHint(self): return QSize(200, 200) def initializeGL(self): self.gl = QOpenGLVersionFunctionsFactory.get( context=QOpenGLContext.currentContext()) self.setClearColor(self.trolltechPurple.darker()) self.object = self.makeObject() self.gl.glShadeModel(self.gl.GL_SMOOTH) self.gl.glEnable(self.gl.GL_DEPTH_TEST) self.gl.glEnable(self.gl.GL_CULL_FACE) def paintGL(self): self.gl.glClear(self.gl.GL_COLOR_BUFFER_BIT | self.gl.GL_DEPTH_BUFFER_BIT) self.gl.glLoadIdentity() self.gl.glTranslated(0.0, 0.0, -10.0) self.gl.glRotated(self.xRot / 16.0, 1.0, 0.0, 0.0) self.gl.glRotated(self.yRot / 16.0, 0.0, 1.0, 0.0) self.gl.glRotated(self.zRot / 16.0, 0.0, 0.0, 1.0) self.gl.glCallList(self.object) def resizeGL(self, width, height): side = min(width, height) self.gl.glViewport((width - side) // 2, (height - side) // 2, side, side) self.gl.glMatrixMode(self.gl.GL_PROJECTION) self.gl.glLoadIdentity() self.gl.glOrtho(-0.5, +0.5, +0.5, -0.5, 4.0, 15.0) self.gl.glMatrixMode(self.gl.GL_MODELVIEW) def mousePressEvent(self, event): self.lastPos = QPointF(event.position()) def mouseMoveEvent(self, event): dx = int(event.position().x() - self.lastPos.x()) dy = int(event.position().y() - self.lastPos.y()) if event.buttons() & Qt.MouseButton.LeftButton: self.setXRotation(self.xRot + 8 * dy) self.setYRotation(self.yRot + 8 * dx) elif event.buttons() & Qt.MouseButton.RightButton: self.setXRotation(self.xRot + 8 * dy) self.setZRotation(self.zRot + 8 * dx) self.lastPos = QPointF(event.position()) def makeObject(self): genList = self.gl.glGenLists(1) self.gl.glNewList(genList, self.gl.GL_COMPILE) self.gl.glBegin(self.gl.GL_QUADS) x1 = +0.06 y1 = -0.14 x2 = +0.14 y2 = -0.06 x3 = +0.08 y3 = +0.00 x4 = +0.30 y4 = +0.22 self.quad(x1, y1, x2, y2, y2, x2, y1, x1) self.quad(x3, y3, x4, y4, y4, x4, y3, x3) self.extrude(x1, y1, x2, y2) self.extrude(x2, y2, y2, x2) self.extrude(y2, x2, y1, x1) self.extrude(y1, x1, x1, y1) self.extrude(x3, y3, x4, y4) self.extrude(x4, y4, y4, x4) self.extrude(y4, x4, y3, x3) NumSectors = 200 for i in range(NumSectors): angle1 = (i * 2 * math.pi) / NumSectors x5 = 0.30 * math.sin(angle1) y5 = 0.30 * math.cos(angle1) x6 = 0.20 * math.sin(angle1) y6 = 0.20 * math.cos(angle1) angle2 = ((i + 1) * 2 * math.pi) / NumSectors x7 = 0.20 * math.sin(angle2) y7 = 0.20 * math.cos(angle2) x8 = 0.30 * math.sin(angle2) y8 = 0.30 * math.cos(angle2) self.quad(x5, y5, x6, y6, x7, y7, x8, y8) self.extrude(x6, y6, x7, y7) self.extrude(x8, y8, x5, y5) self.gl.glEnd() self.gl.glEndList() return genList def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): self.setColor(self.trolltechGreen) self.gl.glVertex3d(x1, y1, -0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x3, y3, -0.05) self.gl.glVertex3d(x4, y4, -0.05) self.gl.glVertex3d(x4, y4, +0.05) self.gl.glVertex3d(x3, y3, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x1, y1, +0.05) def extrude(self, x1, y1, x2, y2): self.setColor(self.trolltechGreen.darker(250 + int(100 * x1))) self.gl.glVertex3d(x1, y1, +0.05) self.gl.glVertex3d(x2, y2, +0.05) self.gl.glVertex3d(x2, y2, -0.05) self.gl.glVertex3d(x1, y1, -0.05) def normalizeAngle(self, angle): while angle < 0: angle += 360 * 16 while angle > 360 * 16: angle -= 360 * 16 return angle def setClearColor(self, c): self.gl.glClearColor(c.redF(), c.greenF(), c.blueF(), c.alphaF()) def setColor(self, c): self.gl.glColor4f(c.redF(), c.greenF(), c.blueF(), c.alphaF()) if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = HelloGLWidget() widget.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.718944 PyQt6-6.6.1/examples/designer/plugins/widgets/multipagewidget.py0000644000076500000240000000762114532151332023705 0ustar00philstaff#============================================================================# # PyQt6 port of the designer/containerextension example from Qt v6.x # #----------------------------------------------------------------------------# from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QSize from PyQt6.QtWidgets import (QApplication, QComboBox, QLabel, QStackedWidget, QVBoxLayout, QWidget) #============================================================================# # Implementation of a MultiPageWidget using a QComboBox and a QStackedWidget # #----------------------------------------------------------------------------# class PyMultiPageWidget(QWidget): currentIndexChanged = pyqtSignal(int) pageTitleChanged = pyqtSignal(str) def __init__(self, parent=None): super().__init__(parent) self.comboBox = QComboBox() # MAGIC # It is important that the combo box has an object name beginning # with '__qt__passive_', otherwise, it is inactive in the form editor # of the designer and you can't change the current page via the # combo box. # MAGIC self.comboBox.setObjectName('__qt__passive_comboBox') self.stackWidget = QStackedWidget() self.comboBox.activated.connect(self.setCurrentIndex) self.layout = QVBoxLayout() self.layout.addWidget(self.comboBox) self.layout.addWidget(self.stackWidget) self.setLayout(self.layout) def sizeHint(self): return QSize(200, 150) def count(self): return self.stackWidget.count() def widget(self, index): return self.stackWidget.widget(index) @pyqtSlot(QWidget) def addPage(self, page): self.insertPage(self.count(), page) @pyqtSlot(int, QWidget) def insertPage(self, index, page): page.setParent(self.stackWidget) self.stackWidget.insertWidget(index, page) title = page.windowTitle() if title == "": title = "Page %d" % (self.comboBox.count() + 1) page.setWindowTitle(title) self.comboBox.insertItem(index, title) @pyqtSlot(int) def removePage(self, index): widget = self.stackWidget.widget(index) self.stackWidget.removeWidget(widget) self.comboBox.removeItem(index) def getPageTitle(self): cw = self.stackWidget.currentWidget() return cw.windowTitle() if cw is not None else '' @pyqtSlot(str) def setPageTitle(self, newTitle): cw = self.stackWidget.currentWidget() if cw is not None: self.comboBox.setItemText(self.getCurrentIndex(), newTitle) cw.setWindowTitle(newTitle) self.pageTitleChanged.emit(newTitle) def getCurrentIndex(self): return self.stackWidget.currentIndex() @pyqtSlot(int) def setCurrentIndex(self, index): if index != self.getCurrentIndex(): self.stackWidget.setCurrentIndex(index) self.comboBox.setCurrentIndex(index) self.currentIndexChanged.emit(index) pageTitle = pyqtProperty(str, fget=getPageTitle, fset=setPageTitle, stored=False) currentIndex = pyqtProperty(int, fget=getCurrentIndex, fset=setCurrentIndex) #============================================================================# # Main for testing the class # #----------------------------------------------------------------------------# if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PyMultiPageWidget() widget.addPage(QLabel('This is page #1')) widget.addPage(QLabel('This is page #2')) widget.show() sys.exit(app.exec()) #============================================================================# # EOF # #----------------------------------------------------------------------------# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.616556 PyQt6-6.6.1/examples/designer/plugins/widgets/polygonwidget.py0000644000076500000240000001330314532151332023377 0ustar00philstaff""" polygonwidget.py A PyQt custom widget example for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ import math from PyQt6.QtCore import pyqtProperty, pyqtSlot, QPointF, QSize from PyQt6.QtGui import QBrush, QColor, QPainter, QPainterPath, QRadialGradient from PyQt6.QtWidgets import QApplication, QWidget class PolygonWidget(QWidget): """PolygonWidget(QWidget) Provides a custom widget to display a polygon with properties and slots that can be used to customize its appearance. """ def __init__(self, parent=None): super().__init__(parent) self._sides = 5 self._innerRadius = 20 self._outerRadius = 50 self._angle = 0 self.createPath() self._innerColor = QColor(255, 255, 128) self._outerColor = QColor(255, 0, 128) self.createGradient() def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.RenderHint.Antialiasing) painter.setBrush(QBrush(QColor(192, 192, 255))) painter.drawRect(event.rect()) painter.translate(self.width()/2.0, self.height()/2.0) painter.rotate(self._angle) painter.setBrush(QBrush(self.gradient)) painter.drawPath(self.path) painter.end() def sizeHint(self): return QSize(2*self._outerRadius + 20, 2*self._outerRadius + 20) def createPath(self): self.path = QPainterPath() angle = 2*math.pi/self._sides self.path.moveTo(self._outerRadius, 0) for step in range(1, self._sides + 1): self.path.lineTo( self._innerRadius * math.cos((step - 0.5) * angle), self._innerRadius * math.sin((step - 0.5) * angle) ) self.path.lineTo( self._outerRadius * math.cos(step * angle), self._outerRadius * math.sin(step * angle) ) self.path.closeSubpath() def createGradient(self): center = QPointF(0, 0) self.gradient = QRadialGradient(center, self._outerRadius, center) self.gradient.setColorAt(0.5, QColor(self._innerColor)) self.gradient.setColorAt(1.0, QColor(self._outerColor)) # The angle property is implemented using the getAngle() and setAngle() # methods. def getAngle(self): return self._angle # The setAngle() setter method is also a slot. @pyqtSlot(int) def setAngle(self, angle): self._angle = min(max(0, angle), 360) self.update() angle = pyqtProperty(int, getAngle, setAngle) # The innerRadius property is implemented using the getInnerRadius() and # setInnerRadius() methods. def getInnerRadius(self): return self._innerRadius # The setInnerRadius() setter method is also a slot. @pyqtSlot(int) def setInnerRadius(self, radius): self._innerRadius = radius self.createPath() self.createGradient() self.update() innerRadius = pyqtProperty(int, getInnerRadius, setInnerRadius) # The outerRadius property is implemented using the getOuterRadius() and # setOuterRadius() methods. def getOuterRadius(self): return self._outerRadius # The setOuterRadius() setter method is also a slot. @pyqtSlot(int) def setOuterRadius(self, radius): self._outerRadius = radius self.createPath() self.createGradient() self.update() outerRadius = pyqtProperty(int, getOuterRadius, setOuterRadius) # The numberOfSides property is implemented using the getNumberOfSides() # and setNumberOfSides() methods. def getNumberOfSides(self): return self._sides # The setNumberOfSides() setter method is also a slot. @pyqtSlot(int) def setNumberOfSides(self, sides): self._sides = max(3, sides) self.createPath() self.update() numberOfSides = pyqtProperty(int, getNumberOfSides, setNumberOfSides) # The innerColor property is implemented using the getInnerColor() and # setInnerColor() methods. def getInnerColor(self): return self._innerColor def setInnerColor(self, color): self._innerColor = max(3, color) self.createGradient() self.update() innerColor = pyqtProperty(QColor, getInnerColor, setInnerColor) # The outerColor property is implemented using the getOuterColor() and # setOuterColor() methods. def getOuterColor(self): return self._outerColor def setOuterColor(self, color): self._outerColor = color self.createGradient() self.update() outerColor = pyqtProperty(QColor, getOuterColor, setOuterColor) if __name__ == "__main__": import sys app = QApplication(sys.argv) window = PolygonWidget() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.613384 PyQt6-6.6.1/examples/designer/plugins/widgets/pydemo.py0000644000076500000240000001276314532151332022012 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Riverbank Computing Limited nor the names of ## its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot from PyQt6.QtWidgets import QApplication, QTextEdit # The purpose of this class is to show that Designer's property editor shows # all Python classes in the hierarchy that define properties. class PyTextViewer(QTextEdit): # Initialise the instance. def __init__(self, parent=None): super().__init__(parent) self.setReadOnly(True) # Initialise the author property by calling it's reset function. self.resetAuthor() # The getter for the author property. Note that we cannot follow the Qt # naming convention (ie. by using the naming the getter "author") because # it would conflict with the property name. def getAuthor(self): return self._author # The setter for the author property. def setAuthor(self, name): self._author = name # The resetter for the author property. Only Qt Designer uses this. Qt # Designer does not use the deleter function of the property. def resetAuthor(self): self._author = "David Boddie" # Define the author property. This will look like a C++ property to Qt # Designer and a Python property to Python. author = pyqtProperty(str, getAuthor, setAuthor, resetAuthor) # This is the class that implements the custom widget. class PyDemo(PyTextViewer): # Define the Qt signals as a sequence of C++ function signatures excluding # the return type. These may be connected to other signals or slots in Qt # Designer. zoomChanged = pyqtSignal(int) # Initialise the instance. def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("PyQt Demonstration Widget") self.setText(_demo_text) # Initialise the zoom property. We don't just call the resetter # because it assumes that this has already been initialised. self._zoom = 0 # The getter for the zoom property. def getZoom(self): return self._zoom # The setter for the zoom property. We also make define this as a Qt slot # which can be connected to Qt signals in Qt Designer. @pyqtSlot(int) def setZoom(self, zoom): # Don't do anything if nothing has changed. if self._zoom == zoom: return # Zoom in or out according to the relative zoom levels. if self._zoom < zoom: self.zoomIn(zoom - self._zoom) elif self._zoom > zoom: self.zoomOut(self._zoom - zoom) # Remember the new zoom level. self._zoom = zoom # Emit the Qt signal to say that the zoom level has changed. self.zoomChanged.emit(zoom) # The resetter for the zoom property. def resetZoom(self): self.setZoom(0) # Define the zoom property. Changing the value of this in Qt Designer's # property editor causes the zoom level to change dynamically. zoom = pyqtProperty(int, getZoom, setZoom, resetZoom) # The text displayed in the custom widget. _demo_text = """

PyQt Demonstration Widget

This simple example demonstrates the following features.

  • The definition of properties that behave as C++ properties to Qt and Python properties to Python.
  • The definition of new Qt signals that can be connected to other signals and Qt slots in Designer.
  • The definition of new Qt slots that can be connected to signals in Designer.
""" # Display the custom widget if the script is being run directly from the # command line. if __name__ == "__main__": import sys app = QApplication(sys.argv) demo = PyDemo() demo.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.616959 PyQt6-6.6.1/examples/designer/plugins/widgets/pythonconsolewidget.py0000644000076500000240000000571014532151332024617 0ustar00philstaff""" pythonconsolewidget.py A Python console custom widget for Qt Designer. Copyright (C) 2006 David Boddie Copyright (C) 2005-2006 Trolltech ASA. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ from PyQt6.QtCore import pyqtSignal, QEvent, Qt from PyQt6.QtWidgets import QApplication, QLineEdit class PythonConsoleWidget(QLineEdit): """PythonConsoleWidget(QLineEdit) Provides a custom widget to accept Python expressions and emit output to other components via a custom signal. """ pythonOutput = pyqtSignal(str) def __init__(self, parent=None): super().__init__(parent) self.history = [] self.current = -1 self.returnPressed.connect(self.execute) def keyReleaseEvent(self, event): if event.type() == QEvent.Type.KeyRelease: if event.key() == Qt.Key.Key_Up: current = max(0, self.current - 1) if 0 <= current < len(self.history): self.setText(self.history[current]) self.current = current event.accept() elif event.key() == Qt.Key.Key_Down: current = min(len(self.history), self.current + 1) if 0 <= current < len(self.history): self.setText(self.history[current]) else: self.clear() self.current = current event.accept() def execute(self): # Define this here to give users something to look at. qApp = QApplication.instance() self.expression = self.text() try: result = str(eval(str(self.expression))) # Emit the result of the evaluated expression. self.pythonOutput.emit(result) # Clear the line edit, append the successful expression to the # history, and update the current command index. self.clear() self.history.append(self.expression) self.current = len(self.history) except: pass if __name__ == "__main__": import sys app = QApplication(sys.argv) widget = PythonConsoleWidget() widget.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4360423 PyQt6-6.6.1/examples/desktop/0000755000076500000240000000000014532160402014652 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.614342 PyQt6-6.6.1/examples/desktop/screenshot.py0000644000076500000240000001471514532151332017413 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QDir, Qt, QTimer from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import (QApplication, QCheckBox, QFileDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSpinBox, QVBoxLayout, QWidget) class Screenshot(QWidget): def __init__(self): super().__init__() self.screenshotLabel = QLabel() self.screenshotLabel.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) self.screenshotLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) self.screenshotLabel.setMinimumSize(240, 160) self.createOptionsGroupBox() self.createButtonsLayout() mainLayout = QVBoxLayout() mainLayout.addWidget(self.screenshotLabel) mainLayout.addWidget(self.optionsGroupBox) mainLayout.addLayout(self.buttonsLayout) self.setLayout(mainLayout) self.shootScreen() self.delaySpinBox.setValue(5) self.setWindowTitle("Screenshot") self.resize(300, 200) def resizeEvent(self, event): scaledSize = self.originalPixmap.size() scaledSize.scale(self.screenshotLabel.size(), Qt.AspectRatioMode.KeepAspectRatio) if not self.screenshotLabel.pixmap() or scaledSize != self.screenshotLabel.pixmap().size(): self.updateScreenshotLabel() def newScreenshot(self): if self.hideThisWindowCheckBox.isChecked(): self.hide() self.newScreenshotButton.setDisabled(True) QTimer.singleShot(self.delaySpinBox.value() * 1000, self.shootScreen) def saveScreenshot(self): format = 'png' initialPath = QDir.currentPath() + "/untitled." + format fileName, _ = QFileDialog.getSaveFileName(self, "Save As", initialPath, "%s Files (*.%s);;All Files (*)" % (format.upper(), format)) if fileName: self.originalPixmap.save(fileName, format) def shootScreen(self): if self.delaySpinBox.value() != 0: QApplication.instance().beep() screen = QApplication.primaryScreen() if screen is not None: self.originalPixmap = screen.grabWindow(0) else: self.originalPixmap = QPixmap() self.updateScreenshotLabel() self.newScreenshotButton.setDisabled(False) if self.hideThisWindowCheckBox.isChecked(): self.show() def updateCheckBox(self): if self.delaySpinBox.value() == 0: self.hideThisWindowCheckBox.setDisabled(True) else: self.hideThisWindowCheckBox.setDisabled(False) def createOptionsGroupBox(self): self.optionsGroupBox = QGroupBox("Options") self.delaySpinBox = QSpinBox() self.delaySpinBox.setSuffix(" s") self.delaySpinBox.setMaximum(60) self.delaySpinBox.valueChanged.connect(self.updateCheckBox) self.delaySpinBoxLabel = QLabel("Screenshot Delay:") self.hideThisWindowCheckBox = QCheckBox("Hide This Window") optionsGroupBoxLayout = QGridLayout() optionsGroupBoxLayout.addWidget(self.delaySpinBoxLabel, 0, 0) optionsGroupBoxLayout.addWidget(self.delaySpinBox, 0, 1) optionsGroupBoxLayout.addWidget(self.hideThisWindowCheckBox, 1, 0, 1, 2) self.optionsGroupBox.setLayout(optionsGroupBoxLayout) def createButtonsLayout(self): self.newScreenshotButton = self.createButton("New Screenshot", self.newScreenshot) self.saveScreenshotButton = self.createButton("Save Screenshot", self.saveScreenshot) self.quitScreenshotButton = self.createButton("Quit", self.close) self.buttonsLayout = QHBoxLayout() self.buttonsLayout.addStretch() self.buttonsLayout.addWidget(self.newScreenshotButton) self.buttonsLayout.addWidget(self.saveScreenshotButton) self.buttonsLayout.addWidget(self.quitScreenshotButton) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def updateScreenshotLabel(self): self.screenshotLabel.setPixmap(self.originalPixmap.scaled( self.screenshotLabel.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)) if __name__ == '__main__': import sys app = QApplication(sys.argv) screenshot = Screenshot() screenshot.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4364936 PyQt6-6.6.1/examples/desktop/systray/0000755000076500000240000000000014532160402016370 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4374013 PyQt6-6.6.1/examples/desktop/systray/images/0000755000076500000240000000000014532160402017635 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.62138 PyQt6-6.6.1/examples/desktop/systray/images/bad.png0000644000076500000240000000470014532151332021074 0ustar00philstaff‰PNG  IHDRœ²€ÀV9sRGB®Îé pHYs × ×B(›xtIMEÜ 0D&N¦ÓPLTE              !"#$%&'()*+,-./012345 6 7!8"9":#;#<$=%>%?&@&A'B(C(D)E)F*G+I,J,K-L.M.N/O/P0Q1R1S2U3W4X5Y5Z6[7\7]8^8_9`:a:c;e=g>h>i?j@k@lAmAnBoCpCqDsEtFuFvGwGyIzI{J|J|K}K~LL€MM‚NƒO„O†P‡QˆRŠS‹SŽUV‘W“X”Y•Y–Z˜[™\œ^^ž_Ÿ_ `¡a¢a£b¤b¥c¦d§dªf¬g­h¯i°j±j²k³k´lµm¶m¸nºp»p¼q½q¾r¿sÀsÁtÂtÃuÅvÇwÈxÉyÊyËzÌzÎ|Ï|Ð}Ñ}Ò~ÓÔՀրר‚قڃۃ܄݅ޅ߆à†á‡âˆãˆä‰å‰æŠç‹è‹éŒêŒëìŽíŽîïðñ‘ò‘ó’ô’õ“ö”÷”ø•ù•ú–û—ü—ý˜þ˜ÿ™ÿÿÿs¶ÇútRNS (=\rîu#ËbKGDð5¸ïTRIDATxÚíœù_”UÆ­¬fmTPÀÄ…EÁ ÉPÑÈ\ZµÅ$Ê4Ë4ËJÍÊÒÔRJÍÊ4²ÍÊL± DS@öMöF™aæ!Ö˜å]îrî0Ÿ¼ÏÏœ÷~™yß÷žóœs§_?...........WÕw»ˆú‹ÀÝ©rÝÅán)¸dcŸª@.ÅÒ§*ãpŽÃÁÁ™]®0äGâ¥uŒáÊBTÚS„lY¾;˜ÂU„¶ÿÍ3Dl†«T›ÂU…un~î¿°¥{w„¾Í ®6¢{kv?‹Í–æÝºI`Wù_âà~“íO¯žÐ—pMÑViÇy,¶T¯ÞЗÌðpÍsm’.ÏT ¶dëи6h¸–»”Ð+ ™íœ‡mè³m°p7qHX½ÒÙÎz؇>c„„k}L$ö¾€ÄvÆÝ1tI+œq¹h²ïÀö«»Xèã7¡àÚž–(E|²ÙN}ô œùyÉBÉ÷¢ÛÉAR¡óš àÌ/Ê”q~9²l'´Ò¡1:z8al‘éwI†-I+UG ÷šB <ò²$Ûq­|èŒZJ¸7 tÿ$Ø~¨YM÷‚}06_”-Q£:©œn'’¹pM„í JhX1Ü.Dë%°Àíˆ-4¸€îcdc(°ÐŽík jhP>Ü~5ºmTdÃvXƒGwƒM¥ µ¾y¾tà õÏÁ†;е@;]9ÑGÞù"ÏÆ„KÔ¨05±¢;ô35n¨ïßxpËðíÒÈ:‚ï´{ŸÅƒ3.Å_"¼²=0AQyÏb ©±ì#`‹ªÇ~Z Kð—™þ.{>³žà=gXìgVÑqc‘Øf7î­ú…ÌÙ¢‰³ýÆlµPäsúùLÙæ·PeÂ-ó²-l¡¬!tÑÌØé©KÃÆYŒØÖÕ3™°‰ù%vDC¶ØV #§á~p¶¥0 ¬f0Ûr yX=”íI¨íz} ÛS ÎfÝd0¶çLàVÕ$ ¶xƒ&Ie8Û &&í¥Ò l«LŒs%ã©ÙV›™µ4‹ÇQ²­6ƒ‹ƒ©Ø^˜¶ÑóÆP°m ä’ÓmTb£ÝÈMÈöº"À\ÉÕQDl[3ôò×=lÛœ3‘Óü É·É)pM1d·Ü›N€kz€ôaÝÎN7—ü5÷!c¸zªZg'S¸:ÊJç#†pµ3h“’]ìÆ…î£Oçö0‚«‰È5Õ LધƒdéêOÀU@Õ7êýàpá*(©Õ‡ÖÔꃠpeAݷÀp¥¡À>ŽÛ0¸Â`´4Gà ‚x‡šD¸kL\WÍ·pùlØÚéŽQÃå0sú&QÂåŽeØ#Ñž ‚»äÏ´»¤=I—3’q_Î~î¢óŽæ Ÿá²Ù³Ù@†ËòÅ_j0þøÍ>*\Çñ\y¦ nXá#Â¥{㳠ϰXöá‡y$cÂ¥°ÝÛ9Ó¼—€î<Ü’ï´+t;~è„6,8ÓjÜFdöüûŸ`‡faÞsÂz¼|2{oë0o‡Lì§U؈³€¿Í´ðû8¡ÃRI^Âï /0ÊnVxzèвí ùÖ}Å>½ØŠü¤þAºñï!e³X¶ n)§ÉS&¤aÜ1WÅÊÍHûþ/4Éæåí(¸P´6 äÂÇéÒôÏ•&0ÇIÈÊ/£ßÓ8_ÈÓ/–4>„uØ•5vixl€ÜÆS,ch ¯È²}QT'}®!¤DÖ¨Öʸ9‡`ìˆSƒ%-U0 Í«$á ŒœŸÅÏGM®Tl,Hž|Ú g%¹þ”*„†‘)^”m¤yøû0‡ëO½ŽtšÏ‡ÑB$´]S<í®? ­n¥ÛhÃ:c„Íõ#ª‘OšVر½oõgúX]ßjd[YÆe¨ãäM’˽ísë‘m¬¬˜´—®ô FÌÆc³9"ofÔ˜+ìȱÙF£ëÂ31kiuŒZÍÑYðÕúD'Û ÃfpI¨ÃÈ6¢:Ä™¶Ñ‹W6ZȤ_ Zl`?WB(Ýúf‹ËÂ9g"‡Ãq8çp»“úT‡dá\Aî–»­¿‹èvþƒ¬\\\\\\\\\\\ÿCý ™¥\~Gq`BIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.621891 PyQt6-6.6.1/examples/desktop/systray/images/heart.png0000644000076500000240000006226414532151332021462 0ustar00philstaff‰PNG  IHDRèè*ZsRGB®Îé pHYs × ×B(›xtIMEÜ 4hfÙ|bKGDÿÿÿ ½§“d4IDATxÚì¸UŹ¿÷içÐËTz•¦ ½‹E@Q¤AADªTéçhÔ«&Æ$¶ÄDM¢&{‰5±wÙk§ÜMŒÆ6÷öJ‚W„µöÙkÖ¬µß÷yÞç¹÷ÿ÷FÏžùæ·gÏ|“H@.Q(Öum"¶;Š=Ä>âqâ(ñx÷¿ÖöuÿçÚ£Üÿzîÿ-€ªRM¬ïÖ–îûÕ›~ûÕ¡Ñâ÷¿îíþÏÛ»ÿ;÷«kùü9ÀjŠÝÄ“Äâ*±Büxø”øŽø¨²ì?Åß‹oŠŠ7‰;Ååâ,qŒ»ÖãcÈ)‰½Ä±âq…[—nßÿ(~@]ú‹[“~#þBü¾[—VŠçºu©“Xƒ ªB³Dz÷h¶¸^¼Ù]|þÀ┊/ˆwŠ»Ä ÄÄæ|¼‘CïT·ljŠWˆ?_?ŠP]J‰»křⱉô/Œû¨žHï8ëEBïø _ʰ”Zâ q±x‹ø.µè+þK|ÞÝL˜&¶eÈD} JŸ}Ü(>š#;PAø¶xµx¦xà  J´H¤ÏˆÏ[ÔÿþÝ­éÝϯ£;賌›Å§ìŽáçⳉôOÐúXLu†ÀA)sC¤¾°©µû’:’u?K¤Ï´ë_þ vá¢Ï/I¤Ï-ÑØŸqw²t`§$°Qž ݹñu¸¹kÂy .ÅAŸ#×­Ä6‰/²Yçq‡8 AdÈ ÝP~U"Ý•Z`_¸_”V‹]ªÙå˜Dúè ¨¢£#VŠCüä ñCï”ëÆ®ÿ—ù_uÃz'†0@fèîôÏÄ\¤ŠGû4ÖõùÐ<†6Dý«Ð°DºõáߘבW÷×)udhœ–‰ôEŸ7YÞ©ïΔ3À$ºè\áîPŒÑ?I¤/þ5dzæ,úKÚõî—6æÚà?ĉtÇ €À¨–H·%ã´ùÒÖj±Œéš3Ôw¿œ}ÂøGKý½8[,`º@¶ŸH÷¦¦ØbÜ+NI¤Ç‚x¢:Gü3ã#âïÄc™º tk²_SX1¢>&Ã4ŽCÅßQõˤm™Æ úœ¹îeNgŒCÇ}™¹1Ó:òè~Ó·1¦1ê;\[¸2¸U±½8@œ Η‰ÛÅkÝšr·ø¨[kV‹žÙ¯nÝ»_=»I¼B\+.ÏOûˆ­Åb> ¯:âD¦8 ©é‰‡(˜_µ‰8Dœ!®pÃò/ÄDÇßï¯Wº_‰‡ñùÈü¼%º‹Ï1nÿk¾ØL:~‹¡ž3ã(1^üsœ~Áëë^p|•ºº¿Ï[į.½ŸH¿¤ ¦šxe\ SC÷<ôƒ,>Öú˜¸(^gC¿+\ÔÊ&¥qªK-Ý3åO3ÿ­õ·_|íx½Ž¼:A;F€H¢ž"»RƒÜÇv³ÐDêl¨¾Èu\|Ú7êÇÊ)+U¦ƒøjÔǃn‡8ÖíãÍ]—h]|×ïAôŠOPÿ™X—²†ˆˆrá)w{?Á¢yõÎâñØUß+ö£¼dŒ>ÒòaÔwË—Ó¦5>è¶Ý­ýºô–Øò`7ú箉ôÏò‘,6Ǹ;¯{£üØFa¡JÕ®­RM›*§m[åt릒ýú)gÄ北vÒ$åLž¬œ)S”3kÖ×LqFú®=é$匩œÁƒ•Ó«—rºvMÿßmÜX9ÅÅ‘ù»ìu?ÛÑ^ ?O¤{óÓ²wôñ «£ú™ç¹>J¨¥»Ý]õˆ_,ÕÙÎ£ÔØIMñÖ¨}Œåæp§¼\9G©œAƒ”3~¼rfÏVÎÒ¥ÊÙ²E9W\aÔäÖ­ÊY¾\9óç+gêT匥œ=”Ó¬™rJJ¬üê°s¼{„)¢cö‡b ÊÎ!Ñ'îŽâg¬±œ,þ’›ê „ëÜM¢õ+é»g` mÄW¢VLt{>ýœó}6î:u”Ó©Ó¾ÝïÔÌ™û‚pª¢Âx¯’7*çüóÓ»öýû+§E •ªVÍŠ¿ïÃnŠè9õg´b<ú¼ù›Qû\«¹¯Vré3wÕ½ÕGE÷½‡ÇÅÆ”€ðѯ‚þ)JDµ­0—•)§sg匣œ ”³ys´‚¸++•³bž÷}Çoôq™¼¼P»¿LŠfOuùÇOô¢ }‘â_£ôY»>xLÿí/ÝãM éï‰)CáqZ"ýòadÎržàö§µ¡ø¦š4Q©URBjjåÊø†q¯ê/$gŸ­œaÔsÄ¡vÝ×þ¤è}ÑsðtÊÑÐga?ÒQ–©âóRüæÃŒXHÿ›8œr`ýyd.ƒêv{÷†]hõ±Ž®]UJ_¼\»–@î%°ë[Ê‘/1NÆF?+}ìiXôú¥_šã5I_œ­ˆÒ†Á8÷×B(zñv±w´êÒ§âlâ€tG„ë£R Žt{‡VT4HïÏŸ¯R;wº«¢¾ˆ:fŒJê˧†v×½Jõ£F9X—ŠÅ›£ò9 àò'VÁë¢÷B©îî–G|Ž:âýQ(úÕÏËÝkB¹Øyì±Ê¹ðBBuP^v™rN9E9-[ÖõC0Ñê£~»X’cué(|6ºùw ˜˜¥öŒ—е¢S—nͱº`Œú‰t×ë; œ#¾nºõ¡¾à©[.\˜¾Iˆ6fjõj匭œFýŒß‰%ÑX M¤[ ÆÝÅæÛ?¢Vñ1à‹â™ÑéD¥ëRmâ@öh"¾hûä->i²8æç§[ Ι£œ]»Ë6„õ /Üwñ6ÈþëOG§³Â+îÜ+íÅ÷mÿÆóò'ð~÷èTêÒ3bb@Õi+î¶ýgã›ì¾¢_è<å•Òý½ ÅvªÏûëWQ»tI‘ `Ü&¶ŠF»³Ö1¬K=Å¿Øü·oÏ럂úµäÆö×¥×Ä#ˆWUÛ¡Úcë$×]Î_3Qøô9çÎUêœs8µ]õK/U©ÁƒÓ]t²<.ÞgÙß–ñ±eŒêÒQâmý{붉ç‰ï1$'޵?¤¿AHÈŒnâlÜ-ÜL#­‡UΚ5„݈›Üº5ýËG½zY'úœæv/†ú‹v;v΃ïEw´ÅïˆåüÂ+úغêÊ³Ü {·5TjäH•Ú°p·õ;UêŒ3T2Ë—JßgØý<·~u4ʯû ?°u×ü.¢…ê_˜Oµ;¤'ÅÄ.€CÓ[üÐÆ‰ÜØDOóš5•3a‚r¶m#ÌÆÝŠ •œ>]9Mšdu ýÈîÝô?‰]"X—‰±kŽ˜™×ˆuì­KïÇì@ ÇZ¬Ü9×Z^ ²€Õ®­ýÂ' å¦ú!)ÝS=KãéM»w­~ŸHß/aÓ Šw`Îf×#ä³b»ïÊN ø:G‹µmÒÖ¯²hév|'ž˜>ŸLPÍm++UJw~iØ0«g@ëÚ¹êû%GFäXË?lü5ïG>Œ úáµÍö¾ç ;Æ5'Žü— û ë'Ö ªP)gäHålÙB0ůª{ÚOš”>î”…±¦{ów·÷‚V3‹ëRg÷HŽU·Áâo zqï[ÛY—ôÃcõ‰e‰DSñ-Û&é·‚úéX·KìÑC9k×DñÐ]_Ž?>ýe. Ïrϰ·±†´J¤/µZuA}±»IÀÃ8¨›-L°³.=àÅQÈqôÂü²M³†xeP©Må,]JøD]_Ö¯WNïÞé/wUƒ;ÅbûÃ߈¥Õ¥†‰tdkþFµÄïè0¦^æv"²¬.=jY]0F‰ø„M²¥û\q@“S§òÀVÍyó²r>ý^ñpûÃ_ˆEÔ¥2ñ)›þ6ÄÇ qsï°³gúbq r‰|ñv›&∠^Õ;žƒ)‡  ˜ÅêÎèÑ*YXX¥±ù’x¬}‹á b^ˆuIA¸Ç¦¿Éx·#sA}·¢}u©’ȹÄv›&àqo¶‹MóæÊY¶ŒP‰Á¸fJvèP¥1ú¾8˾Åpcˆué[þº…âEœ7Çô=ñdûêÒ"bäÚ2éô™·íÙ.0ÅÅéçÜ+*‘¼º-cYY•ÆìvûΞB]ZeË¿Mñû5Ìq׸£-™—_ŠS‰ogƉŸÛ0áÊij\PôC3©K/%4¢Y/»¬Ê»é?KíY ÿ%1X—&ˆ_Øðï^_¼‹p†¸Ï]vmüSìGŒƒ8Ò_ü؆‰v„ø`6 ‰>|Ê)\Åp6-ý N†ãø±©=‹á‰tò ékK]Ò=¡C(CüŠ?ÚS—þ&v!ÎAœÐÏç¦l˜`Äç²Y@5RÎEÑš³éN«Vç'ÜnF–,†¯Šu¬Kú †½6ü»vŸ'Œ!ÐGÄöÔ¥×®KÆ(NXÒNñ˜lwjéÞ]9—_N(ÄÀ^MmØ œåËUráBåÌ™£œ3ÎP©ñã•3nܾn.©#”3|¸r ø¯ªTõêëízyôÞD0mÎt›×gløwìD)Ę©¿À¶³§.Ý•Hw£ˆ4ß¶aBõÏf»2ý²ã”)H¬š[¶ì{¸*5{¶rtè–`íy¤J6jT¥€ ß°«ÝÙúê’[F‰ï¾=·‡ílO]ZA¼ƒ(s¶ é÷©ó¬‰ ”sñÅ„Kô×»\¿ ««6L9íÛW¹óŠ©vg#íY 'e±.oÿөn«K‚¢wߨÓÙådbD™C‰OÞD§dsìÔ‰#-xð0®Ûkê0~ê©ÊéÕK9Mš¨d~~dÃÝî\ ÿ‹²P—‰Ÿ…ýï3ƒçˆû¶8ÄŽºô¡Ø‘¸Q¢¾ø^Ø“G¿Â·'[/‚ŽM—üºú ÛÙg+gäHå´m[¥.*6‡ôãíX _K«P—‰ï‡ýï1%ˆ‡ÑsÌwìy ùy±±¢€¾ÐuoØ“fL¶vÎkÔPμyQL«¿¤éò±c•Óºµr"¼;î7¤²c1üa†uI_èº/ìþ©ìœ#fµ.gG]úÑ¢Àê°'Ëðl9¯_Ÿ‡‡P9Û¶)ç[ßRNß¾*U»vN/†–ìXÍÌ .-ûŸ{;çˆì¤÷·£.Í&þÍô û|ç`÷r[•'~›6ÊÙ¼™pš£&·nM?ü£_èÌ‘]r¯‹¡´þ!¶÷Q—†]—Ær!1ЮSÝí¨Kíˆ`#µÄ·Ãœ }ÜË#Užð={¦;oTsËíÛÓ¡¼K—t+M¾oì¢Ð+üÅð¹Dú/÷aö„ùÏ:"›]¤ñ€¾*~]zZ,"‚m|7̉ÑÃý]å‰>t(—As­óÊŠûÚ&#ÐúЦŰCø‹á¶CÔ¤<ñÎ0ÿ{¹¿:0fƒ÷±uøuiqlâ”0'D[70T¹SË„ Ö\ å;v(çÌ3UJebaËÈçÄÃÂïC<ê uiv˜u©}6ê"úò±<ܺô¹{¬ tZˆ k24I¤Ÿ®j8OvÁ5‚¹¾ô;hrJJX̲àãb£pÃ?Šå¨KmÄÂúçj)¾Èø@ ÅÅZáÖ¥½îñ:€ÐЭËîkTïªêd.(PÎÌ™„×8«š5+Ý‘Å+ëê9XlWëE}´%´–ŠeâýŒ ÄP½A,·.ÝHD„0YÖà—oêêªNb}pî\lœ/}žrŠJ6hÀ‚°WŠyá.†§ìW—æ†õÏ¡Á÷ˆV¸.üóè'! š%ÒÏo‡2ð/©âÄM*笳±q æ'¤œZµX¤ º0Ü…ðObc±e˜ué2Æ¢U~+ܺ¤;HÕ".‚i~Ö Ÿœóùó ²q¼ø9nœrJKY˜BP¿9&ÜÅðñ×aýçÏ` Z§~`x¸ué â"˜äô°{÷ª>D¤Ïœ³s¯`®{Öë`^³& ’uÿgeãä!"Dk}Ml^}ø"AW0„¾™ü‡0z·…R•Z)N™B¨“sæ(§qc!‹|R¬“Cá\·š|‰ÏÑjõÅíáÕ ùލN|„ ùa¼¨ª[t8Ÿ:•@-RÉfÍXx,õ6±0Ây [#ãw½Ì~9ñ‚dxX á¥UœúÁ6úÇY6nTNÿþÊÉÏgÁ±ÜÅ9Ð7ó9#riÔ›ŸŠÝˆ‘ÕÄ×ÃØcÜ hOÊ¡C ·q8g®;³T¯Î"÷ŠCbÎ'ñ#FÎÝbïðêÆ#‰ô; YeQºøfU&d¯^Ê©¬$äF9œŸ{®rê×gq‰ ¿K„þÒh`ué->_ÄHú[±<¼úqq²‰¬±‰¿…qîüÞªLÄv픣w^ ¹Ñ æ›6)§{w”ˆ{K"ý°X\Ây1çÎ#ïÃ;¾[,!VB¶¸>Œ…peU&`y¹r6o&èFQý‹ÇäÉÊ©Qƒ…$&.ŠQ@ßÊç‰ ç†WGÖ+!èK Ÿ›À}Ý3¬M<ýPÍŠÝ(º~½rºveñˆ™{Ä1ç#ø,cã»b‡pjÉGâáÄK¨*˜¼µÄ§3tº»Ç‚Ý(:w®J–•±pÄÔGݶ„Q çõܳ«|–ˆñê^-œšòâ%T…“ÃX¯¬Ê„›8‘ 5·mSNïÞ,9àºô«øücéªpjÊ—b?b&dB‘ø–éA{RU&ZŸ>„ݨ]]¼˜-9¤n—: ‚á|Ÿb¬ëRÿpjËDMÈ„9aü„üb¦“¬I“ôN,¡7:Nš¤œ¢"ˆS_«¡p®Û±½Ìç†k«‡ScÆ7ÁÅâÓuW¦“KŸ[^»–À·lQN—., u‰„×ðy!æ„Ë©1Ï%x¼|0ßô R•‰5g¡7*®\©œ¦MY r\Ý¡©{Âùp>+Äœê6Õ)œZs2±¼ è;&g ñ7™NªÁƒ ½QqæLå³àº'YÎK«ÒM #éÝbùzó¢˜Oü„C±ÈôB¸*Óɤ#Ú¾à…‡‡FRN^ ~Ås,è«ù|sҳ©9“‰Ÿp0ÊÄ?š”GŠïg2‰ŠŠTò’K¿¶»u«r:v¤èã}Glna8ïši]BÄÈû–ØÄ|ÝyM, †Â7±ÔôBø£L'Ñøñ„_Û½ì2Λã!½Þ²pž'ÞÅ炘ÓV†S¦Cá›:·={>:É“jÓF9`›û›¯X¡œ (ôèÉô |ˆôF{„³‹ÎYtø³LDù6 žÌ$œW¯®’´T´Û¹s¹ о|@,´ œë ëÏñy ¢øs1ß|K…ýÑ=8_69çg:i&L Ûì¬Y*YXHqGßΰ  /ás@Äýœd¾=L$…ý9ÑäÔ/ó½‘ÉdiÝ:Ý„ lïË tjÁ Õ¯uÖ 1œëKaïò9 â~>ï¶\5\zKáßJ”ä‰ƒ?^dø×½¿‹µ‰©¹ËZ“߯ͤ­b×®aûœGÑÆÀÜn°.}¿7"ÚùëÞ¹ÄÔܤHL™hGe°K¥Ûõ¥V¯&Û¦nuI±ÆÕ¿´µ4P—ºñ·FDKÝ_ ªæ&F[+^—É„8öX°mž~:ÝZЈ Ô¥«ù;#¢×›ßE?†¸š{Üa²CÂ^¿¡F ålÞL ¶É9sT2?Ÿ"F|ÏíMT]j—I]BÄœö±¾Ù€~5q5·8LüÌÔÛ”ÉD˜8‘@l‘É… Ó½è)ÐhÐˬKWð÷EÄ \d6 (–[s‡U¦W¹»æk4h œ]»ƶ¸l™rªW§0c(»èåÔ¥Vìž#b†¾’0þºèÙÄÖÜ @|ßÔÀº(“ 0e ¡Ø×­S©:u(Êš'x5ír†Ù€þ,Ñ57ajPU_ô;ðËË•SQA0¶ÁmÛ”sÄc }·ª,‹u©‘ø.WD¬‚ŠùfCzgâkü¹ÑÔ€š‘ÉÀŸ6`lCŸsù’”êÔ‰BŒVxNëÒ¥ü=1 žh6 o$¾Æ›bñ¯&SžøˆÏÁžlÔh_0$ [ÐGޤ£5>'e¡.Õ_ãYð'fú›DØxs’©Á4$ƒÁžœ>plI;Ez£mNÍB]:Ÿ¿#"fÑNfCzObl|ù¾©tU&gÏ++ Ça»t)íÑJ©â™Ïbñ·ü1‹®6Ð7cãI©ø‘‰AÔ ‘~×Ï Ová8lõÃPõëStÑZÇš¾ƒˆxõ‘¹s}˜GœM}Ë›ç÷hKY™JíØA@ÓŠ •ìЂ‹V{Ÿ{¿ÅoMÒçןá8Áì.z?âlü¸ÍÔåÐGýp}!‘®ãÆQh1Í .Mäù#³}'q6^”ˆÿ01xzùÜEE*µi9ÌŽ-‹«d~>…#á-lÜÇß 2)6ç˜ dÈñ¦¾Ýmõ;¸ $‡éÖ­ÊiЀ"‹‘²›št,/D Ø Íî¢E¬&MµLz /[FHSý‰âŠózuégü½1`ŸÈð~L†^B¬ï˜4Ãýê–- Èa:s&…#û“r{5©7+D´ð—½*ú±6´6õ³Ë¿zÊBrH&×®UNI E#ë5é;üÑ—˜ 蟊µˆ·Ñg‰S]|ÃÏ`..VI}þ™°Ž]»RP1Òê·?HMêÌß úŒÙc.‰·Ñç&Ëñ>rjà@BrXNŸN1ÅX¸æ 5é þ>ˆhØæúµÄÛhSlª½b¥ß¬Ÿ”',›wãFå”–RH1ê_íê žðÿš1"bU]a. ï&âF›á&Š~¥ïu?ƒ¸iS‚rXöéCÅX¹ð5i-D Á'Ͷ[ìDÌ.L ’~~ñI'”øzÖYPŒ/Š%ûÕ£zâÛü]1$[› èó‰¹Ñå1ƒäR¿çÏW¯&0›vûvåÔ¯OñÄX:g¿z´”¿"†èYæú­ÄÜhR]üÄÄ ùµŸÁÛ¢a9 Gޤpbl}Ö=jWËïq;DÄ,{³¹€ž$êF“¾&HãDúÑσw²i׬QNQ…cíDw犿"†é;‰tëiC!½9q7z,218Nó3póò”³nÙôÙóîÝ)š{pwÒù[ bØk. O&îFÛM Žkü ÚV­̦]¸b‰ˆˆhеæz%q7zü>èQ ¾F÷{­¬T©–-)–ˆˆˆ}Ä\@ž¸-Ú™üÚK.!4›<Ú‹¡ˆˆˆ¡Xn& !Ö!öF‡©&ú4?ƒµ^=B³AS;wª”þ›S${¼¹]ôáÄÞè°ÍÄ ¸ÒÏ`0€àlr÷|Ò$ $""bH®2Ð/"öF‡_™Oû¬sæœ >J”ª]›‰ˆˆ’?7Ðo$örAô?–û¨……*¹u+ÁÙ”ãÇSCtwÂX?t.ŠF„Æ&¾±õ3PÛ¶%4Ü=OÖ¬IqDDD Ù¾fú§b5â¯ýg" ¯ò3HO8àlʱc)Šˆˆˆ8ÏÜ1—NÄ_û1ò‚èm~é‚gC»çNi)Eѯ4ÐO'þÚÏwM †W<Îd~~:8 ƒ÷´Ó(ˆˆˆˆ–ø€¹€¾øk?ÏXuAôˆ#Ά^ u5¢ """ZtQ´ÈL@¿‹øk?z ö3@‡ !<›è{~ÖYCDDDËìh& ¿Eüµ›†&~J™ëgpΜI€6¡î”C!DDD´Ê“Íur) ÛKo½ÂÇÀL®]KxÚ‹/¦"""ZèrsçЛƒíåTƒàW^¦î(B€Þ¾})‚ˆˆˆú}s}1Ø^–=òÄ·½Ìöí ÏA{ùåÊ)*¢"""Zè“æú4b°½\ôhäg`J€úrè¤I@DDDKÝc®“Ë*b°½Üôèág`N™BˆÚã"""Zl33ýb°½¼ô8ÉÇ€L-YB€Ò‹.¢ð!""Zn3ý!b°ä‰=Îõ: óóUjÇBtöïOáCDD´ÜSÍô÷ˆÂvR×Ä%„M^¤~Õ’œÛ·+§¤„‡ˆˆh¹‹ÍôOˆÂvÒÆD@¿Éë€ìÔ‰¤ú(Š""¢õî2×É¥Œ8l}L|ø{=>x0!:H:Š¢‡ˆˆd. · Ûlj&>ü—½Èñã ÑA¹u+½Ï#âæú1Äaû˜ô_ îõºƒ>{6A:(§O§à!""FÄßš è#‰Ãö±(辞Ÿ¹t)A: S]»Rð#âîDú%vý â°}¬úƒoíg@nÞL˜Â-[T²°‚‡ˆˆ!k™ è ˆÃöquÐ|O¯Ç[ªW'Hµ{N÷DDÄÈÙÂL@_M¶Û‚þàGx„Iz gÏž:DDĈy´™€^A¶_ýÁŸêu ¶lIÂÊJ唕Qè#æ03ýzâ°}Üô?Ëë@ìÒ…0„^H‘CDDŒ cÍô‡íãá ?øy^bŸ>„é =š"‡ˆˆA'š è·‡íã7AðçyˆÃ†¦ƒ¸ ªQä#çéfúÄaûx>è~±×8v,:Ûê¶•ùù9DDÄ:ÃL@¿—8l/ýÁ/ó:O?@mçÌ¡À!""FÔ9fúÄaûx+è~•ÇA¸¯W7¡:«&;އˆˆQÏ5Ð'ÛÇž ?øu^¢Þí%Tsþ÷y™€þ qØ>RAð—{ˆs窳éöíÊ)( À!""FÔ%fú Äaûp‚þà7{=â2>¡:›Ç[.¤¸!""FØ Íô߇sðˆËz¯QJ‚uöŽ·ŒGqCDDäˆ G\"È;Aðk½ÄÅ‹ ÖÙ è]»RÜ#ì3ý â°}¼ô¿Òë@\º”`Mkצ¸!""FØyfú#Äaûx%è~¹×¸l¡:›QØ郞 zy1è~);èæ=ï< ""bÄi& ÿ’8lÏýÁ/ö:/ºˆ`-O9…†ˆˆqÏ4ÐA¶§ƒþà/ðÚf‘K¢Ùk±Ø¯… 1âN6Ðï ÛÇãAðs=Â$m³g‹6DDĈ;ÖL@¿8l¿ úƒŸêu ž>Á:VV*§¸˜Â†ˆˆq5Я'ÛÇO‚þà'x=âÂK¢ÙqÝ:Š""b ìi& ï$ÛÇAð#¼ôsÎ!\gà . ¨!""ÆÀŽfúeÄaû¸2è~€×€>{6á:N›FQCDDŒÍÌô%ÄaûØô´×K¢S§®³áèÑ5DDÄXÏL@ŸK¶Aðí¼ÄI“×Ù°o_Š""b ¬f& O%ÛÇAðM½q7Žp Û¶¥¨!""FÜwÌ„sí8â°}Ì úƒ/ñ:G"\gÃúõ)lˆˆˆ÷7æú±Äaû˜dâÃÛË`:”pWD )lˆˆˆ÷çæz7â°} 5ñá?åe0êçé ØUsÛ6Š""b ¼Á\@oL¶.&>ü»½ ÆnÝØUuÍŠ""b Üb&œ!‡í£±‰€þ}/—DÛ´!`WÕ%K(jˆˆˆ1p©™€þG¢°‰_=vyŒååì*š:÷\Š""b ü–™€þQØ^þôXåe0––²«êôé5DDÄ8ÎL@ÿ51Ø^ÞzÌó2óò”SQAÈ®Š§œBQCDDŒ=Íô›‰ÁöòXÐà$ƒ1µi!»*ŽCQCDDŒÍôÄ`{ùiР—×¹|9!»*è“'Sà#êÝæÎŸ¯#öF‡ƒõ¼ÒåË Ü™8k1¢n1ÐÏ$öF‡kL Šç¼ Ò3Û™8>1¢N3Ð&öF‡…&Åtr Î%K(pˆˆˆµ»™pþ \¢Å±&úÅ^iÇŽ„íL\½š‡ˆˆÑ ¢ÕÍôgˆ¼Ñ¢¾‰€>ÖË@­]›°‰[¶Pä#èÏÍo¹†È=ö=0Zy¨© Ü™tr©^B‡ˆˆ1W™ ès‰»Ñã® Fžø²—€~î¹îL,/§Ð!""FÌÑæzoânô¸ÌÄàøž—Áz „íLlßžB‡ˆˆ1™ 矉%ÄÝè1ÑD@?‹¢ÁÙ»7…1B>nn÷ü¢n4ikb€xzQ´¤D9••n¿gÐGޤØ!""FÈæúuDÝh’'þ%èR&¾ïeЮXAèöë¤I;DDÄyš¹€>“¨]î11Hîó2h§L!pûÝA?çŠ""b„<Ì\@oGÌ.«L ’õ^íÀ„n¿®ZE±CDDŒˆ˜ çpOJ@Deb œèeàê–„nVT¨da!E1®3ÐLÄ6uÅ/ƒ(ò¢öz¼ëֺ酎ˆˆKGš èq£ÏË&Ë=^ï´in¿çлv¥è!""Zîn·q†¡€~ ñ6ú\ob°¬ð2€ûö%tûuØ0 ""¢åÞa.œÿC,"ÞFŸ9&Ì0/¸A·_O?‡ˆˆh¹ç™ èwmãÁ‘&L©ûóΡpjõjB·/ºˆÂ‡ˆˆh¹8>ÑmxR&ͽ âÉ“ Ý~ܾ]9yy?DDDK}Ü\8×v&ÚÆ‡˜4ó¼ äÎ ÝtrADDŒ«Ì…ó$ýÏãÅ §—\T”Þ&x{6Ù½;ÑR{™ è×iãEKS?½üÆË`ž7àíDZc)€ˆˆˆú²X`. ŸA¤o›<ë¼ è!CÝ~<ûlŠ ""¢…n7ÎõÓåÄÙøñ?¶´[LÕ«GèöãÆADDD d. ?G”'“M  êâ›^õòåo?Ö¯O!DDD´È߉…æúJ¢l<©'~nbUzØÇOèöaªgOŠ!""¢E®5Û^± Q6¾eÕeÑñã ß^2„¢‰ˆˆhÀafúÍÄSÐl15èN÷2ôÎpe%üPΛGÑDDD ØûͶVÔ'š‚¦«©AWC|ÍË„˜=›~¨v‹;w*§zuŠ'""b€žl6œ¿— ÷9ìÇs¦ßj/¢U+B¸“úVŠ'""b þF,4ÐWIaÎ75øŽ÷x™‹ÂåŒPDDÄ€œi6œÿKlL$…ýi$~fj^奣‹Þ&„Ü-[”SXHEDD̲/Š%fú÷‰£p ~jjv÷29 ”sÙe„ðCséÐBŠˆˆ˜eš çÚ>DQ8£LÄ;¼LÁƒ á‡ròd )""bÕ -j™ çOCá›Ð·†ß25÷0ARÕªñpÑ¡º¹¬_¯œ¼< *""btwϧCá`\dj0ˆy9‹~ÜqñCÙ®1 ¾,Ö4Îÿ Aá`4H¤Ÿ˜52(Oõ2YØE?ô.:Ç\³â|ó»çk‰Ÿà…M Ê"ñI/æøã âSÑ—j)¬ˆˆˆUêÜRj6œëMÑ&DOðB?“ß§z™4¥¥*¹u+Aü`vìHqEDD¬‚sÍïž_Mì?½ßí.g8 ÷ nB&œor Nö2‰ô³ökÖĿɳ΢Ð"""ú´¿ùpþ b&dJmñC“gÑ÷2‘úö%ˆS»ÅŠ •¬Y“b‹ˆˆèÑ[͇síqÄL¨ ;LØ ^&“n'¸bü›<˜‚‹ˆˆèÁ¤ØÕ|8Šx U¥•{ËØÈ ÍwÏjB¥:u"ˆ“_LÑEDDôàá잟@¼„lpƒÉ;Òã¤J{.aü›<ì0 /""âA|Klb>œ?I¬„lÑAüÂä¾ÃËäjÜxß™kù<ùdŠ/""âAñk>š0þ(‘öAâ$d›Ž¦wÑ·{9æR»¶r¶m#”èeÑ£Ž¢#""Àáìž%NBÜar ësao{™hC‡Èä‚aDDD;Ú*>LŒ„ 8JüÒä€>ßËdËÏOw.!”ÕÊJ•lÔˆbŒˆˆ¸ßÅÐÃ͇ó/Ü w›Ô5Äç¼LºV­öR‚ùÿ;‹>~<Ñõ‚pvÏo#>BÐô0½‹>ÉëÄ›:•PþÿÝ´I% )ʈˆ˜ó>,V3Î?ÛÁ7™þöy›—ÉW«–r¶l!”ÿ»w§0#"bN«;Ãug÷|;±LÑÖýFhl€·w{™„ƒÈÿ¿çGqFDÄœvc8áüÏb]b#˜ä;¦úe^&a^žræÏ'”ó²(""â>_ë†ЗÁ4-Ä™èµÄßy™Œ©ÔŽ„òý=ã Š4""æ¤'†Î÷Š¥ÄEƒ]¦ü)^'䈄òý»¹è/,¥¥jDDÌ)¯'œkO'&BX4?0=èoö0!“º7ú’%„óýCºþÒB±FDÄñ%±A8áü1˜a²ØôÀ?L|ÃËälÞ\¥**çÿvõêô}Š6""æ€# 纉ƑÄC›êâ{¦'À\¯tÌ‚ùþ»è]»R´1ö^ÞÑ–+‰†` “MO€Bñ^¯G].ºˆpîš\¸Âˆˆ±öE±Qxmë Áô9«'MO„.â/“µqcåÐÕå¿¶hAGDÄØ:*¼ÝóyDB°þâ—¦'ÃR¯vøp‚ù¿¹ÌœIGDÄXº-¼pþ”X@¹Ùô„(åñ¨Kê èÚ]»”S§…cåbY8áüs±;1l¥\ü«é‰ÑF|ÇËä­[W9›7е&PÌ16·{¾™¶³8ŒÉ1ßë$>úh¹¾,ºu«rJJ(ꈈ //œëCkÿÀvôù«ßšž ùâ=Nâ}g° éÊ:”¢Žˆˆ‘÷.·»[Hýx¢D…¡aL’ÖâÛ^&sq±J­\ÉeÑ ”STDqGDÄȪ.l^8ÿ‘¢ÆØ,g{Ô­Zñʨ>êÒ¯#ëÄðÂùb3âD¦â‡au¹ÍëÄ2„€¾v­r )òˆˆ9w†εgõ ª, cÒ4_ñ:Á§Mã,zß¾zDDŒ”Š¥á…óûéG"I¡øL“g´×I^\¬œåËsû,úêÕûúÄSð1 êûfG†Îÿ.¶$âAÔé ~Æ$Zïu²——+G·Ìå]ôcŽ¡è#"b$îÑ–ÙD;ˆ ë˜D5ć½Nø=r; ë_òò(üˆˆhµ—‡Îó‰uª‹¯…1™:xm½¨4)·Cz·nDD´Ö{Åâp¶´&ÒAÜ(~Ƥ:Õëä/(P΢E¹З.e­ôU±Y¸»ç³ˆrW®kbíôZêÖU©M›r÷Âh§N,ˆˆh•Iqx¸áü§D8ˆ3eâÛaGÐk1hß^9¹úˆÑâÅ,ˆˆh•‹Ã ç¿á î ë¨K{?çÑÇŒÉÝ]ô6mXÑ ¿›H?Bb@?‘è¹Âΰ&Ú¯E!/O%§OÏ;`‹""†îCbÍpÃùÕD6È%jˆo„5áÖx-Õª)çâ‹ss½eKDD Í×ÄÖá†ó·ÄR"äýÃ:êR$þÄk‘¨UK9—]–{!ý‚ X 1÷ŠÇ…Îÿ%ö$ªA®²)¬É×H|Þk±8üpålßNGDDD.7œkÑ —ѯq=Öì$¾ãµ`èG|*+s+¤/[F_tDD4êÆðÃùOÄ<"ä:úU®Úˆ3|ÔÈ‘¹wÔ¥G DD4¢>~Z-Üp.ÿ‰FD3€4g†ùmy‡Ÿ~ƹÐW®L¿°Êˆˆú¸X/Üp®ïÅ #’|•›Âš”úÛúO½VÏ??·Bú€,ˆˆ˜¯„ß±E»ž(ðuêˆï…51ë‹Oz-&¥¥*µzuî\]¿^¥tËIDD̲»Åþá‡ó‡ÄB¢À ~ÖÕ/¾î£³KrëÖÜÙE:”…³î©á‡ó”Ø„pp–‡9Qû¸ßæ=–6m”³cGnôË/WN,&ˆˆ˜5…Îu¿óÞD/€CS þ:Ì ;ËϥѮ]Uª¢"7Bú˜1,(ˆˆ˜¯óÃ軼ÓPÜæ¤]ã§ÐèK”¹зoWÉš5YX±JÞ–H¿êr8¿‘¸àŸãé–G¡L\]8nñSpN8!7Bú)§°¸ "bÆ>•H¿ær8S¬MÔÈŒÕaN`™¹ê?…G‡×¸ô;•Ó ‹ ""úö5±Cøá\?ŽØ‰ˆPµóè÷‡9‘[ºýY½žd~¾ræÎHŸ:•…}ùŽØ;üpþ¥8žxPu$Bì®í'¾ëµ*gþüxôÊJå´jÅ‚ƒˆˆžÜ#?œ+÷—yÈ=ÄÜÔ'ˆï{-FÕ«+çâ‹ãÒ/VN^ ""ü×eq’áü1ŸH]&‡=¹Ov §¢T»¶rÖ¬‰uHOvïÎ⃈ˆušáü±Œ( W…=Éùé‘Þ¤‰JmÚß¾jUúH ""Àåv„ó¿ˆí‰PÁQ(>öd_å§@•—«ÔÆñ é#F°!"â×\cG8×ÇcûŸ‚çpñaNøñ:?…ê°Ã”³ys<¹lݪœZµXŒñ?^/ÚÐg›Ì1DüW˜“¾Xü‰Ÿ‚uÄʹüòxî¢OžÌ‚„ˆˆûü±»FZÎ7—Ì3)‘îgÚä/ïõS¸Z¶Tζmñ èÊiÚ”… 1ǽS,±#œOÌ#*„ú°‹@}ñQ?¬}{•Ú±#~!}Á'DÄö!±®áü×b5"@xè—Fï »´_öSÈ:vT©;ãÒ;wf‘BDÌAŸ›ÙÎß§DüMØE¡«ø†Ÿ‚Ö­›rvíŠU@O­X¡œ‚+DÄR`uíà4vq8.‘~ÎØsa;úh•Òç·ã´‹>x0 "bŽø‚ØÖŽpþ™8Š8`G‹ÿ»HŒòÒS*§²2>]÷|/)aáBDŒ¹Ï‹­ìç´S°œ âaŠÅ÷ýºcŽIwB‰ËQ—ÓNcñBDŒ±/‰í ç´SˆËm(§Š{ý¼=âsÜEÿ"Т‹"b }E<ÒžpþÃí"ž¨·ÚP8æù-|q éK–('/Å 1F¾)ö´'œ?%–{¢Cuñq ÈŸÅ/Ù½{|Bú€,hˆˆ1Qw*ëaO8^¬M܈MÅwm($Ëý£ŽG ÆÍ›U²¬Œ… 1âÊbªÙÎß›s¢K+1eCA¹ÄïNúQGÅ#¤Ÿq‹"b„}GhO8×kzkâ @ôé"þ5좒'®÷[;wŽþ‹£úÂhË–,rˆˆÝ9lO8×kyWb @|8^ü4ìâR ^á·@vꤜ;¢Ò—.UN~>‹"b„ÔozŒµ'œÿKAœˆ§&,葞ŸAHOÅ!¤óÂ("b¤vε'œëWBÇcâËE6›"ñ¿!½k×hwÙ¼Y9\ED´Þ݉ô«Ø {<‡ø6ØPpôq—í~Cz›6ÊÙ²%º!ýÌ3Yü-ïsÞ×®p¾”Ø臌®µ¡ðè‹£üÐ#ŽP©M›¢{a´m[ADDKÃy»Âù" @nQ ÞnKH÷ÝÝ¥qcå¬[;|¹r X -{„¨—]áü:wC rŒšâ36¢ü Ž»8ååÑ éC‡² ""Zâ[b»Âù½b5b @îR_|Å–ôµ~Ϥ׮­’—\¹€žÒi6daDD YYUW»ÂùÏ ç Ñ¯:¶„ôM~ li©r.¼0z»è矯œ¼<HDÄ|]ìiW8L,#–À¿i#&m)RKýÚ’å,Z½ô>}X$Cð%±“]áü!±qþ?G‰‰ìq—jÕ”sî¹Ñë^³&‹%"¢A_»ÙΟëCà›è%~`KH_•IHŸ7/R!=9u* &"¢ÁsËΜ¿(6 ~À¡(~dKñZî·çç+çôÓ£µ“Þ¥ '"bÀ>/¶³+œ¿*–;À+ýÄ¿ÛRÄfˆI?…X_¾=::»èk×*§¸˜1 ³+œ¿$6$n€_Ž?¶¥˜M÷ú-ÊC†¤_ïŒBP?ùdQDÄü•ØÀ®pþ ;çPF‰ŸØRÔNwû-νz)g×.ûºþ"Ѳ%‹)"b½S¬eW8[<œxUe‚ø™-Åm¸ø®ß"ݹ³r¶o·?¤ëG— XT³àMb »Â¹,_‰fÄ ÈsÄ/m)r#Ä÷üë-Òm mé#F°°""Vш%v…ó?ˆ‰mγ¨Ð©â[~‹v“&ÊY·ÎîÇ‹vîTNy9 ,"b†^#ÙÎÿWìNŒ€ ¸Ø¦®Ÿh~ÍgáN6j¤œ5kìÞE×.éN4,´ˆˆ¾Ü.ØÎÿ(v#>@Ð\hSHïâ><áëA£:uTRŸ÷¶¹õb¿~,¶ˆˆ>Ô/PçÙÎ/v&6€)&,:“ÞÎ}€ÂW1/.V©sα7¤oß®’ °è""zðB»‚¹Vþ±8sæ™%~aK1ÔP<æ·¨ªäôéö†ôóÎ㨠"âAÜ#žj_8×­› ,æÙ´“ÞD|Øo×ø¤“ì½4:p ‹0"âÔïbœl_8—ï ‰6Ä›É ‹ú¤ë)~’I±:ÔÎWGuÿvŽº "~Å×Åþö…ó7Å#ˆ` §ÚÒ«‰×fRô{öTŽnsh[H_°€£.ˆˆ®/ŠÝì ç/‹‰`“l éºÍÖÖLŠûöÊÙºÕ¾Þ¿? 3"æ¼O‹mì çò!QN [™(~jKÑÔí¶–g²4mj߃Fò¥!U¯ 4"æ¬÷‹åö…óÄF,ÿ`;'ÛÒµ³ôE~ƒúõ•³bG]-ð.±Ž}áü·bC–}ˆ VI×N÷ú]JK•³h‘]!Œ1ǼÝm`Y8ZlÀrw©¢cݶ\¾‡’’ôε-}óf•ª]›EsÂÄêö…ó‡ÅZ,óUN?±©°ßô»Häç«Ôi§ÙÒçÏç¨ "ÆÞb¡}áü±Ë;Dáâ?l*°G‰/eò Ñ˜1ö„ô^½XÀ1¶®r/ú[Îo‹YÖ .ôÿjS¡mã¶ëò½pè`lC¯tý€QÆ,äˆ+õ…þyösíb!Ë9Ä£Å?ÚTpŠ÷fÚ+}Ë–ðCº¾ÀšŸÏ¢Žˆ±Pßšhg8ÿ¶˜Ï2q¥¥ø–M…·Ä½„ä{1iÒD%×® ?¤ÁÂŽˆ‘÷5±Ÿá| K7äMéW׬)ÀúÕÑM,(ûº©,]n@ßµK9Í›³À#bd}Flo_0ÿR<—%r ýêÚó¶í”œ“ÉâR\¬œyóB é©K/UNQ ="F·ÅÃí ç_ˆsXª ©#>j[H?UÜã÷R“>>yr¸;é'²Ø#b¤ü©XÛ¾p®ßï˜Ì ¹Œî%{¯m!}„øv&mGVNee8]ÿçy$‹>"FÂkÄjö…óÅYšÒ!ýnÛBz÷Ò’ï…§OŸô¹ð0BúºuÊ)-eñGD«Ý%ÙÎ?G³$ü—jâl éÅç3Y€:tPÎÖ­á„ô3ˆh­Ëí|€è/b?–b€‡ô›m éúòÒC™,DM›¦w´ÃéÇC@D«Ü+~ËÎ6Šò–èÌ ðÍè‡ ®°­€×ï̤ c:ÊY¶Ì|@ß²E¥êÕ# ¢¾+ޱ3œ¿&6géðÆJÛ yuñ»™,N%%Ê9ÿ|ó!}Á‚ôÅUÂ"†è«bo;ÃùÓbC–[L?³© ës“‹2Y¤tòÙ³Í÷G<˜€€ˆ¡ù¨ØÜÎpþ³DºAdÀñŸ¶÷YîyÊŒÚ0š è;w*çˆ# ˆhÜ;Ýã†ókÅ–W€ª1Hü›mE~T&½Òµ}ûªTE…ÑWFSÕªј7ˆ5ì ç›Ä<–U€ìÐ)‘¾ioU±ï.¾ÉÖ±£JlØүœÑ€’€U}ÁüKñ<–R€ìÓR|öÞÜ=gé{!kÕJ9›7›{e´S'Â"ê9vîšë»Lg²„G¹øœm €>gyG& ZýúÊY±ÂLH¿ürZ/"b îOµ3œë;LcX:‚§žø„m A™øƒL·ÒRå\p™®Û=æç(1«=ÎO°7œŸÈ’ `ŽÒDºM–U B¡¸5ƒ.YX¨œY³Ì„ôáà ˆ˜_{ÙÎÿ,öc©0n“uµ… ƒZ¨C·ßÅ.?_%'M > ïÚ¥œ-ˆX%ŸÛÚÎw‹Y"ÂźWGµ“Üs™¾¾¡CÓ—:ƒìê²zµJU¯NÈ@ÄŒü•Xng8A<ŒeÀ¦ˆŸÚ¶Xô_Êd<úhåìØìNú”) DŒSó_$ÒÇÀ"†‰ضh´Ïd!lß^9[¶Ò{ô p ¢g7ÚÙãü߯ƒ² ØI—„…5ïÉäòh³f*µqcp}Ó&åÔ®Mð@ă×"{{œkW%xÀzôƒF¯Ù¶ˆÔpö½8ê½lYpçÑ/¼P9„DŒZó/Ä,yÑA÷J̶Eÿ4¼!“E²¤$ÝÃ<¨ô±c "ˆø5ßÙÎ?'°ÔD+{¥kg‰{ý.–……*9}z0]w騑@‚ˆÿñwb7;ÃùßÄ¡,qÑE÷J¿ÆÆ>Æ}Ï×¢™—§œÑ£ƒ éú¬;çÑQ|Dlfg8_ìÌÒ}òÅm6†ôcÅ73Y@‡ ¦Wº>F“ŸO@AÌaioówÄö,iñbQ"}©ÈªE§‹ø|& i·n*D¯ôã'¤ æ¨7‹ev†ógÅÆ,cñd¬ø‘m‹O¹»kåw1Mµl™n•˜íóèº;a‘çvx§Xƒå Þ ÿlÛ"T[¼=“…µaCå¬Z•ݾnrÊÊ-ˆ9âr1ÏÎpþ]±ˆe 7èHŸg´j1ª&^›É[«–r–.ÍnHŸ7/})•ð‚ëˆæÚûѺäºWúö-Jzë’LÛâât¨ÎfH6ŒƒSßGÙÌ?Ïd‰È]ŠÅ›lÜ=ʤWzRw`9ýôìô]»”£Ï¹fcåKb;Ãùâq,M BÝhcH?ÞÝåòÝ+}„ì…ô•+UªzuB bL|Zlgg8ß+veI€ý9/aaF½Ëõb& ñqÇe¯WúÌ™ÄxŸ½=Î_[² À/þÓ¶Å«…øX†½ÒlõJç<:b¤Õ]¢jÙÎI¤ï|#}Ä?Ú¶ˆ5ïÎdanÛV9[¶T9 §**”Óº5A1‚^åv‰²0œßšHß8$­Å×m[Ìjˆ7dò QÓ¦éÞæY螤?:b¤\gïDWˆ,7à‡ú⣶-jz¡ÝÉB]¿¾rV¬¨zH_°@9º[ ÁÑúç³ì æ_&Òw~2¢¦x¯m œî•¾$“E»´T9‹U=¤ŸpÑbßÏ´3œ.žÅÒUE?3}½… š"îñ»xW«Võtw˜Ž Bˆ<@äÇı,)M¬lÃ8@|-“Î8£j—F7mRN:"D‹|Aìfoó.,#'‹Û¶øuŸÉäA£Ñ£«¶“¾x±r Fˆ¨[±6··Çy –’~âŸl[õã#¿Êda5ªjK8B Ù{ÜV¬†szœ€1Žß³m1,˜Éß³§rvíÊü<úQG’Còûn V Ã9=ÎÀ8Ågl[‹ÄŠLú£V©;3 é›7+§^=¢a·Š…v†óÊ=Î $JÅŸÙ¶8ê6Œ‹2yШM›Ì_]¶L¥t‡B¢¹sݲú£/ÒÓãBGï}ÛÂ,59ƒ6ŒúÕÑÔúõ™…ôéÓ Nˆ»Wœiç®ù§âT–°…eÛâªû&_á7,äå)gÂÿuêDÐBÌÀ‹µì çß‹(ïeôKz7Ù¶ÈfÔ+]‡ôñãý]Ý´I9uë¸}øm÷Ñ1 ÃùJ:Ä݆q“…‹­šáöUö †ç#Ä€\içDŸ‰3(åGô {_ØÒÏ WzjàÀô¯!}Ú4Ââ!<ÇÎ]óŠc)ßg&¸ žU‹p?ñ5¿bÐ !½woBâ7¼:ÍÎpþ'±7er¾îÂgÕbÜA|Îo¸èÑC9»vy èòÿ/Õ¦ q?õ¯W£ì ç»ÅŽ”kÈ%Žß³mQ>B|ÔoÈèÜY9;vx»4ºaƒJÕ©C0C_ûÛΟ›P¦ Ñ à³¶-ÎuÅ»ü†v픳m›·ôÅ‹U²°€†9í‹b7;ÃùCbÊ3ä2ú±_ضH×ÈàA£}ÇW¶nõÒ'O&¤aÎú´ØÆÎp~K"Ý çÑ âͶ-ÖÕÄÿñ>š5SÎæÍÞBú€„5Ì9›Ùί )ÇÿE÷J_eÛ¢­û1_â7„4i¢œõë=]u¸4Š9äbmû‚ù—  8(VöJ_(&ý„‘òrå¬[wèK£7*‡K£˜þX¬i_8ÿ\œGÙ84'‹ÛÒ'‰{|†ô”‡ôäÂ…Ê)( ÄalÕ÷9Jì 绵<ÒSü½m!}€ø†ŸpR¯žrV¯>ôq—3Ï$Èa,Ý.ØÎÿèÖðIKñ5ÛBúQâK~º»HHOy éè0V®vïqX6‡ß[S^2§žøˆm!½­ø¬Ÿ°R·®rV­:ô¥Ñ¶m v ϱ³SËsbcÊ*@ÕÑmo±m±?Üï«£ú2è!B:—F1ê&í ç÷&Òï.@–(+m[ôŠ¿ô`jÕRÎòåßI_ºT9EE„=Œœ{Å3í ç7‰Õ(£Á°Ê¶Å¿Žø3?;Œ5k:¤O›FàÃHù¾8ÙÎp~¥ûdªø/›B@©x“Ÿ@#!=yÉ%?î2x0Á#ánq¬á|%åÀ#Ŀۊī|†tç`!K£ß‡ÙÌõcgçP&ÌsŒø›‚î÷¼ÉÏq—²2å,[vðK£º A-ôu±¯}á\ÿº6™òÍÅW- ûºXx:5j¨Ô’%½4šªV@ˆVù¼ØÎ¾pþ8˜²>º¯ñs¶…ô9nË9ÏÇ]vqtòdB!ZÎÛÛÎÿ,ö¥ØC-ñ>ÛBú©nw OÁ§¬ìàG‡ !bè>-¶°/œËwáDgÊ €}èVjÿc[H.¾›…ôTE…rÚµ#$bh>(6²/œÿNlBù°—¼„…½Òû‰oz Bõê)gíÚ_ÏK£Š¿væ²ln=&Ö¥ìDƒù‰t«5kÂD/·ë…§@¤;·¬Ysà®»¾pi z¿ØÀ¾p~·XJ©ˆÄm ]Å—<†¢ÔÁvÒçÌQN^á÷çbmûÂùÍb5J@4šH·^³&\´s»`x H©”>Ör >z4õ.±–}áüÛ‰ô}ˆ0}Ä¿Ø2:ˆ¿õ”ÊËUjƯôÊJåôèAÄ@¼ÛÎóËé{&:Š{l ‡‹{ LM›*góæ¯wvÙ±C9Íš(1«Þ*Ö°+˜)žKˆÍÄ×l éÜîž‚Óá‡0¤ï;§®Û3,1 Þ,–ØÎ?§R¾âKSñ›Bz¹Û_ÚS€jÑB9[·~=¤/Z¤’……LŒÛιçgR¶âO™øK›Bz-÷Bž§ Õª•r¶mûzHŸ:•‰{XdW8ÿ§xå w(dSH×;—·x T;+g×®¯‡ôþý ›èÛÿ±/œëÎKƒ(S¹‡î£|“M!½Ô=fà)Xuë¦R_½4ªÿûöí èÙëí çûSžrݲm³M!]‡¥k½¬¾¾‹®/’6lHøÄCúm±À®p¾7‘î¸X’H·r³"¨èÐt¥× 5jÔ×Û/®X¡œ’B(Fiçü-±¥ögZ"Ý5š~…×À5aÂ×wÒÏ:K9yy„Qüšß±/œëÎJM(Ap N?¶)¤Wz ]:ˆO™òõ>f ¿âwí çOŠõ(=p0†ŠÚÒ+¼„¯ü|åÌžýÕ€^Y©œcŽ!˜â>o°/œ?"֦䀊³%ȹ­ðÂŠŠ”³páWCúŽÊiÞœ€šãþȾBkRjÀº›D2aÑNúN/a¬zuå,]úÕK£ë׫T:ÕõF±š]áüŽDú-ß´÷ØÒwxdɲ2åèN.û‡ôÅ‹U²°Àšcê¾úÕí ç·'ÒodL[q·-§Ðí_}ÈpV·®r.»ì«Ç]Î<“КCÞ)–ÙÎå‰sÈÍÄ7‰ˆµ`lÒ$ýpÑþ!ýØc ¯9à]bM»Âùìœ@–Ñ­à~cKàÉ×{ kíÚ©ÔÎÿ è»víû#Är!Ԡ׋”‚:âc‘ é]º(§¢â¿!ýòËU²Q#Âl ½]¬aW8¯ó($µm éù/Ž:Æ}õ¨‹¾DZRB¨‘÷еí ç׊ù” 0A©xŸM!ÝÓ‹£'~5¤Ÿ{nú#Âmä}@¬kW8¿2ÁÎ9F_x»Í¦¾ëPA./ï믞t7â>(Ö·+œ¯¡<@Xè‹oß±%éî.WzymtÑ¢¯†ô¾} ºõI±±]á| eÂFÿŒ¿Ë¦~Õ¡‚]i©J­\ù߀¾c‡rZ´ ðFÌçÅ„s€¢/Â]aKP*o9TÀkÐ@97þ÷¥Ñ ”S§Á7"¾&v¶+œ¯¦ €mèôu¶&ÝûLJ zÍ›«ÿkïþcí®ë;ŽoÑÖÚŸhK¯¦¸Dª-mˆsͺF”TƦ€£¹Ä”‹ØÉÀ*kµ+íí6Ü2æ¶f,àdÙ–1AÁX!nÈHQA„Þs£›f*´_ßßãN[î½ííýñùœsäõoÓœó=ɳ§ßóùÖöìi~“þþ÷—Ó¦ àÌ÷ÍØ«óŠó>þ@ήÏ%œ¦ÇîééW^)‚3óWùA(Àˆõ­ôMúºuÇÿhtýz1œážŽ½&¯8¿ÕGh%7åRÕÃkîÉéû÷—µóÏÅípìÍyÅyõÃhçœ-gK.A5;vß0Ø_=°èïhFú®]emáBqœIœoÊ+ÎoóÑZÙ{cGs‰ôOžìŒô÷½¯éÛ·—µY³Drâ]Wœÿ±4Ðþ —H_Ðx,üA8gNYÛ±£éï~wýÛu¡œd[ÜÖ0nzr‰ô…±‡‰Âîî²¶wo3Ò7nË vc^qÞ'΀vt].ÁuNìËÃâªUÇŸì²fhžÀíMÊ'Î?VÔÆЖ6ÇŽä^K‹2/½´è·ß^Ö–.ϰ;c“ó‰ó?+|st€kr‰ô±Ç‡ŠÅ®®²¿§§éúPýu=nûçÆ¦2‰ó;Ä9ÐI~?—H_ÙxBå ÷£OŸ^Ö>ðf¤_w]Y›2ELÊÍs[ @Rï,2ùáèëbÏ ”;w6#}Ó&A=Æ{4¶4Ÿ8¿'6ÅÇèTo/2ù&ý‡â ‘Ë—w²KÿÚµÂzŒv¨q«Q&q~wl²%ÐéÞUdòMúUÃÅdu’K#ЪX÷£ÑQïéØÚ|âü¾Ø4G€º÷fieï0AÙ_ÝÞâG£c²ê+~+Ÿ8(6ÓÇàxÙœ“¾m¨@¯ž*úž÷4¿Iïíõ£ÑÓÜ•ùÄùñ9>~ƒÛ™C´UçpÿÕPq9sfY»ùæf¤_~¹àá¶ççߌ½ÔÇ`x;rˆ·©±CEæâÅå@õð¢_ÞîR=yTxŸÒöĺòˆó§b‹}ÜNMߤψýÓP±¹re3Ð÷í+º»øIv ñŸ ÞÛøëË}ÌN]õÇ?Í!ÒgÇ*:/»¬y«Ëm·•sç ñ!ö/ðdðž~?v¾ÀéEú9DúY±/ ž“'—µ-[šß¤÷ö–ý~4ú‚}66?8ÿïØ«}´N_õИ»sˆô—Å,@çÏ/k»v5#½úV]”ÿÿ‹-Ï#ÎûM)€Ñ›»7‡H_ûÖ`!úò——µ¾¾f¤_x¡8o<ˆhUqþ\ì>Jc§ú&ýrˆôõ±g Ò š^ðröÙÿ ¢7äçoò{Ócäé×¥]]emóæf¤Wg¥Ï˜Ñ±~Cq~4v­Àø™QÔËž<þn,L#ȶmkFzOO=Ü;,Î÷åsÖùu>2ã¯z,û#©ãoRì/†xˆQmÏžf¤¯[×Qqþñ|Î:ßí£0qÎŒ=‘:ÏêAF]Ô<}ïÞ²¶dIGÄùÁؼ<âüo‹ú1L s‹ú!“Æà¼Æ9ß/Ö+®h~‹~ë­eíE/jë8?ëÎ#Îï/ê'ÿÀ+b?H…çÄþó„`­X4pà ÍoÒ«¶iœ?{MqþÕØl €´Öõ‡Ð$ÃUƒ‘¾paYûÈGšß¤¯^Ý–¾98?;ÇÇ ¯ý}l¯YSô·½-»@ïÍãG¡ïrÙ´·ÞÔѹ,öø±1|Í5eÿ-·dçb“ÓÇùG]®¡/u¤_{æ—A#}jã!@9ú¦óꔕ.K€Î–üŒô…±‡Çù]c ¾Gb¿ír ’üŒôóbO&Šó¯Ä^’þÛó­.CŽU‘þ\ÊH}S‚8:vãÈÔ–Ä¡ZÞ2ÁÞ“>Î?WÔ° ƒÚ—2X§Ä>>Aq~G¬+mœ+¶Ð%Àp&ÅîMésc_ç8ÿLlfÚ8ÿQl…Ë €S1#ö¥"ñFŸ§8ÿzlyú[6ºÌ‰—õ‡æ$ Ùß§@¿4ý}çÛ\^œŽê¡9?I³»Ç8Îÿ$}œßëripºÞ;š*hψÝ7Fq~ãÏKç_‹ÍrI0ZLµåâØc£Œó'bËÒÆù÷ŠúS[`Ôª“]>‘2Ò×Ç"Ð7¥ÿQè%.#ÆRukÆ£)#½÷4ã¼/ý}ç;\>Œ‡êd—þT¡;)v`„qþ`úóÎÿµ¨ÿŒ‹µ±Ÿ bôÅSŒóêõiãü±¹.ÆÛ• £·|eìÛ§èW§óÇ^áR`¢ô¥Œôž“Äùéï;ÿ—iJìÓ©¸+ö—CÄù—bsÒÆù>—)Ì/ê÷Y' áÙ±ƒ'Äù³±ÕiãüÁØT—©\ûßTA|Á ÷£oMçßí’ µ«Fñÿý´ŠóMI÷÷8»Ø¥@.nOé»bKÒ~{¾Í%@N¦Å>_$üÑhÂ8¨¨ÿh²rVìp‘þˆÃ‰\õdÕ3½õäêÂØÏ:$Οýš·€Ü½³CýFo5­âÎ6óûb“¼Í´ŠY±Cmç߉-òÐjÎý¤Íâ¼:ï|ƒ·€Vµ©Í}‡·€V××&q~°pÞ9m`jìs-ç?Œ-óVÐ.ÎŽ}¯…ý2o!íæu±#-çí­ ]íj±826ÇÛ@»ªîGÿb‹Äùs±UÞ2ÚݹEýG—¹úMÞ*:Eîç£;R€ŽóÑLãüb˽=tš3b_É0Ðßê­ SuÇ~”Qœßå- Ó½%“8ÿvl®·ŠâïÇùÑ¢þ % Ì‹=“0ÐïðÀñ^;’ ÎŸŠ½ØË/´m‚ãüùØ/; ®z8ÐÁ ô]^rÞ¹ÅĽøµ¢~;pWsœÿ<öJ/3œº»Æ1з{y`d^ë‡8¬pk œ–êáAG‹±=µe•—NßÞ1 ô[¼œ0:Õí(ŽAœWÆ4/'Œ^uâÊÏ §¶@6¶Ž"ÐoóòÀØšûLáÔÈÆ²bdO­NmYíe€ñóöú./Œ¿»O!Îÿ«pk Lˆê)£Åð·¶\èe€‰³¡ú)£»½<0ñþ|8ÿzl†—&ÞÌØ¡âø[[ÖxY •EýI¡U ïõr@zŒ}£¨£$6-v—€ò @;„ÇY ÓIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627957 PyQt6-6.6.1/examples/desktop/systray/images/trash.png0000644000076500000240000002754014532151332021476 0ustar00philstaff‰PNG  IHDR[\fÊUsRGB®Îé pHYs × ×B(›xtIMEÜ %ÍÈÏbKGDÿÿÿ ½§“.àIDATxÚí tU¶þ¯¶CÛ-Ü›bÛ´¢¶ö Ý¶¢>q ª’0*Š ¢ˆŠ8·-ˆ 8a§EQ[['"!u+„H ¦@˜Ç€!̉„©W»‚Hn†›[uëÔù~ÿõ­÷_½^?ªÎ>ç˹§öÙÛá@Y¼2PºÈB_—,u¹ÅQNEüXûŸášâ4¥¸ÜBº¦µ 5Óþÿǵÿ©Ö—þŸ«ýßûé¿£ÿ÷WjÿÙM“ni<ý;ôïÑ¿(‹wÑs v ërq€üwÍàèç¿q*‚Z+6L¿©âìsÍ×ôµK‘^wÉRÿ¹Ûßè=L€ÿQº¥›œ²0PÛ1†jf• )ÏbfÚZåé諒½'½/½7‚0މ½/ ŒºÛéGkæ3WÛæÚÌX›)ý½é¸c‡8b^‚Éðš6Jp;—[z0À-|ªË*ÍdOòi®ë츤й3· ïˆÙhtçJf¡™kØÙS0Sïw¿ô‘î+Í€Ch\1¹àœÀ(±“¶3{V3ˆYg¿èÃ(}o¼Gµ?`3]²4¬ô{Ì:ø9¸±öƒ–þfh¾ù¦Óø·•»Ý€Ù€Ípºƒ®‡ÁZ×x!×a–À(bº^ærKOi‹z©¦Ó06K‹â³8@‡t–Å_cöÀÂ.VC)Ù̪ԥH‘úÇ5€åÎaÛi‹sŒf°;aVö:f ¸" ?ã’ÅΔbä¹nd•hšà º³“ j¯Ç g`D\ít)Þ ‘â½XE²xQí/a LÒ´™æƒ#f௰8ð¡¡ÈÒ`¤mA”¦ýÒDó‹oÐv,N·ô‚¶˜2`(P3j4ìÂN€– :.ÐËb' y§4P €FpEJ‚¶XVÃ0 |L[‰iœu8{Ó &ùZK4Ó½« pÍå÷u¨-i(Và uŠæY›h±=Vàíã×%t3e !³Ë=ºq¥bû¸¥{´‰ŸŠ…ù3G—: c5[Bõ ¨@ :dÕPÁÔ]¶âl©Ã|,pÈ‚ù¹‡ŠøV)`j;s¶Å76ÃúGìãêK«Æ«Ò¢Õy™+Õ-…»Ô½%‡ÔŒÒ­¸%ÖÞ3m{£g³ÂãÚ.„Y±©î ^Q¿ß9[Í9Q zCQe‰ªì¯>¼x´¨°b¼BÓ-=ŠÕ ˜9›Õ&î{"S|vå8}§êKh÷;rÝê‘!lŒ…"ÄÒ<ÆjÖÝÍÊRœÍ²©ž‰ÿò¹ÉžÏ~Ít-}›™³Ü@Yì…U ¬ÅÄÞ—Öñk`\l©ãÔîꤱjöÿÌ‚Î};G÷e#cA›×”ŽEüµ¤Ö&ä{ºqfuCÁÕжÛç ae—»€_q)âÓh¬È¦ºÎ}FÍöòã—¯(®*Uû.Éʘ•éÕÄ0•°.Ÿ­iãbPÝâŸWKªÊT+Pu¦Z°äMv.Bб®û3øíäàŽT¾¦ÅêÑÁÃ^§sEé©rõθ§YÇäË#{\7ÆÏ*Awj-¦Å¦Ú+Áêêümª¡3Ü?LëÃÒxfµ•…;à ÀçP²·6ÁNÀ´ØÕ'Ûܪ•™¶o!kcZæ’¥þpàBC/<›ÖÃbXôå¿òt•¥Í–ÒÏî_8‚½‚6²Š6< UtŠéz*uÙC ²V«,~ìC×{ëHÝÈÇ^A](¿Fžî‹ÎÔK ­eÈò±¬Žõjtƒ-¢ÍéOÚÄÙ£²‡è,”%Öäogy¼÷ÑE¸h—ÒíVº“²‡~Õ[-;UΔÙÒ.ü–Ù³Ü~'7@ þ;ÜxÎ8ˆ BƽD?ÉYä½Mß±>ö%AwÃU@}£•…îÚ_är”½4yW“f»$g½Æÿ„SCà. ÎÑô61*aNö“Ñe‚®Û$Úº’„˺¬0@ÛÑVÁ˜ì'jMS^}ReºZl“êU¸üÀýŽVxFk_ýqF?•eBæ¿l£xhëLû ×ásGK×oOÔì«[c3m¶¿a·˜œF™FÎÐ~^Þ­ýu÷¼aL›-×ÝáRû(¸G²(jA¯€ñÑ‚œeú/mרT¸"%ndçm¤x/òhqf‹3[Kìp£D£}Ïh»P¢5Lˆ¯l„RÆnÕ…þX؈‰5˜œPS¢‚Ü9' ,e´t¥øÎ¸§̨J\Î FÙíZ-(Ç0)¡–Ô¹=\^d £¥ààù/!.«0 2äj¸? ër±ˆÍ˜ŒPKÕuî3j¶Ÿw¸ÅU¥jßE#æ]xXãH/‚éáœbòH¡¿º¡`‡ßÎh)Cqh‰¤÷ázþ0ÚHIÀŨµj§©¡›ÃÔSgªMKïš´3Ví8µÆ¿åªT„®p? ŒêÝVøƒ˜|¯Ô3ñ_†·=ß<[´ômŒwë>˜ õ4kW«H‘˜t¯¨Hê³+ÇùÜt÷i&;rÝê‘!gß'DÀÍ0ZYì‡É­î ^Q¿ß9Ûë41*þ­ì¯>¼x´nâS_¬ú äòÈWh]„É™)jùÒªñê7é1ê²ÜMêÒ5£4ï¥Þª*±ösõÿæ>­·äÁتü¶á=áŠ8>€ õoÙ¤m¤Ô ‚ :ªq*bÜчtˆ/G5/¨µêÝ·IQî-4%ª‘+&¼Ð¨¨y¿¤QMjð²wÕ¡+BÕ“ÉcƵ¯SL×Ëà’>û(&ü“ê\ý%æuÔº ê„´hú*mº*ïIhR3ö'©qÉMŠ:$çmnTkò·ë_ó›}¡?ÿÜó|e•åë·¬šRåéS*ümö Ìý¤ín?†Kú"§VºâòBãoÞÚ𵺾 ©n å|ñc漇Ë(6ÞZTÇN·¸“©y¢ÊQl™lxr>ð…'‹ÕßEõÄ\oø²ÃJfërj‡by§ë¦?¨§+-Ê^«V™tOè–0¿=æÞJƒášÞ_ÉÍÇ$j½®Šê¥>¶ìýl–µ¶Þà\JªÊÔk¢À¼nX9#{üîÙBœ²ð&ïEPÈxéÃØíg)`O¶¹1—=ICáž-1ÚÈn×¢C®9¯z%¾ªW¡Ê+/„‹1uv¸vz_Ìá†Uá º.ÚܳZ·8 “Æ|Ý5w¨¾k¢Z«™ 즂 Óà¢ÍNõB?1+/ÕyEJ™5)¯>©÷SÃ\m¸o™3R¼nÚô®v5&‹õŒ÷íSÔmE{árâë31?=k)Ü´±³ZE Á$±¶®ŸþRÊ,?5¯Ä¼ôø±L„«z¸À  ÐFL¶j н}¤”ù™c.zÖjkÈRLvuåÔžH)ógjjÔnñÏcz®›€ª`õwµÂLû¥”./‚#Ìâìõ˜wžÌÖ-®…ÁÖý(¦HabØ·¯•¬M)Ë‚3ăI#1ß<]ãU„ÞpÙ_2pVËaJð› w¡În›È@ˆ ÂdàSŸýØÏå!éì´Ž!ËQ`¼‘‘÷Ála&ôÇýRÖJ蘦½ŒùÔpØ\¾o‹Eÿ·Å ÆRÊNTWÀE[Àð5ŸayèWÖNÿÌoº—"ý€I5'¥ŒŒ—Ê ‚Æ¡ì÷”™ }Ç¥ÑvÅ+µ¨Ä$€¼I)˯@J™'è$æKƒ5ÊÛD‹íùË@ÅPòEJ5¿@¿P‚ÑÓÙ­0–/§ ër±öây>äëòè¿VË—iÓ1/¤Ñ™µ”ð"â^_ÙŽ˜¿²ñY­ô ‚ìÝ0£_£×Z3ËòÔ¯Ò¦«Ášñ¢@I}õ^8œ›Ýí²ÜMˆ9oÕÀ´œ ûF㶆7{±eŸ(P¿MÑ/àîü/JÊ^ÇáÒļއ²éö¼šâÄ1ßèŠÈ¯oPUלÖBOH‹Vû%Òÿoñ:ŽBÂóܤ†-ÉAñ†n”uˆ/·á1áI×7¶â?>[„…'‹õ³ß77LÔw¾¦õáj,ã3S¸ÙÝöÁî¶Ò‹âcv²dŒzó¬Gõºf\Á½-ö SÇóÞøg¹ÙÝ®ÈÛ‚5T_sle´mÃ{j[ö*¶õ¢ Xþ€>Æ‘ /Ïݤ7u Ýòƒ¾ÃYðOõö9Cšvvuôýúͦ»ç Ó‹]Ýô½±'^ÝP°ãç½f§°-ÈZÍÍîöþ…#°ŽÎ=·=Õ»­ŠÎ E`ퟲDÝŠ«J=ª¹˜}QƒºÓò²»]™·k©ÞºŸ@7è ^ö.†Ð}Á+¦íÒÜÜìn{&þ ëéÜeó…“°»8“ 3¸gÞ0ÓǷܘíªÃ©XSç%Ø"+Áé–E@[¯¶LææÆÓ5Ñøåˆ&ýØn —2O°®lV Ìå–"ÌÖ鱫'OWra{Kùmœ©:n•ñzn+„±í´ªãÔBhýŽkuþ6nL€²ü5Ö"CÔÜò#ÜŒ5uºÀ«S+é]íé±uz‘£ÝÝnûKÌ#Ì\ƒf9ÉXcuó¼ÝÒMì~“Å·DïugÜÓjyõIn¿Z¹P±qêrÀË7êjµö³F±œ_»ôNÔŽz[Ñ^nŒö`i®eZpÏ:°”›qÿa׬·_´„唯jлsZú‰Ç Ô –.XeüXô7c_Q]‰N¼¿äÛV1™Fµ"<ïD¹xŽIz$¾b¹?vt5™ÞÙø-ÖÝO9·ŠÂ^~­,|„àµ\Tw–èËÿÝ~¸À€eõp¨ÖŸ¾»ýÎk98:àiGK;G+7#¤¬ˆÓ5g¸‰ÇÀ¥c°kµ”-§x‰öÐ\óó;§ïOâfaGï_ÄDÝ\žê%ÌË\‰µX«Ždñ"vJ**Aw"hÍ¿ÆKÖAAÅQ½#0+±y!å#nÌ–ÒÝüqMÚšµ¤. ]ÑF"hMëÑ¥oéx€nÁQ[–âCµwkªi7^[û9Ö¥.i8;ÚD”HÎK³AJ-¢EÌj‡ßä¼ÍܘíšüíXŸµuf²d¶9Z÷“è#؉ê .ïž’LKåÏz#J‹â*þ~ƒ6G±V…CLíå‘=®@°Îu ›:¼\½¥2‰“wÅ©WNíÉ|ì(5'¨Ö¬¨¶Q‚Û±P¿6Áú%Ë`SáN®+<•ü¾­RòŠ*K¸‰ßŒýIX»$YñqŒ1Q3C^ l)áEÛŧ†yå…X·ºÙ ¯¢X8c¢6à´Û³;´û»kîP[Æð³í‘\ý:¡, î?’)Ò,|Û “=WÔ®ÛÞ9š§l]ˆú¹”q\™­U¯P›j¶²¸ÞÚN›,^DÍÓ`°çª½¬®ÍßnÛÅ9>5ÂÖñ ™ÿ2WfÛñh¬[ºIz¡e½¶,þAòœö•Y–g»…I5¨ó¯cwGÜS\™­?ZÉ[ó&YÐõV.>ÓAjü2CF©½ ÷íߨ>ntóÍî$9' ÔîÓëAtœÚëU?·°®Ù*ÒëRãúsÌuÓ‘tÛ,Ô[cÛ>f·Å>ÁL<(—;[3Nª·AÆI]'Âvƪ§Êêèõ_ªÃV~ öK¥ç~Ó;äBsymW3Û‰Póòo¿J›Î| ?º Çê5Ü–ˆŠç˜Í©3Õj~E‘šZ´G]”½VϤ™æ'ÛÜê[¾ÖÛ®“iRý‡ib¶_X9!j¾„„çÕU‡S™5[ÚAñ§w[ye÷äéJ=5ýØ=Þñ™)ª²w¾~uûýÍ“ÔW×üW}bù{jŸ…ÃÕ®sŸÑÍÓîçàŒhŽ•Í6 òÎt#÷.PËN•ûÕ•»±ýƒE‹V©Ͷ•Ÿ€Ñ|¿s¶)1O8”ÂÙyxŒµác„*k9mhè…vpªIÊÛÇ«Bµt͈ù¾ãÙ\knùkêq¨Ž ,ãµeñ×vô%9ëát~†ŠÂ˜Ñ.†ê³Þ®¥l?Šºžäˆx‰eÌ60ªw[»øqO©%UepMý:ÅK¨ñ"0êev|÷”dr7ÎÃ×|ce"õËæ—Î×3+Bá‚&A&ÍŒ-e;øª…ce§}K,6¤¬²|¸¡Áì8vÀô¸~œ*s9ÖWGßcmXQ<ÜÏ¢|[`,‹³×›רŒåÜ3Õ †©²U<|%OA 6-ÀX"öě׏ç¼òB˜ªg-·žÙ*B,OA½þK¸¡Á|¸uй7…”`µŠÃL„zꮫH1–3[í¡~à)ý’FÁ æåU›^ÿ‚GèH ÆÚ°œnñ{ f#Hãy ÂM³…̃I#Mé“Éc¹gº cõ¨qV̳ÅÕÏ ·¤ž¨®€#5Ú43¦tlÁ#ߥς©z’,¾f=³•Å¡¼‚j€ã |f3ã9ëÀR.ÇùÔEhÄl…'­wf+ }y DìÁepDƒ8ZyÜôx¦ÝÏåXXû9LÕÓ/XYêc½3Ûˆ Ûx Ä'ÛÜpE›|!o§é}¸xdð²wa¬ž4EºÅrfÛ6¼g oxvå8¸¢A,ÌZcj,é|˜Wz$¢.‚'Qc‡Ñ®„§@ Ïà bÊƒvwø Wá¨Ãª¸qOÁ ŠT5* ÒÙŬéßã•k¢€±6l¶[¬k¶²8—·€P hà{^\5ÞÔ8ÎØŸÄå8Ó9˜ªGͶ²Ù~É[@Väm3À‹^35Ž©E{¸çÃåE0UÏúÜÊfûo ß=Îh·Æ6ï#ˆ"é­Òy„ÒÝ`ªž..‰¯XÙlûñ1&Â} ƒwœÚÝ´þ#öqnÇz9ê"4R„F|À²fÛVîvo°ø ¸£9r²ØÔZú6·cM·æ`¬¯êv¶¬Ùžmi~‚§€ümö ¸£ÙV´×Ôþ{ó$nÇúû³aª g"·\ óŠˆoà*é™ãó>£XµÚÔNÛ·Û±·5ÆÚaÃêh:™·ÀP¯,à;~Ø5ÇÔøm.ÜÅíX¿†ºìÔ±­o¶ÒpÞ—‘ ‡ô!¡›ÃP*Ó$žXþ̵á ÿ´¾ÙÊ¢È[`>Û ‡ô!Ï¥ŒÃ™»IôLü̵Áj_Â}–7[ Ò¼òÒ‡ô^8Ü´Ø=²d ×c};ê"4¤š€°§ƒ´‡Íá)8Aó_‚Cú[f?nZìÞÛô×cÝ9º/̵~&Â!+Èâ ž‚ÓiZ¤ñgjjÔ+"CL‹]äÞÜŽõ©3Õú™5Ìõ¼cŠ0³uÉ«¼(¿¢Né *Žš·Gvp;Ö4ga®Œ~ã¹kêépJ°¥p—©™¥§Ê¹kJY„¹2ÒÁ#1¥=t)OŠØ§ô ‡RL‹Ù_cr=ÖT±æZO%tÖÁÚC/å)HïlüNé&íŒ5-fýæz¬gD]„ú)_â"k¸ÜÂx ÒÀ¥cà”>àýÍ“L‹ÙÛ¿Á6ìù­ËÇ2g¶ŠÐ›§ ñ\¦Ï— [ù·G?…'‹Mý÷>J€¹ÖËDC˜3ÛŽ‘=~«=|%Oixm…íK̼Ѵ®àG˼wåéSê}ñÏémjÌbäÚÿÁ`Ïͯ-ï,‹¿v°ˆöKx ֮⠸e+¹yÖ£¦Å«¸ªÔ2ïý¿£LOE{2y, öÜâ3‰VÑ^`OÁŠÏL[¶‚Ó5gÔöJ°)±úÓÌ–y¹ê•S{êÏ5áÇi¦ý»½_…Éž#i8³füWž‚õ…¶;ÞcfóÁ‡’^·Ì{SV„?>´Þ÷$ ¶ŽÚ(Á7:XÆ¥ˆ™¼ëåUÃ1[Á¦Â¦ÅêM‹ôŽ‹ÍX~ÎsýaZ}‡o×NG]„:Úï`·ÆKÀBæ¿ Çls3W˜«)èŠ\RU¦Þ8³¿_Úª£.Âyçµ²ð-ófëR„‡y Ø5ÑÀ1[Áw鳸º^My¾ =õ3³kP0P¿¶/û;Û°'O)`GLΕ´ïnüÖ´8­<î×w¥¬JlèÙ¨{‚Ѥ£.BÝ,„“bÄËv@{¡8^·6;\ÓK†®5%FœÑÏïYT¹±ç3ºdçʼ­0Ú_4Ëadi0/Sö·kzI÷¯˜£¾‹Fúõ=¿MiòÓ n"{pLö—óÚ¶1[Ú¢k/UÁCàÆnú®é%T…ËŒ^ÿ¥ßÞñPÙaõwQ=›|ÆÉ»â }ÔEøYeW…õýÃN¸!–‡à Zú6\Ó ªkN«í” SbîÇL„æv³}fE¨¡ÏñáÖ)0ÚÚ*_3v鈃x^—9Càœ^s¢À´­Îßæ—w\µºÙÏH)aFòÚÚÏa¶úÇ1i€íÌ–¶êÚ˰{ð躩™ÅDì}7+FE•%¦¿ß‰ê õ¦Ö}Øw<Û°ç²u\ná8³…gš‘•0›‡ î-9÷l!s2’M‰Í ~ÊD .¾-}V÷žÞÇÌêjNùšî°+m#¥ž<‘~.‚–ñõŽ™¦ÄæE¯™þnÛîõªÀÎ )öLtÜŽÙFÙÖl©·ö’vâ—iÓáž-ÄÓm*Ö3šÊ©õW´«£ïçÝl÷9TÇ;Cm'ìÈ­ùîÙBžJ~ß–™Tƒ¡5ÏK©b¾† •sŸ…àÞvØvJÐïµ—=mç@öH|îÙB‚½ÜýY9JFR¯Ö<ïôýI>®Üò#¼›í©²x¥ƒ´—M°s0ý}”Eþóˆ)±1³Ï—/ú©½ºæ¿†œ!sn¶q^p¹¥íP:a *÷ç©( «“²×ùä™o‹}Âç϶4w#çGÒýܘ­#¬ËÅÚKçÙ9  vÀE› KÚ)áäéJõÖØÁ>{n:Žð%3ö'ñl¶9Ždñ"OÈâ[vjÔ¾D¸h3Y“¿Ý”˜ŒZ7Á”÷·5ܧÏMEcXL³³hÑ™7¼áœvo°kPC7‡ÁE›IÌ%¶ÉDØ]œ©^âÓç~ÝÇ$hnrj¶%Q½Û:xD{ù¯íØÁËÞ…‹6ê(k‡î Tƒ¶÷Âá>î»æõésRj"§Ýs¿pðŠ3²ÛµvM»#î)¸h3¡Ÿ÷vÈD £#ƒ>èø´U¦ãÐl«]áA×8xÆ®¥é§$• ÖXüFg"‘Ù­6>3…¹œf”R´AwÛ5Àû ¬Úd'îÖðXÜ¿p„¡ïðÏÕŸúüomøÚgÏzËìÇùû0)ÞîúÙíF;xQöZ8i30rGhF&õó2º-x·øç}ö¼WEõâÍlWÃem^ lâŽpÒ& :¯fĨ63Tgàv*hÑ¥’ª²V?oyõIþÎkA‚Ëž³»VÚ-ÈÃ×|7mªýËr&ÂgÛ#™ú¥dÖ i9ܵþ‡2Én¦4 Ð8Ër7™‹#d"ì-ÉR;NínÚ|zó¤V?óæÂ]\™-}‚»6|v»ÜN¾iš$rïf3^<ÚÔù2ÿåV?3íŽ9*£˜Wå(3¡¸ªŽÚ§ÊLf"Ì>¸Ô/ýíÊN•[2Ø‚ªABS5´¿Fv ú¦ÂpÔFxeµñ·™|}Ý•þ€Þ8óa¿Ì§å¹›ZõìÒ¢y1ÛùpÓ¦v·ŠÐ•þ*Ù%èF¶ý’Fƒ°±>}æ77LôÛ|ŸѪg÷¦ñ$ƒ]sÏ`WÛüÌÅ.ÿ`Ëd8j#Ü÷¤á1H9¼ÕgÏK¥3ͨ½kÔG×WçaWm&¿Ü‘zºÛ!ðO&…£6Âï¢z2“‰@EÎïž7̯ó‰²*OWyý¿aûÊ^—Gö¸.ڲ̄÷ì|_Wl²ÔÍÂèñ¿~úC>{Þ¯Ò¦[bNµ¦šð¼½¯åº¥7áž-¤³,þÚmÏi'Bí¬A}Ìè…ÕÇG¹Î¥y¦ì›£O·)^¿µG·±ÙîuÄ ¼îéNEd‡I@ Ô'1k 3™–¼i™ùD½ÅÌK¦KûÁ5½Eu\àt‹ëXŸKrÖÃY€ê=ö?ìšÓê眗¹ÒRó‰vØUgª[üÇ«NØ9a% ³µy·‘âÍÚ@V±<¾M³6€íYZ›‰@Å_þ4s€åæÔÆ#-o(J%?íyN+žl£ß·ôIÝé–'Ãȵÿƒ³6À³+Ç>öǘͩmLt9Á›´5›îl߃KúЉ½/Õv·é¬N³Zh³F¯ÄW-‰°éHº_sjÓÀ¥cZü>󭲣ѦrךÜð›e²xÝ aqBÐÏPPŸ›g=jÙLjitŸsjÓ¦õiq–‹¼'ÁnF{º­t'Üшì·ø=«£´•DìV±j&Âwé³,?§R‹ö´è̬½kNQpi"\ѨÝmTï¶Ú g³81¶í†ÃÖ!·üˆe3rN¨´£Ý>¼Ž±èù³—:Ø1²ÇoáŠF~,“Å~,NŽ™Ãaë@_Ósê æ O,‰9EÏiµ’æuËú M9N¾cmr|¸u ¶s2’-™‰° k53sŠež©©iö»=”ôº]rj¿‚ š{•7¥ 2tE(¶Ô Ój™Ô|ò&ƒ?ÚùZ;‹6ûýî¶ð¿ívÊN‚ šš{ÛíV–.;Зm`Þù¡7¥ßÝø-sæÓ’®Á7ÎìÏüå…@·tÜÏ?µư2Q®œÚ³E?ùìÎåc½H²î‹=϶¢½j;%ˆ9z¦™¿˜hî±ø~çe¼×󡡺a+“%«,.{1áËtg 44)áE& ˆv«Í¡¨²„õ]m"ÕJéùswÙíZ-ÇX˜0ËZÙ?ÊNPça«d"PŠËF´ïxv“︧$“åw, ˆ ¹ngà ÒRmõI3Éǽ°X…: ¸%ƒ3Ž6ëYòÊ õÛX,›­{OB“ïIÇ}¿SÔu.g­t°7­>qFù¸Ë+«(Í1tœ¯›þ`³Ÿ…²DXÿBO}Åš"΄T;œÓò‚ê¸ À-Ì´òÄ¡Åm§Š„›±q~;Àªå©É!ï¼¶ösCÇxEÞ–Fÿýî3¼â˜ÙzuÍ}ç§“ÿÍÊÑÁ—"=cËp_°âdš}p)÷fûÈ’1~ËD äþàù/Ù®ˆöm±O4:æTÛ—‰|ZE|îÅ .YüÒj“éãT™{³½kîP¿e"D쉷mÓÃÃåEßûθ§Yx‡ÏáZ¬B7ÌÜbœ•&Ô°•po¶FÖŠm,Ìèêèûmk¶±—y|wú#dí/!–Ö+L‹a:Åt½,@×[eRu‹žk£5ºvcÍ5ŸKg[£m¬3µø1úI+¯â®¥u ·²Qb'-¨9V˜XWEõRkT~ ÒPI@ÜÒ[œ½ÞÖFK¢ã™† 3l ?wVû)ݯ‚KÙJ%Ñ›g… F-axÅhÓk(áäéJý’ÝÍ–v¯GN×{ÿÇX5ó ×éºîdC"Å›µ ù{’%çmæÖlþ@•_Qÿ#uɰ»Ñþ¤øÌ”zïOó͂ϚO9ñp%{g(üÃßUÂZRðÙnŒÛnh›˜óÙ]œ©^ÂÙ¾µáëzc@é†ÛÑuM‘nñp†«]µ —ùk²½¹a"·fûÒªñ†k¯ÄWÏù·èl¼7#ù¥F~€ý~çl+=ci ,Þâ§[ ¦6þ˜pýæÖlXôši™S÷&re´¤@ERKªÊLû5ÑÒ¶6TîÃã‘‚"<ì>f›=ˆ[³½5v°)™ô¡ˆŽx3[RRöºsÆ|„Á×£›ytP…k¸¼n¤$˜}¤@»ŠêJ~ÖwœÚݰqM8ôËÇ¡ák>ãÒhITd§.O,ÏïG.wP7¸  ,…{µ¿¼ÇÍœ€iG÷sg¶Ç Ó¾‹FꭇƧFX:‰ßŒRžKs6èírd­ÖÛºûñyJ´XÜ—uÏp»˜™6'#™;³ÝR¸‹[äT…Έ Ûà.ÀSZسªëS‡YžÔeÎ?Ê Œþ+\4òѬۭN·x‹‚¼¿ ÿnš¤ýÔû~§MšÍX4Ôbmì ‹WÂE@³¡þGÚĉÇâ fJç¢oðŽ˜¿r)ÒD,$jÒhC©Ã5L´òW¡M¨ÓXTTOÕNYx.|™ö¨6±N`qAÐÏ*sÉR¸ð9mån7hl‰ih7 ¥CŒx¹6Ñfc±A¼*@‘bhÀ €ñ¨Ž œŠ8ç¸oç³ôý€éÊb/"‡ “.*PÑ&¬zàçs\a#dWQ÷[gDÈuXíÀÿ„†^X›f~m\2¶-Ž €%w¹ÂÚ݃E ±ÿLÜM•ð°ªeéÓõ2Íp¿Â‚…ÞÑ~Eó«0A€[xœêybáB,}£Ë;X½€=à qj¦¦Mä,dÈÂ&{†v³4_±jÛ¦+ ÷Ñ5dÁLƒ]Ô «Øê,7@?ÁEÈ2™²ÚYÕ lz–+Ý£MöT,vÈÚ(‹wa5ûC×}ea K3±ð!• }±w\Ö÷7gk,”Á UJó é\€{Ú)A¿w)R$² _gP6Lû)ݯÂ* TèC[$«aŒv%² hÞG´å0 ¨ÅR„eŠÐ«€àTÄj °“ÀhBC/ ¥ÁÚbJ‡¡@ µ§Ñþ(¢y‚Å€¯Ž´‹¶¸ð!{Qü°“À`Î,ÿÊéOÂx¸RÅ0—,v®-ç(‡ÙZ%š&¸Âƒ®Á¬ÀŸLì}©~#Í-.Áƒ­Ž –P\1/Á$À‚G µo„“Ê¢18*€j;FHOÝíVÃĬÝ"<À-$(âTá€a¨ 9{%øÌÍ:Añ ¸P|0K°m”àvNE|ŽvRØñš®SN·¸Ð%KÃÚ†÷ Äl€££†Ú[jÂW(÷h`'Yü„ÆU·:Έë4ÓQ{Î+TÁ,½R%]8pº¥h<1«M7¸ÜÒƒnáSÍQuit in the " "context menu of the system tray entry.") self.hide() event.ignore() def setIcon(self, index): icon = self.iconComboBox.itemIcon(index) self.trayIcon.setIcon(icon) self.setWindowIcon(icon) self.trayIcon.setToolTip(self.iconComboBox.itemText(index)) def iconActivated(self, reason): if reason in (QSystemTrayIcon.ActivationReason.Trigger, QSystemTrayIcon.ActivationReason.DoubleClick): self.iconComboBox.setCurrentIndex( (self.iconComboBox.currentIndex() + 1) % self.iconComboBox.count()) elif reason == QSystemTrayIcon.ActivationReason.MiddleClick: self.showMessage() def showMessage(self): icon = QSystemTrayIcon.MessageIcon( self.typeComboBox.itemData(self.typeComboBox.currentIndex())) self.trayIcon.showMessage(self.titleEdit.text(), self.bodyEdit.toPlainText(), icon, self.durationSpinBox.value() * 1000) def messageClicked(self): QMessageBox.information(None, "Systray", "Sorry, I already gave what help I could.\nMaybe you should " "try asking a human?") def createIconGroupBox(self): self.iconGroupBox = QGroupBox("Tray Icon") self.iconLabel = QLabel("Icon:") image_dir = os.path.join(os.path.dirname(__file__), 'images') self.iconComboBox = QComboBox() self.iconComboBox.addItem(QIcon(os.path.join(image_dir, 'bad.png')), "Bad") self.iconComboBox.addItem(QIcon(os.path.join(image_dir, 'heart.png')), "Heart") self.iconComboBox.addItem(QIcon(os.path.join(image_dir, 'trash.png')), "Trash") self.showIconCheckBox = QCheckBox("Show icon") self.showIconCheckBox.setChecked(True) iconLayout = QHBoxLayout() iconLayout.addWidget(self.iconLabel) iconLayout.addWidget(self.iconComboBox) iconLayout.addStretch() iconLayout.addWidget(self.showIconCheckBox) self.iconGroupBox.setLayout(iconLayout) def createMessageGroupBox(self): self.messageGroupBox = QGroupBox("Balloon Message") typeLabel = QLabel("Type:") self.typeComboBox = QComboBox() self.typeComboBox.addItem("None", QSystemTrayIcon.MessageIcon.NoIcon) self.typeComboBox.addItem(self.style().standardIcon( QStyle.StandardPixmap.SP_MessageBoxInformation), "Information", QSystemTrayIcon.MessageIcon.Information) self.typeComboBox.addItem(self.style().standardIcon( QStyle.StandardPixmap.SP_MessageBoxWarning), "Warning", QSystemTrayIcon.MessageIcon.Warning) self.typeComboBox.addItem(self.style().standardIcon( QStyle.StandardPixmap.SP_MessageBoxCritical), "Critical", QSystemTrayIcon.MessageIcon.Critical) self.typeComboBox.setCurrentIndex(1) self.durationLabel = QLabel("Duration:") self.durationSpinBox = QSpinBox() self.durationSpinBox.setRange(5, 60) self.durationSpinBox.setSuffix(" s") self.durationSpinBox.setValue(15) durationWarningLabel = QLabel("(some systems might ignore this hint)") durationWarningLabel.setIndent(10) titleLabel = QLabel("Title:") self.titleEdit = QLineEdit("Cannot connect to network") bodyLabel = QLabel("Body:") self.bodyEdit = QTextEdit() self.bodyEdit.setPlainText("Don't believe me. Honestly, I don't have " "a clue.\nClick this balloon for details.") self.showMessageButton = QPushButton("Show Message") self.showMessageButton.setDefault(True) messageLayout = QGridLayout() messageLayout.addWidget(typeLabel, 0, 0) messageLayout.addWidget(self.typeComboBox, 0, 1, 1, 2) messageLayout.addWidget(self.durationLabel, 1, 0) messageLayout.addWidget(self.durationSpinBox, 1, 1) messageLayout.addWidget(durationWarningLabel, 1, 2, 1, 3) messageLayout.addWidget(titleLabel, 2, 0) messageLayout.addWidget(self.titleEdit, 2, 1, 1, 4) messageLayout.addWidget(bodyLabel, 3, 0) messageLayout.addWidget(self.bodyEdit, 3, 1, 2, 4) messageLayout.addWidget(self.showMessageButton, 5, 4) messageLayout.setColumnStretch(3, 1) messageLayout.setRowStretch(4, 1) self.messageGroupBox.setLayout(messageLayout) def createActions(self): self.minimizeAction = QAction("Mi&nimize", self, triggered=self.hide) self.maximizeAction = QAction("Ma&ximize", self, triggered=self.showMaximized) self.restoreAction = QAction("&Restore", self, triggered=self.showNormal) self.quitAction = QAction("&Quit", self, triggered=QApplication.instance().quit) def createTrayIcon(self): self.trayIconMenu = QMenu(self) self.trayIconMenu.addAction(self.minimizeAction) self.trayIconMenu.addAction(self.maximizeAction) self.trayIconMenu.addAction(self.restoreAction) self.trayIconMenu.addSeparator() self.trayIconMenu.addAction(self.quitAction) self.trayIcon = QSystemTrayIcon(self) self.trayIcon.setContextMenu(self.trayIconMenu) if __name__ == '__main__': import sys app = QApplication(sys.argv) if not QSystemTrayIcon.isSystemTrayAvailable(): QMessageBox.critical(None, "Systray", "I couldn't detect any system tray on this system.") sys.exit(1) QApplication.setQuitOnLastWindowClosed(False) window = Window() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4536636 PyQt6-6.6.1/examples/dialogs/0000755000076500000240000000000014532160402014623 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4510224 PyQt6-6.6.1/examples/dialogs/classwizard/0000755000076500000240000000000014532160402017151 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.614254 PyQt6-6.6.1/examples/dialogs/classwizard/classwizard.py0000644000076500000240000003623314532151332022062 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import QDir, QFile, QRegularExpression from PyQt6.QtGui import QPixmap from PyQt6.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox, QLabel, QLineEdit, QMessageBox, QRadioButton, QVBoxLayout, QWizard, QWizardPage) class ClassWizard(QWizard): def __init__(self, parent=None): super().__init__(parent) self.addPage(IntroPage()) self.addPage(ClassInfoPage()) self.addPage(CodeStylePage()) self.addPage(OutputFilesPage()) self.addPage(ConclusionPage()) self.setPixmap(QWizard.WizardPixmap.BannerPixmap, pixmapFromFile('banner.png')) self.setPixmap(QWizard.WizardPixmap.BackgroundPixmap, pixmapFromFile('background.png')) self.setWindowTitle("Class Wizard") def accept(self): className = self.field('className') baseClass = self.field('baseClass') macroName = self.field('macroName') baseInclude = self.field('baseInclude') outputDir = self.field('outputDir') header = self.field('header') implementation = self.field('implementation') block = '' if self.field('comment'): block += '/*\n' block += ' ' + header + '\n' block += '*/\n' block += '\n' if self.field('protect'): block += '#ifndef ' + macroName + '\n' block += '#define ' + macroName + '\n' block += '\n' if self.field('includeBase'): block += '#include ' + baseInclude + '\n' block += '\n' block += 'class ' + className if baseClass: block += ' : public ' + baseClass block += '\n' block += '{\n' if self.field('qobjectMacro'): block += ' Q_OBJECT\n' block += '\n' block += 'public:\n' if self.field('qobjectCtor'): block += ' ' + className + '(QObject *parent = 0);\n' elif self.field('qwidgetCtor'): block += ' ' + className + '(QWidget *parent = 0);\n' elif self.field('defaultCtor'): block += ' ' + className + '();\n' if self.field('copyCtor'): block += ' ' + className + '(const ' + className + ' &other);\n' block += '\n' block += ' ' + className + ' &operator=' + '(const ' + className + ' &other);\n' block += '};\n' if self.field('protect'): block += '\n' block += '#endif\n' headerFile = QFile(outputDir + '/' + header) if not headerFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (headerFile.fileName(), headerFile.errorString())) return headerFile.write(block) block = '' if self.field('comment'): block += '/*\n' block += ' ' + implementation + '\n' block += '*/\n' block += '\n' block += '#include "' + header + '"\n' block += '\n' if self.field('qobjectCtor'): block += className + '::' + className + '(QObject *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('qwidgetCtor'): block += className + '::' + className + '(QWidget *parent)\n' block += ' : ' + baseClass + '(parent)\n' block += '{\n' block += '}\n' elif self.field('defaultCtor'): block += className + '::' + className + '()\n' block += '{\n' block += ' // missing code\n' block += '}\n' if self.field('copyCtor'): block += '\n' block += className + '::' + className + '(const ' + className + ' &other)\n' block += '{\n' block += ' *this = other;\n' block += '}\n' block += '\n' block += className + ' &' + className + '::operator=(const ' + className + ' &other)\n' block += '{\n' if baseClass: block += ' ' + baseClass + '::operator=(other);\n' block += ' // missing code\n' block += ' return *this;\n' block += '}\n' implementationFile = QFile(outputDir + '/' + implementation) if not implementationFile.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(None, "Class Wizard", "Cannot write file %s:\n%s" % (implementationFile.fileName(), implementationFile.errorString())) return implementationFile.write(block) super().accept() class IntroPage(QWizardPage): def __init__(self, parent=None): super().__init__(parent) self.setTitle("Introduction") self.setPixmap(QWizard.WizardPixmap.WatermarkPixmap, pixmapFromFile('watermark1.png')) label = QLabel("This wizard will generate a skeleton C++ class " "definition, including a few functions. You simply need to " "specify the class name and set a few options to produce a " "header file and an implementation file for your new C++ " "class.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout) class ClassInfoPage(QWizardPage): def __init__(self, parent=None): super().__init__(parent) self.setTitle("Class Information") self.setSubTitle("Specify basic information about the class for " "which you want to generate skeleton source code files.") self.setPixmap(QWizard.WizardPixmap.LogoPixmap, pixmapFromFile('logo1.png')) classNameLabel = QLabel("&Class name:") classNameLineEdit = QLineEdit() classNameLabel.setBuddy(classNameLineEdit) baseClassLabel = QLabel("B&ase class:") baseClassLineEdit = QLineEdit() baseClassLabel.setBuddy(baseClassLineEdit) qobjectMacroCheckBox = QCheckBox("Generate Q_OBJECT ¯o") groupBox = QGroupBox("C&onstructor") qobjectCtorRadioButton = QRadioButton("&QObject-style constructor") qwidgetCtorRadioButton = QRadioButton("Q&Widget-style constructor") defaultCtorRadioButton = QRadioButton("&Default constructor") copyCtorCheckBox = QCheckBox("&Generate copy constructor and operator=") defaultCtorRadioButton.setChecked(True) defaultCtorRadioButton.toggled.connect(copyCtorCheckBox.setEnabled) self.registerField('className*', classNameLineEdit) self.registerField('baseClass', baseClassLineEdit) self.registerField('qobjectMacro', qobjectMacroCheckBox) self.registerField('qobjectCtor', qobjectCtorRadioButton) self.registerField('qwidgetCtor', qwidgetCtorRadioButton) self.registerField('defaultCtor', defaultCtorRadioButton) self.registerField('copyCtor', copyCtorCheckBox) groupBoxLayout = QVBoxLayout() groupBoxLayout.addWidget(qobjectCtorRadioButton) groupBoxLayout.addWidget(qwidgetCtorRadioButton) groupBoxLayout.addWidget(defaultCtorRadioButton) groupBoxLayout.addWidget(copyCtorCheckBox) groupBox.setLayout(groupBoxLayout) layout = QGridLayout() layout.addWidget(classNameLabel, 0, 0) layout.addWidget(classNameLineEdit, 0, 1) layout.addWidget(baseClassLabel, 1, 0) layout.addWidget(baseClassLineEdit, 1, 1) layout.addWidget(qobjectMacroCheckBox, 2, 0, 1, 2) layout.addWidget(groupBox, 3, 0, 1, 2) self.setLayout(layout) class CodeStylePage(QWizardPage): def __init__(self, parent=None): super().__init__(parent) self.setTitle("Code Style Options") self.setSubTitle("Choose the formatting of the generated code.") self.setPixmap(QWizard.WizardPixmap.LogoPixmap, pixmapFromFile('logo2.png')) commentCheckBox = QCheckBox("&Start generated files with a comment") commentCheckBox.setChecked(True) protectCheckBox = QCheckBox("&Protect header file against multiple " "inclusions") protectCheckBox.setChecked(True) macroNameLabel = QLabel("&Macro name:") self.macroNameLineEdit = QLineEdit() macroNameLabel.setBuddy(self.macroNameLineEdit) self.includeBaseCheckBox = QCheckBox("&Include base class definition") self.baseIncludeLabel = QLabel("Base class include:") self.baseIncludeLineEdit = QLineEdit() self.baseIncludeLabel.setBuddy(self.baseIncludeLineEdit) protectCheckBox.toggled.connect(macroNameLabel.setEnabled) protectCheckBox.toggled.connect(self.macroNameLineEdit.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLabel.setEnabled) self.includeBaseCheckBox.toggled.connect(self.baseIncludeLineEdit.setEnabled) self.registerField('comment', commentCheckBox) self.registerField('protect', protectCheckBox) self.registerField('macroName', self.macroNameLineEdit) self.registerField('includeBase', self.includeBaseCheckBox) self.registerField('baseInclude', self.baseIncludeLineEdit) layout = QGridLayout() layout.setColumnMinimumWidth(0, 20) layout.addWidget(commentCheckBox, 0, 0, 1, 3) layout.addWidget(protectCheckBox, 1, 0, 1, 3) layout.addWidget(macroNameLabel, 2, 1) layout.addWidget(self.macroNameLineEdit, 2, 2) layout.addWidget(self.includeBaseCheckBox, 3, 0, 1, 3) layout.addWidget(self.baseIncludeLabel, 4, 1) layout.addWidget(self.baseIncludeLineEdit, 4, 2) self.setLayout(layout) def initializePage(self): className = self.field('className') self.macroNameLineEdit.setText(className.upper() + "_H") baseClass = self.field('baseClass') is_baseClass = bool(baseClass) self.includeBaseCheckBox.setChecked(is_baseClass) self.includeBaseCheckBox.setEnabled(is_baseClass) self.baseIncludeLabel.setEnabled(is_baseClass) self.baseIncludeLineEdit.setEnabled(is_baseClass) if not is_baseClass: self.baseIncludeLineEdit.clear() elif QRegularExpression('Q[A-Z].*').exactMatch(baseClass): self.baseIncludeLineEdit.setText('<' + baseClass + '>') else: self.baseIncludeLineEdit.setText('"' + baseClass.lower() + '.h"') class OutputFilesPage(QWizardPage): def __init__(self, parent=None): super().__init__(parent) self.setTitle("Output Files") self.setSubTitle("Specify where you want the wizard to put the " "generated skeleton code.") self.setPixmap(QWizard.WizardPixmap.LogoPixmap, pixmapFromFile('logo3.png')) outputDirLabel = QLabel("&Output directory:") self.outputDirLineEdit = QLineEdit() outputDirLabel.setBuddy(self.outputDirLineEdit) headerLabel = QLabel("&Header file name:") self.headerLineEdit = QLineEdit() headerLabel.setBuddy(self.headerLineEdit) implementationLabel = QLabel("&Implementation file name:") self.implementationLineEdit = QLineEdit() implementationLabel.setBuddy(self.implementationLineEdit) self.registerField('outputDir*', self.outputDirLineEdit) self.registerField('header*', self.headerLineEdit) self.registerField('implementation*', self.implementationLineEdit) layout = QGridLayout() layout.addWidget(outputDirLabel, 0, 0) layout.addWidget(self.outputDirLineEdit, 0, 1) layout.addWidget(headerLabel, 1, 0) layout.addWidget(self.headerLineEdit, 1, 1) layout.addWidget(implementationLabel, 2, 0) layout.addWidget(self.implementationLineEdit, 2, 1) self.setLayout(layout) def initializePage(self): className = self.field('className') self.headerLineEdit.setText(className.lower() + '.h') self.implementationLineEdit.setText(className.lower() + '.cpp') self.outputDirLineEdit.setText(QDir.toNativeSeparators(QDir.tempPath())) class ConclusionPage(QWizardPage): def __init__(self, parent=None): super().__init__(parent) self.setTitle("Conclusion") self.setPixmap(QWizard.WizardPixmap.WatermarkPixmap, pixmapFromFile('watermark2.png')) self.label = QLabel() self.label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(self.label) self.setLayout(layout) def initializePage(self): finishText = self.wizard().buttonText(QWizard.FinishButton) finishText.replace('&', '') self.label.setText("Click %s to generate the class skeleton." % finishText) def pixmapFromFile(fname): """ Return the QPixmap from a file in the images directory. """ return QPixmap(os.path.join(os.path.dirname(__file__), 'images', fname)) if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = ClassWizard() wizard.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4533474 PyQt6-6.6.1/examples/dialogs/classwizard/images/0000755000076500000240000000000014532160402020416 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.612843 PyQt6-6.6.1/examples/dialogs/classwizard/images/background.png0000644000076500000240000005406214532151332023254 0ustar00philstaff‰PNG  IHDRÜ|¤1ÕÛWùIDATx^ìÝÁKUiÇñß¹×ë• •a:­$PP qV!ƒ%H-lQBÝjF¼¯`P£¶(‰ rq!\´¬“6Í´r#b†7RÜÈ‚±Âl‘òôl‚¼HYi~?ðåù ~¼‹³8ú‚ô‹·Cy1}œ”Ö©_Òí¨  E_¯ZRzhÒžŸ¶nJOL<0³”æès0´”I¿K:O$&ê»»ûj[[ŸJºë½Ó¢Ûï‘g½LŽŸ6³Ã^™€CR"Hé}G,69|üxÖÌ‚·Ý+ødEÞ!¯r·÷;äÓÂR¥7âYOiéß¹ÑѳfvÔ+׿Jëƒ4¢èIFê ’õÕÕuiAÆvЛöM47_í0³]^‘æq§­­Ë_Á™ Yg2ùö¿[·ºB1åÀ‡výLIÉý±áásfv«VíRÍ©Tê^lN7•3«ñ‚×ì­V~ÊH}¤Sªªþ ’]®­½ßßÔtc`ß¾3K(/ðY½—Q=Ñé.Û´éÅ›\.q¾¼¼&Y\üzïàà ¤Bo•÷¿V,DZT0³¤¤jo,[_ŸÝØÐû9>¢¯`|Û¼}ƒ‹´RøG€ŒÔ¤W~ÃÊbún°zÆ$­‰EQ&#Ý R‹–0¸ þ&•j˜zþüH,Ÿ)ݼùßÔºu%Qõig»T·[Šk)2R:H]’"¿—¼gZâ‚ÔäÙ•ÆÆ?Í,\Û¿(Hö±Œ”ÕR|hï* ªÊÚö¾¢‚Ù`ŒcÝÝ9ê˜cרˆba ˜‚‚ŠŠXXb") ¡ò?ï]û¬u¿ûãÌà×™÷YëY‡³Ïa>ï·yïÞûç]–#ÇzùGzׯkÕ¢?âÂ:jhyÁÉ` y®\Qѯ^™{[ZV‚…­.Zô½û‚¶6nìKF·,gÎêB×À`Ä……5´.S敲:ìëÑÃ{GÛ¶ÝtÔàšÀ¸¾AíêÐÁ«[ÜÛÒý[Û=¸³®jÕë¦*Õ××þþ­1^Üm"DOÁ`èÀŠñV‡[ÒØ´ù“ÐA\µµ]gUªÔ›5¥J…Z—-[•´¾zõ0¶)fúúmÉø¶·háûæxÖPc›i/² vš|"Wv}ýl?uéâš§X±°|¥K¿ä꺹×öí›æDDä:ˆ&3flñò¥íŒçÏ¢£Í1”#oÉ’q1aaî_­³åÈñ©û¦M–·D‰ä)^<¬ì/¿äªç,Ëœ* V‚Ùà 5jø¯ÈŸ?÷]À¾`¥¿X«aÕpĵIü›sµ.YYUÙÓ¥‹·óÀG°‚£•ÌuèPw<ë%Wðò4vhРó[Á½3ùÀIY¿c°Ász,\8àÆ–-ޏ/+þäÍœÆã¬»½yó_³ðß^ÉâDÆe_¯Þ]Üç•W‹Æ\~ûí0Ær­,Xp«Æ6sŠÈ"0ØðòÉ?Þ²ª•ÅÊàŽkÊÊÂ…ž_¸`‹÷GêÀ*¬ã¿}ûö›Û¶Yâ>»L„hJ†utìØ=‹…¨ ó¡{rš1ãØý#G†ËÏãV:Ç놂‘䤨߳ç‘äÄD3Ûo`^Y©õÀ¦à0‡4¸Žd`p°<Á5i©Jw°_?çäOŸèß> ìb®¯ï+W»¸VY cE`hêíšEîÜÏœœ6ÂÈ …Ža¡Ű’U×X‘'*ÛÇ5%KÞ|áíM+ò°¨€¹ÁÛU… G8 pêÑ™3ÕD‚Áaƒ.06ŠÑ}ÝöË/gâÂÃ-(Ö¥Ãqð3¸ÜD1;œíbÝçÏw¥Œp˜Oãý` /W.-_¾me¡B7äÖÓ ô¡-é·RàDzÁ˜ O:ýÁ‚_‘‰òæêÚµÛ`d&`+PgÃ!^¦¦õ)㯬jËóæ}óáñãÕ0²Y`õT¶É³é½ Õ«?–†š²²H‘)«Š5¡q2ØÔ‚æxæ î˜/DÁ`üÓm¥N)ÈÚ¸ùâÅJ *ƒ¥ÇÏxò¶Z•.ý†VfʧaÌ@¤xY=ã4Ë‘#–®§§Oß‚´°¸OÚÝ©Ó勽5ÒÊr’‘-Ó×÷Áö:ÈqäHñÁàm¤ÁŠÎ!L°Snú‚Ù o« ¬Ÿ”0ï™§ç:r¤|ësÂàÔélÝ»{ïêÔIí<Á™. ΕÄ+66Žò¼×_¾+^8099¹ßÛ€€5ô¿#ŒtX)†ƒ3ÁŠ?ðg0[ÿÙÊì¾páÌó&&‡ðÎb8U®’Á-Í–íóÅåËwclšæyÏ¡yóÑXÕÂéêAXäÉûÊß¿·`0YÔ-üéÓ»Ú·¿FN•%°C!zkÜQŒ'\47ßGa”ˆgÏV‘aÊÊô“`Ê©iÓŽáY'ñ·À`°á‡?>qb#ÊnííÙs”@Ìî“­‘QˆôlVë†=~<!u }M‰/ád™›vÏ/ƒÁ†Wüœ$$°ÝŒ¢¬–W†ïeÇù/޶™äùüþ9ƒÁF—M3óƾnÝc´’ÁÀv-¢,ÐEcp²àÝ  Š¶¡äõïà™*UEÚÀ`0žyx´DÎé3 gɺÂ;™rõ*Èp?Uf±Ä™eÏ©þY¥z‰kZóS ^ñ?}ëcm½wO×®ÇQ¡@†”}Ì;x6€’qŸoå Ôã­Å˜éÝ}û¶Âð’`€² ½±øÛ`0Øè²ƒíÀ±¨«ÛKbLjQÝzõZ+*Ѥ-«Ñ˃õ÷vëæ¥¡­’,kïÒƒ¯äÇwïÌ|×­Û™˜˜XÕL9ЧÏI¡$Kï•‚¶×ŽŒuòÙ… ÄwÁ`£+öúC}¬xQ8ÓÑ*ÖŸr2ÁÁ8ÃEÓxìû÷T5ê}` ­†ã±ÚÁõ(®SpÍ/ÒƒóÝR%.§Icc[›ñBä ”0éX‰ãå;Ó›ÉÊË ­n¤VoäÈm“îܱédeµ«l“&ž(X¾|H3³+d%…øM%D½œ9»­_ï2?<ܺÙìÙGUÙ²UÌ¡§w85¥hòp‚yƒÁPŒBŒN‘›ëkÖàì<ʺ\¹Ôläž³óR–ïíÅó‹eÉ’ïèÙª"E#«e°ËСçè÷-‹ë"$4*ÞÖrˆÁ`øùùå€Ìúa$5Ç)ÛHTü™Y³¨Ê|´€ZØzäåµÉÒÇð~4éd®*Tè<ïïÓg¹=ˆ{_ð_X¶ M0ì@é å°UÇÆŒ9éØºµÛWWŠÅÍK‰ý}ûö¢• N”GOÏBÉÒ;Zµº€1µ’VÆY030h©ÎQóèøñ%âÿƒÁàP8œ Žói=Ïí:l˜±<þ>VVfÝÜ6bu»„ç}ä{ù×Vªôœ<ž¤½‚w“`|Vs…È'Òƒ²Ñu{ûÐȼ- )+ž§L–þIžõÐ8äÚ/ž9³a]•*äÑ]¤ ]mpö‡'OVã,wôÔ,Ã}.EÖdúH9Œëÿœ ‘ÞÝW×­[ñ_(ÿQ‰tƒ!¥÷*‚uÀbàA‚ä,Çý¦3gëlcc‡1/ùî/àO +ÆâÅ?ƒÁÊÇ6m.d¤bƒÁ Ô'™^x\kïmŸ¼XˆŸñûý¾±Sc0Xïzbòä“V¥JÝWš˜Ñö;ƒò»¥ñzS ]¤ ƒÏxÁEÔ(øÊ+Ü·ß³óç·£ìÔé~ ü“$iƒ.‡,ê–ߥzzûÔ¶»v9ð‘H; U“J´±åþä&à× 5j<|p䈉óÀzâ»À`°ÁíSÌræÜ.R‡ ©v¾(Ä}0®¹}.=u*ä9\…UаU+ÿî7: th—^ŽÅTzzgþó)b²ê7eu±bKqÍo,D%Á`üu_¼1à Íq*r…±§ží:úûáUšûaK©.²*W®ãu[P¬Æ¢6*46,lŒÏ ÷—Ä÷ÁsÒÏLS<—,q¦~íBéb—(!úåþs[J¹yo‚w…Je€eßmåT¯Þ·oÄ÷ô%c0 ›5Û®Ÿ?˜žž9c„ËP˜Ñ=9>¾e¥N®—mØ0Büa[±âuå@k÷ÓOw°º}B°ó9úVËÒŽ´‚Á[ÍÒ ±±‹¨й¹s­—åËW«Þð1úšGG†„XàÂÿ¥md^–);!F’½ú×Û[´¸©ÞŽÖ­ý’’’þ‰”ƒ.7Øœº²H’^OVK²×¯Y,ÿkç¶ò¨ƒŠR ìúÆ;öí{‚î‘ A{lè×W@*Í/¦U½—Á}Üﻸl´«T)+Ü'ÇnÝJŠÿvwêtR18te‰Ã5Á¶|ùg_’“—F­Â’ßD»<ˆ´ )Egy¾|ËDÚÀ`£«N ³Àõgñ_µ§Å —`cdôòÚ† »ÈˆÔŠMÅ‹¿{xäHg[°€<è¶Äª†çK®nÛVÚëãÃÃçË®.iƒeÚë¹ÿkn[ê¤ùôìÙõ›Ù§nѤÉu•+îëÑ£š¶L¶™·•RãF $ƒ ÁÈcçæÍsñß±cµµÅVòñçÏŸÁ§Ö®6).n Ie/Ó×½°jUu‘f0\v1†gKº„²µQm0¨Z€åZáÈÍ‹ç]ÿJøÿ«ô2¼—ÎûðèÑÒï>\ûÁZÞÈn7Y Dü\ü°ºH‘×Iññ ¡­÷óËtž:²ëfx%þ ^KP_ëŒ7Wfv‡ãzLZÓn¼—Z8@…ç¡ÔÄõ-ÄCCàu†xh°<÷íÿ$S†Á`C,OÞKèÌ¿’aƒÄ‹+V¬Ãxª†³£M›éf9rÄÓ»6åÊ…¢îÉ">"Âtg»v×i˺ªT)Cñ§`0Øè ½kÁ‰‰OZäʧ¬V© É\03ëJÁr š#s…ô/’pî³úœ˜8˜âz0Ô¦â/Á`°Ñ廆?¾bwÇŽWÐðá¾]ãÆùS͇6}à©Sžyz®ƒ¢ï}l-£—çÉS‚”|Ó–“É`°á‡¦`§ü¸‘¸v¦Õog‡Wä;•ÀÉÉŸ>™)g><ïþƒ2Be7 Ü‹›Í ¿ÌõîO¢¹_lÏ­[/`ø,Þ{Fïe70pÂõ -'®kAOü‘-n“pýL[дÇê –Oëù6 À’J{Ô턈¡,•5nkjzY?oÞxý|ùÇûûÇ]ƒ{{miÐà2¤ág_°Jm3 å¹m62Qú*æúö½(Ë€”Ú¼x” ¤Jó›7;¢Š! c¤²¯"µÖZèlhÖ0¬3¸†AûV Óƒî¿ìïÛ·»$I«Ü¦N=€ÓG¨‚½Ä½þB!JÇrKÆweø_ÀŽwöì±’^Ï’}@­ÞLª0g0à œCîv0w¶ooO?#sß›ouıÒ=£—E¿zEý¤©ô§(˜²­iÓÛ¸/($|×­«@ãdtŸÙŒg5….€Á s?¥š7'ƒKYY¨P¤†8P,þ¸I´¥¤y3 ƒM䊥ZS²äSùEñ«Ægš¦loÕê&Þ%uXjbÌ+¶-8Ï D€ÁçLâ­¸Fa•{÷ñÍ›å6††¡ŠÑ­«VÍEè0|¬¬¦àÌCFCz Þ”_ñï< âØ’› ¬ÞÊcÏ2ÝË`¸ŽÙ„þ8ɸ _cW¥ÊIµÛ½{wŸ33gE]Ûì¿0ØŠó…(…+^þ×7o.w6ì,TÄ|J ãK9Ø¿ÿÊd! Mð3m/ONž| Fh‰ë ¼—ÇÊ»LMc0°%›H¶©N‡Êv’dï w·«Cop$¨G±9Šem5·cX)¢Áwà¸,ÞfèÓç" é †ºZV&<§³…>œ(‡_øø ÷X´ÈIvû™û'«ÁtKc0(†¹²`Áר\¶®J•@úc¥,È—{ Y{%ëC2‚ÎAphÖl%a;z\Îw*°éã'6£é÷áCÔÕ©¿P.,[vðððá'^øHŸÙºlY{ßÒ¨Ñq¡Òa¡«Ü†ÆJ™ˆÃé±ýdp(` ,ñöÞ½Ûvµo¿† Çià@/j‚ûîÝBêß…1CâZŸ 9ylO—.žH­ Åj‘H†ˆjndü'…^»fƒ÷‹ €ì)=¬´©aê0º$T“?>}zë¶6nìMÛL©$椱¢µ“gäêU[­ž[°ÍdT!W®ÌS¤p5Ø×³çI‡‡0"öý{SŒÐáÏYóêÚµ»á}U‡ˆp]‡lß, ” ìêØq?ÞKà EùаÏII3eÅzº9Y,î:P[ÈN†%Ò©²_sNˆ£4~ÞØø~§ÒÆJÆ» uÑèÀ/.]Z ÇÊ™Í?ÿ|(2(¨ ¦ÄŸL‚þˆ­ä‹/_¾,õZºÔ ŠÑa0ΣRŸ¥ ¨'2 ƽÊ‘š–ŒsíIEy7˜‚fŒÁH›¢U‚D\çQ±._!è`Ñkm©b V•• d)Ï.úœt¦Å³ú`K¬‚ÆXÝL2mec0^ùùM·¯[÷œ±dPJÚÔ=gç-tÞÃýhCæK¬‡à”¸ˆw?âŠïµÐÑ=›Æª‰ëg™—y‹.ï嫉̃Aç3piD’{Œ‹t$±´•[1ƒ‘%ïëÞÝކÙsµ'=JÄÃî Ç“sçfÛ׫w—>Åï¬Ë•[JÒë" Á`£Ó Á¦×7mÚŒ³]°C‹+€¬JCØà… ÈÑoß4ĸüÈONšTèa‰¡ +8ÝXˆ YøÙJ‚nlÙâˆJ„W2õËë;SåJKÙöµ`AñOÁ`ÈóÍp,K”¸VT ÷žtñ¢èþrÛ™@JÊ/}}›höíð|ƒÌy ’çÃ8pL{lëC-z¥´è×oîõ¿'«´Üz§_*ƒû.+¡€³óæM@pø3¶™á(\ñJdv"UìåÆZµk†Ð+@`—ýÀCHð•2CÖ”(ñJŽ·ÒÏÕIÖוøƒ |¾­]&GHg0Øøò¡:|œ&1Jê¶œ.8Y¾½{w )si¼[O³a™ÁS§þýÇņ…Í%7|Ð… màÊ ¬ÒAt¾••é”@­Rò2—à’^[g]儘ã ææÐzØÎrÈÌX¬ÝˆCÊ–§À¹â}bòä“ØŠªKkÉÑJ&K70¢+U$ü ©rÆdhH“»FW´W>"­øBž ?ƒƒ‘.Yûr;–øñã2\§€<~$‡ c^OὌDa«9ž÷útŹùóE7HeÅÈKÉÃ`õ ×õDp4ò41ÙAÆåöÇޏZ€Ÿ5¶Ñï°Í6Çýp˜ZõÁø§1.ÙõÆHÎfùÍ~žV€³sæÁ³öòÝ¢à¯`= CwÇ5›Ë°aS‘«yŠ‘…ŽB&=$ý—»lEÒT†¢¥‘=ÁÙ5ip£CCWÄ~ø°¥¹â]LWu4c¯^?ã›ÿRkwzúôßôâ³rûuóèï¿ÿ.“¦K „±FRû2ŶB…çȼkš-Û"%9 ÐgP—çN÷äýÄçè æƒÊô^Y‘àïØ­›ú³ÉÞyÿ œãqš—™™UHcºª4ïÐdÚìîÜù*½‡ÒŸÓº®¸urêÔ8¯†“ÁÛjÁªM›Þºno¿óí½{+‰Å5)bs”PƒU™2Óé}Z霋Ÿ;Qà"Úz‹ôƒû£•°‰Ë!ˆ¿Å¬.QbÐ7ÞÍi]¦ŒÅðž¹»Ûâ¾ Ž¶ºô¹P䆪„ɸυxä¤Ä-\‘/ß>r ù;:nÇøÏBÛË~dp{0¥ó-VÉmt/WvW‘^`pìKÙø¸ŽÔ8Õ 9s¥ ï IåÌ”SG?Wp„ü ȉ~Alò¶´Ui|†fêó]Ñ¢pW¶¤GÇŽ=}zæL¬ŠN;ÖéwÍ)"ÏA•%-©üüˆ£µPÞQ@í¬äòe¼§³IÅ'¦Lé‹4±çdHȼyc+§åhiBÏdHäªßÖ­›d½Ý"bšçè¹ì‡·\¤' è¬2Ï•+BÙV9äI!†Ô4"v÷šÞçï$®[Áf:¸â•Æ™m¶ÇÂ….§gÌØGÛd (1EI7$ßÚµËAÚh°²@G"x”eÉ’ïP¥qç^?&+éržeðŠ×γý½{SiO2y3aP[´eìp?XQáZSªÔ*’ºšítÐèr‚íÀ?À"$'&ƒÇä–ÙGn5´>ã(zî6mÚq8›f£7ž9…Yð{·h« vé]Að×ÞÞké›]†–k&ø‚-ò䉀äùrZB¯_·‡0FúFè8ŽóÓújÕü”UÜù×_=Þ<}Z<•Œ•¤úáÉc|þ=ølA&Bü²©nÝ)‘Ûï-"À`Ã+N$¡è¥P1(‰Í÷‘º/XàŠçÝÁ"`x4_Pí]tttÿ\¹Àq.ÀêüVÞ2¡2,§°Dã¤êú ÈWmM+; öBÆ}3%àYáô³e°ÀQ£2ÀÖñ…,çI@B´‰’…±64¾«S'_ŒÕÔLµ‚ƒ¥6žå×ÁÏÕe@óÏ›˜ztüøX­íänås’‡a…pº8tÈ×K8÷%Ý;x*í‚%1¨ñ¦›h-ƒñúöí §2 íÍ›/U23`P·©é´4W‘k~…°žÐè!‡«ƒ®­¤|&³Nú Ê…Ñ$(õp¸ìµûé§gT…n_¿¾+7î8­’J2*-†­,Pàµ\ ýÓ³Ó+ƒe†B¾a®#aH³ÁhÙ’ø4m1åùÇ‹ÆPä‹LglÅîÈ4+]Ïà€ÁŒSÌõõ?Ѷ“&¤#CJØ>@Ò3uš¯™@[êgžžk”~xDÚzÏ"H0Øð*F–eÊÔA¶†º®nwÇŽTè™[Jô¥!øî¾p¡=Æ(¹ŒˆmÍÕõlœ‹Ë—ïxxô(Åä¦ ß²¡bD(æ}G‰Ï¯*´£}ú#+L’ðËjg ­VAq'ë-‚þoIÚ‚VûTèê³mGñù­mŒ™‡™"Áàø]÷7wîXQ?8üA>‡ÑÅ7®YZ”apë¤×ï ®e…à]@@=¬ØçiÅ"ãY_µêÓ‡÷Hålךž;¶n}]6Õ,G Y¥‹\Ôé³c°¨8\,õUÒŸ‚§ó â%Üß¿CÊÏìG+¤îJMÏhå|¦Ä'1v Å»±ï>\­Èýáª3áe2Ä‹VV僑AéTuÀ|" @ˆágE:ˆžx½„b `/’ņWwkçNÈ´ßp8°‹R+Ž×ˆOöÀ w<¶X)[h¬äuÀ±Ôõ5+VrC¥N£ÒÓK@ëå7Ôá•ÜõulOe+â±:°âÕg‚C(Ø-k“Õg»ØØEÒI¤VIl¯ã¨1 ÆKM'%+G£þn=ë«02Óÿ«ÒÙÕ¦\¹¤ÃYcK(Ä ¬zr,­ ⮲oj}›(ßü²¶R%ŠÁ—E¾`H÷)#Åûöí±±±”‡é¦ ‘ú6r:ד¾ ­–ŠL;‹ ƒ-7øñ»pêìjž;w(õÇC–ŠŸ5Š¥+JeRsG»J•¤Kë€áµ¢þô“@‚M`8Ý»F’ƒc•/•mM›^‘ò`[pTÖ.+_(<Û2¬o4;»’â–²šAQù, L-eNƆç]Ÿ=[V ™²UGέÁIt¾C¿»«èâú2>>ÖÖ;e•Aq + ¤):.,ŒŒ­ÐÀÙ¹s'Kc¤ÜÍFøyŒoeºV^0«‹ï…¹:![+çÉ“ó®.Zô ¸^µ³ÛuÑÜ|=CóKäUò‘̓ÂÒ§T˜†{uR„l³XŒ·¡ÔH1•œQåøñÉk¸o#«.zQ¥…Rµ€Š ïˆçÏW’T¾HvËÕò-8:]>ƒAîó°ÀÀå”û"$ð¥1Å’““{Q…B\dä ¬lA2í…„ Bƒq^zA+y lV¶s¾`q‘ Ï¯ÑXÄ€VeûŸ /.%}Ë,”0<›H(Óå:Ëì+28Äï”Õþ†‰ÍE:€ÁFW .W„&XÝZâü'„«¶L»¤NݦêÔ¥ÍÅ;!`ÊŠ¢ð»ïV—,I’‹¥è­Î+òEi<¦p_´h5y6ƒRV;º’!â3¾‡æÌòÃ#FœÃ96^®xûÓës1ØðJƒÙHÂõiÁdD8Ï%½¼~‚è9…,‹?¯Ñ~ë9*ö$ÆÅÑ{¦2S aA]Qݺ{ð`H8„IÛupÀ€ ¨²P!*-nìíÖMé ±–ÆÎÌšuú1½®®_?÷–x'ˆÆ—fÏ>_0éyŠŒœ‡4±sp>D9r¢PVj¹ŒzµH$Kï¥>è2.Ö,½•dp8+½ó&êJí]ä‹sQA ‡“š¦`+ÒÅX’t%RX¼äåUž.´ªSóM¼«hÎ J—2 ×Þ½À%àÙFë¬\±6ƒ)Tü)åðêƒz ħɫ‰òK’;ûð$ΫѪ‚k}(oõÌÃc*NooÑÂë±›ÛF¤ÂÕ¡•˜þí8&S£LˆÚ¾$Ã̅Ç3?¿¸?I^Pü~sŒWÁ»‰Òh/¥×çb°áóQõœ'•U«X䦤R¯FZ’_¶6ir'òåËþ879¡ñiN6ƒc%ŽžI!ÛÜYìͬ ŽgÃa0{I˜Hm`:]ÁØ8hªÜ ^:Œ Ê/ ‰ y8O’aÒ»”#³U¶¥[ Á€÷²?Åê ªIFOåeRVÖ*±¦g—W®ÜpÃu©­òÁËË+;¤þœä}’YΜ}…Ù*½°eTŸïÐ::Ø¡U«¶WÖ­kL A—/÷%Ï«¬ÕË\ZÝpæ£PÉlÊÎÑH‹ç¤W/wjCÙ(HöDÎ¥®43V°ŠE"F•á-­f²œ&ÐÛÒ²V‚·d¬HŠ^CÙÿ&B4’ +{èÀg+ƒÏµ„Œ‡În´báKÁñáñã¿á3Ý£Mh©bÓ’âãMONŸ^Þ\êû ½vÀ™ôJÞ:‘`0d|khªÙŸ\©Æ–‡OT›G÷”6¯'È&Ë3Я`qÒÐÄ{Š×ð,®5t@%­èµk6p¬Ü&ÇŠ’Gê:bÄNZÝ´J¡jI9B¥5WtzJz,gÎÌçÚôƒeü´¶“·¤w2öîþý[ܦLÙC÷H±z-sÝä(»’|²dC¥¡&Áðìh˖ņgާ„gË%BÐpò%Dlçi‡F°B7ÐhÍ5Ž¢ödœûõ»€û M‚f0T›êÕ[„óO\èvô‹­¥½²âÁyrN–…Ú­¸|·n-‹³S8U'l¨Yó¾’­#Uô?#um.UÒ“'V£›Oy)E™&tΣZ=ŒçGîé±ø¨(SZ-ÿ‹‰¹­D¦!ËeÖJNÅiBÆ´J‘e×ZÍéjÍŒçónlÞìàìL¡ˆ7Ìêt*ª›i¤ˆm’+±}6:ËÒ6TãýQ`ñ_&˜'2l|­C®^µ•b­zÒÈò¦¦°…çÕ…ÖU«¶@Ù’Ê~xKÁl:8ŸxÅÖv<’ïÿé߭⤒ö¯èD[È©-AööÚñœ‚“%æÆ`Ail )~º‚#É•Mé{®@1LÄë^£6œVHZ¥áБÏõ É9P\ò™»ûÐ`p¥Ñ¾{‰úÈb FÅÇÇŠ,ƒ‚Áë«Ww…!}–µ_B||l¤Â–ö»+À(I ˜]BtôL#£—4f¦¯ßVGVðÜ`W°›øNàïr†lÕ‡R òòfG¸¤ªøQåz¸tI»kÚå¼=)U‰LƒbU&oZ[±¢zÅ‚'3óÐ[ËØ*Ò•æx¨G„3e¶ôxî:†4 çj—¡»í§ÈH³UE‹ZÊ:= ©”?`Lu1q¯õðžä¿©?™T§Z§4%dªá±ÑUCˆ`ú ‹ƒ¨G{çÖc-Ï¥z$ÃÔ²EÈáõ6´U+/¡…™BäÊ*Õ-Z•@opVZRº”2 ssç¦zCðç3ÆÆåNù(Sà®üh[˜ÔBN¦ a¢Ÿ!â°Cóæ>ÔCƒgC¨TV5'†É.Ë/ ‘n!õ.fQy*••Ú-­Iî£1™CÙñ’þ=À`r¤(ù—H ¾üäÌ™r»•ªxŒyŠF=ÚT¦Å½ZÞ[2¨+»ÂkøP® RüG•ÉåL}‚.]šŒjù2NWíOƒ38ÃRÇW8õ”þÏÀ—¤ž†/!ª1 æú‘&smK ¸;Ÿ Ž&IÉí“òh*ù^É-ùѳ˖–öÒôH¡Èr§¢mAúõ"ÃÀR¤‰!rÅ Æu1®3Ápr²\±±Ù#{ ï¿îëÑÃSJÞÍ¡Úü8mGeÛeˬH‚G]03›†¤æË0 [SAíò|܇j”§®¯çæÍ;¬ü‘b¼Í:‰µÁN²nK…óÜk|ÅRœÐVÁù”)N«žÐÂU[Û~+|Æaý ªÈH°ÑÕÄ6sJy\¡¦þæ—^¼wÆÆNäD±ªP¡ŠÌa¤‹1ø³üÝ`+lížË, \ ÀTF”Ùw0¤‰;Û·_L}ÈÁ±Rš¢ K¿Ci`LLL1 òßwq„³l"¥ÆÑç—‰Ò?>NN™²Œzé̆‰æTúFƒ&`ùT<Çhùæ½Qo§|z¬«U«ͱœÃ4îдé-h“xcw“,µHlÀ‚: £wÝÞ~yê¦}Ý»wþ×ÖrídÒ¬)8A¶=š¦Dú11Ðd˜<ù$žwÑ2Æ*à’ÌoáĈŒŒ,H2ÒÀ6_¶±©‰bs”ùÄÉâ×=^é{8ÿÅ~xüx9ÑH<gñÊî†jïtÁÏ€2 yOÏž]O¡ÿL!% |RLG)„Ã-‹{…Õ¼œZ7ZzÒÂ3¿„„ñþñã!f ç FvG)—‘N2¶)2›%~W§N[pËuèоW¬­×Ò8z·º´”=o¦e@­Á2â¿„€C‡æÃ©Žç1Q¾qQQ ¥iQ çÀhx<£º¹ÕV«D¦›N°FR¶ ¼’XÅÞ£îNéý]OÅ? Áá=*Îß*óy°oßÁp¤,Á¼ECÆo5éhj$;ƒåE¦‚'²,8]Wöj¨ôÞÒ>hc̘ž=›dÀ;à~ˆœ´ãx·²È,p5B+p.húåË—¥Ø–u¥m&æãÍÅí^\¼h-›•PC’ k×JB–švôTò)Fq>ÊáÍ3?³ˆ'² ¾-Q [ê†oÊEB‚´ië Õª`ì½çwÜ ÿ¹.Ï"³ÁjbeÀˆÝU†á¨¿()ÞúÜÓsÉ•mÛ Ãiâ%ÕÂʃ*Y6”C©8§ú¶‡GnÂJ™@÷28=Œ3‹2¿ü¢2–â:Mãü6 Lñ^³fm_äX6¤=ƒ·ìÓëÛ·MÉÿ¢—öŒ)¦d¼¹{w¾c›67hÅ©puYdpð(d±Œ§Fš=½W-Ú •$'hW³»cÇiJãI”ÝÍÕ¬weõárBg€Y4h`±ã*M'Ê‘‘#ÏÒVE)¿ÀØTpØGÉvÀ$*â:~ÒA”ç«(8’ã$[§‘ {“Dhþúk}-oõ¼—þþ•©9VÅHtÌYì㳚$PûôC``V6ed¸›šb;ùš²OèÌ&57¢¨ÔDÚóH 5ulH!M8åszYX4‘“|÷n!‘Q`ëN§>P‰S’¢¿¡¯²@³5Ît;q¯î .SÇY)¡zãÆ¬-[Þ€ÑܦN24YÈõs!…'éf~£Š‡6£Ó-[ýö›;¥î`Œ®»é}—­o3|¾kûáÃêóýò¥9î àpNžÊœÉ_P"1p–sF‰:¹Ô‘sŸïÆ‘g XnÒ·!Ê®ËF-À§½p?ì s:ôKÙ] ¶gêdrP_°ƒ\Ñ ‚Øu,Äu/øõöîÝÛð¼®|¿!¸äæ‹:˜±ÒšÎ aÎ%ƒSÒ‰ŽG…¯y…ĉ)SFJ/f´³©Tᔡ®(õâðÁ*˜¤-Í ¥Ì^ò«lZh 2 \Ô^I³}ú\´*[öê);;}ñ CßKááN"ÓÁ“Yƒ²ìëÖõClî¥R‚á>¾+ÕHQþ%‘^¦ÇâÅû)ðŠsÝ-)ç*2¬ý+húOjÑR¸«|qfvíÀÛÌyäXQ4‘åþDêæ¯“÷[š—ß~[…¬•ÉpÀøÓ{ØŽ6™nÃ%¾ʹ}[Ó¦·OL˜püÁ±ce‹æ5™_‘ÀYËÃÐz÷Z9‘Ûöídp~;ÖVª¤hÕ{okÖL2€L»‰Èt0L„è‰yø--)]JݤFаO?¶5ϕ댢ªœ5â®\½Üœ–ÚÚ¨Ñ2è4V¶)ØRîF:QÏ›˜XˆLƒ²ƒÀ@=È/P‡Ö¿ipSå®$î@¿~¶Šã_ÏÒ.»š‡z÷n)²Œ¨¨¨BkÕz¬Èº9õï?-o£;Ëq*'LÀ‘Uà/Æ¡~Û·OAø†¶„Žÿc+L5‘,C· pšO)ß7×/øb½+φýDÖ‚‘×’}— Ö'%aPÞw5MP#‘•`ëŽw2d.æå&ÉÛiÊ™S^,ÆL5Ë€>EG›A\øªKâiL£YãO Ž„ 8í¨‰ÒBMØ ‰¶þÖ††;1VBgdÒXºé§¨¨É(J^M¹°ŠP®E±3QËÝA¸õcØãÇseïó^nS§×jÖ¨cà‰- vU )Sé&ÃÈúžp=±ZMÆ9›šl4@ˆ¯ïJë£x«]•*VÏÆÊJªpÈß4•žO]¾êôñü”G‚Íï3øû+??kFc|ªÔ7Ïþm*Ý ’ ŒLôï¸ö!)vê„1CJ5âŠåŒ‘·ÓNrk"”3ÛKu.ýKÏm ĶÒ$ƒ±”¯)2lˆ•iIŽ“Ó3fXýK+AØÒt¢¯Ô}ìÑHbî[ ¼ š,VQÁÁ ëôêSpFXId8[ìÎs‰ÿTÿ¥³ß…¥Km`hÓ+tè°¤»» †õÁœ`vÐ{‰JUÑX;Ükæ ^˜ ñA¤ ë® -ÌßLO/Q[+ZS’#Iˆ=]º¸\Z±ÂšöçeìïÞwte0Á—/÷¤m%²Ö½5WxÛcdMÄ@Þb|óefü¨mMš¨s8‘!ñ›H; + üG­†’ .²Àµ’T;IRpšzÁ¾¾½eŸ2–¾Óp¾c08ˆîmeµûÝÇ¥S>¼F»?Úôæ£gÛ[¶ô¶—vt&€Kÿ^õ3ƒÁF×l,S=½ndDðZš¤’x;@JÃ9 ÛQä&¡ÔcdKĤ±3ƒÁðÚ°!/•XäÉóŠ‚äZ“¨ÙЉ ™ûjàW*€…±.F"®9®¤­iñ+Ñ]†Á`÷‘<”ÐÛW÷¼†ó* ˆŒklñEzúÔÀÆÀ”{lF܉Ô¹gchØnU±b#±ÚÅJ½•m¼Íd0¾]«µ L!B3ó¾uÙ²÷ÕÝ?Uª×H¶u—=²Ç «½0ÆbÐ;tO·nýl1í¢Þ½«´®J•g°ýŒ:=o4,IMd‡Á`lª]»Á¦:u|PoGFö†åŰ失"«F‚ú0ÂIRQ,†®HûHWE‹öá™5ê¬ü:ÝI:Wr 5 ©ý#:4tÅŽÖ­¯ÈÚ­›ô>tÉÎNéW®¢¶¼ŠÐ—© %ÝCêo7U-C*à6²ájwçTŠ/M„è+0‚ ÏDOI[]BŸAÀèÎÖÆËÊUª‰bl¤ÍHÕæ8óÝ¥VOXé¨Ãë[Ù¼°¦| ÍFöKØ£GÕ<.tI]>€Á`ÃkšJ*µZªã&lr›6í8ÆŒ¡.VçµXédI¾wðàŒwÕ¨Lè…çqtÎ3Ë™sß›{÷áyu‘: ®å ÁlcmÀÙ  ©†²âŸ8Ñ cã@=ÍÞknnëèLˆíés/SÓ´ªD3 Æ’Eqf»º¥Aƒ{2ï² Ðr/·“A^]»v7ž×ÿ ߈/ÉÉäɬ*« ú‚] WÀ¤ 5kÞÇóÉà_Æå¤c†:Õ©‚Áàn@†î_0E6%¹ˆ3\ò3OÏux§R*±¿úàb¼g¼XˆšŠ îÃ0þ\%þ W”# îM†F†gU¦Lèûû÷G -À¨–+As…[(€íÚí¦{xG×þõªÈ`°LÜZÕµh_8®´›Y ó³[ŽŽÛ.®XqZŽeJØt¼pCXBlì"ê+þ ^%ú ìa½FBô% ƒÛ¦„^»fCg@°×Ç·og`5|MãDŸ5köb¼‰H ÖÎü H$'&’c¥¨L?D«YxPÐÅ㉫ޖ† =ÉØÖW¯þ÷S¿o;É`°á嫃*™·©Î¹\SªÔiEÞú¢!ó>%>?uw_O2r²µÓ`p8™Ú3‹´Á`¼ôõ-‹¶LÁrû€sÛ>ðÝC¸è Œí7¦ÅØ -§Ê;\Ë‹´Á`ÄGDŒ@·$Gß¡Šq2(¸Æ"s9É‚ã~+mûå— ßDràH‹Ç»0¾ÄX#ñ5"£ÀMêûƒ&·÷îÝcR—èÛ׊¶’HˆŽFM^0={€}Ü,ا±âÅ›ñ/ë6ÃÆ–¶: ið‹ŒžÑkÿU»;w¾zvÞ¼1T)NëÔ!çI5!±»cÇdlðxÆ"¥ì>´5gŠð¨ùKÔg"#Á†WM€e‰÷ÉèV—(ÑCî4r*á¥Zœ+3S†`|"V¼æ?¶Š6¯p ©¨’&šÁÒ­ `x-]: áƒxe¬<Á«R¥^%%$Ì£;/­0öA˱rËXˆ B§ÁH-Þ£JÂNOO/I… ÅÓ{Òó’B•LÒÍ𹹩éÞAGÚWéÙÓ;OÉ’1*•ÊHmÌÌÎæÐ×÷˜¦R}ŽzñÂCE*uêäÑwï^‡êýúÏ–-[í*U¬ÿH½óØà0aCTB4«Ô¥‹Ÿr*‹KŒ¬®þx6 ¿D ºv"=ÁÆF»ˆ·XÙöìÛç2䨱í–-»±ì¥ nÔ`ܸkx~«°íq-–-{öÏAžž­o¬_Ÿ§‹s+ccW¬~%ñ9'•ü͹˜×£B·Àç‚—Ê {tì˜ZaxïÞ”ùnLå&tO´,^üݶ¦MÒ··;ªÖV¨àhŠŒäùp×Ä• ¼–Mçä{}À”ããÇ»AWå< 4‘æ Ù* éì‡ÜÌË x…L„èMÿ5%J\Ñ¡æ‡ Ú&b‚6ƒ)ž¦¦ÎçæÎ(Õ©躲`Á'+ò勆NcRˆ-&o XP¤'ØÒñ±›ÛFÄà®C~/r{ѯ_¯ÐÔCY$D)R×^*ÆyyÙA¢ïÍ‘  { ÞåÊ0´Ê¸¿£ãvÌWY¡`¨0)o¥ë9Í çC‰¸¯œ¬¯Û[µ:X+Ý#^t1><|&ÊL¦¦{¼Ž® 84•ì¤[éòÛoêœL¬†Ï7T¯¾8ìáùWíìv­.^üÍ}—ŠÜÃñqãöÐœÉÆ%uh¾×·lŽÉS—•`ã«4ݼ׬Ù÷)2Ò ž³×P§Š€f£ÙÓ³g‹c²C¤wìf†ÔÙðŠE¾ñ¬†ç’%Îèè¦4í¹˜·oS‰Æ ‘»‘@ÌYìE ‹–ÅŠ½’ïúI9÷,OpIpêµõëw¡Gš9îõ<9ÆoÛ6ë5¥K¯¦É¢Uãm7õýeúú Üq:´”ø2¬‘!ÏWÈõ™øoß¾}K£F— ¡â{vöì Š‘R}ÍÙÉ©SO`l$B ¨ÎxÞ§.,¦yvÌÚ†$\VÒ æÆdì—[’$Ôla‚Iµ*‡°Ú=@>à¹íi)ƒ°oq%ãÌ+'ÓŠôàÐ Ìr¯ìàd9Í•ÕähUƒ¡‘È‘˜ ì š€ 5 n4¥9šŒëµš7÷%聾ܸÑXH á6 -^È‚K•™Ak é€3Àﬤ{IÏ •ûfã+¨éXQz%$%%5ÐîÇL1¢pf÷Ò/E®çùÀÕÕ]C]é\¡!vUªÀ›û÷—ÆäZ뙼gäTñ23³Â»9!‚€•0Îyð`lAïìïÙ³ÄBègø†¡‚.Ê92:œµÏØ·jê(´ƒ”1µ¤ßÒ9Æ^ p h$$ 8Gñ8Äè‚h²xák¼³€Þµ24lOãûºw÷&¯Û‡'OVãÚcÎ` ¸€ŒOdÉÉÉmö÷êu Þd%4@º)&ߘ߲h©' ÍKi¡à°A }A*)¡‰Ä$Eœ™9s·¤ßBézÑÜ|ž9ÑäR|¿7OËPÇ‚ž‹…ÈàÆœF‰¾9ˆå­?9iÒ–ƒìtl×n¿c›6çäpΰ#Y gP•²Zs±f͇d<==¥(kBV-¿R 󨨱Î8õ¥{ô_;)Ó<ñ»ÓAù;ÊÕŠ~ÇÖȨÈP0dø§8üœÎ‚ƺS’Åš‹“©=Sìû÷£¿ñíYj)ç’2¨ÙòïÒv…VHë2e'ÅÇÓÊXZ®† )Ήxö¬Î ooR&²Õ¡Ž'£ØL|OΜ1¾»oßVúÆ ¾y³4Œ-AŠåļò÷·¦ßk«U«…3ÝSzÞ9x°•4Æ¿ ƒ²‚ôXæÇyìgú /y3h÷b šÑS0ì4ùÛ2µ.mÜè;þæMËÎ66{+wï¢W•žÞ—®vvçðÊÙ*U>\·‚ªjï[¿¦Û† »õóæý¢§R†ñý$´@yš²uƒÁÆVüLªÎˆÓ~{÷n_ç_U«DïíÚÕ‡d4[;A<œ®èþsgÀ±^C÷ÐãwLÅw‚C ãèï¿ÀÞkÄéRì*W¾f#Ë}}!:*q»Ë––{ñ~(êò8~¼¾ÈX0Œ“&m ™>…À>Ô·œÁ™&Œ›6ml¿råþÂ+¾C¹U˜WˆŒƒÁq=pAth芛۷o‹ýð!Ý»2*P‚!cråÁ*`V»«âǃÁ=Ø2á Á`P Aó'0:?0#Ej y8‘Föü´­I“ŸDÆ‚Á`¼½â+??’ao+$Œ ’g”¨Q×úàu‘þ`0$T ÚdBÂ3ƒߌ!â2S/T2 Ã}Á‚¦¨D¸ ‡ŒÖÂdðŽÑaåÊ{¸ì£ÅƒÏ'±<^ĵ¡ø×AºHNèyK–ôU ÑJ¨TžÔ ÈX#ñïC £>ĵ‹Èr0Ðÿn#͉¦¸-¸ï_’±Â89uê H…GË >¹XˆÊ"KÀ ^w0®8‹\¹>ž=ûú"8lªSç¦T>)þà ùNxaÏÎIÆ„“ñ)D.‘©`ÈÞJÿ»Ù`ÏŸ?OuhÚô›åÊÕHüðàIî¦ìëÑÃû©»ûúÓ3f@»ß=Ôè7P=‘á`˜Ñ\´u8ð85.úõ³¥ñ=]ºË9ÛŠ¹±Ãµ°øáÀ÷ܲC¨3Åí´·CX?,Ï—/&úÕ«éx/§LŠÞ@gD‘àùR£>EFšc%›ª¹…ÜݹóU<3OžüEÆó® -$%%5BgØsô³ "ÓÁ“Xž³9”@‹mK ¼\ó1f€ ™¦<9{v)½'´€jçµd¬xÖN]•Œ÷p\§‚SðÊóU,tdôè Ø^F‘—ÙCñäuÖHëIs­¨g*sž çuojhÃÜ€û"óÁx°½Œ5¶#iÒ¶5k¶ý¿Ó¿þçŸKÓ–îëkë×ï‚Ûú4¾jt/2 Z“ì˜{X?†?}ºÏ‹ý©|{æ‚áçà0weÁ‚‘À\Èì­‰ŸŽÅ6e¸” ZEéq£¡"£Ám–]¼h÷âÒ¥µ_¾|Y*ƒåZ!¡)4Ç'Ntó®âO çú„±DæÝÒïîÝ[êØ¦Í dµ«3Rhë‚BÉZZïÁ°¸fPÖÓĤ9áÛð žM³C2  ¼`4a¿‹,o5OÚ`W¹òc26ª½C o7æ&U2âyͱC ‘gÁÛ¯nßnA%ABgÀibääÄbûñåáÑ£›0AÕ…„ÜÞY 6ºÊà—W­ÚjÒ‘uY[¨HI †FÊ·®J›;Fdhh=*¤¤êeòfR u®ù„.‚³‹š%ÄÄ9ò,J„n¸–ZO¶¡—éìzí¥ò g¾÷|{÷®åö-nÒ*‡çBWÁó•ì.Ë]ÊzÐD¦òý*æ^²â\GÁY ü=2$d%®:np ¥¬‡€Õì™”w]ž'Oxìû÷¦ä,KÅ1VïÍͨd+ëË€x"«ƒeÅž³öç¡ H}¾CÆÐ[¯¥KÇ¥¢4ÖŸ ”µ„koÊŠ„4€Áàó]kZÕœôÂy}õ§¨¨Šß!¹Ÿ ZÀhgãZQü ¡ÿ †<ÛÕë€_Áó*•êy:uV ±,­1ü%EˆqË„p郛ÉÔÊö±»Ä'¤Ì$*ßB‘ó©,ÐLükÅ%ó V1===ÑkÇŽ½=ìíý –+wªz¿~{Úš™í*•È]´¨‰øgic ¯nÙQ‰M‚µØ–N j*Ø[–(Šqée‚‘øÅß!XË`0 ñ3y6Ñô¸ãÓtNŸ“ܾºžž^7zWòyE¨ )sC­;nc:WSq¤¨…kÑãâUž@õm Ý»üö›Œ0СeKjߥZDmöþ Œí’\µzi[wÒ5%YE(ŽYíîÛ·8‚ë±¶*¼ JuÈùYàú+Þ™ ~·P{.‘: )c¡—rSvbJÄõ ŒÇ×Ϩɋ†·’ä9úaìz‡zèÙÿüó<}¼d3ËVÆV‡ •‚ê¸e0Tä Îzpäˆ=5!¡þèSþÛÅö*pG”•5yÞgçÌQßc;y™Þ·)Wî!šÍ˜üŸÒRMþÞPò'ËâÅÀ`0dç°Ú3w÷Uhêa÷ÓOgNÏ™ÓA9çÁhÞjˆ-ÁösŸÔÓ¤^«ZƒñòýRàvã‘ Ê¿ºqcMBlì|Ù¨’Á`hºÁq  Ø[H¼¹{w µõ^¹e¬ I‡«ÒÉò庽ýNMhŒçGQÅë±³cǾ¡ðÍ`°žJ*†8,GN¬xñdP‡ :±)Ú}ÑÑœ’<ŸQØ¢F?ts«-¾ ãøøñ ÐøóÆç¤$ãÔZk™fË6 ò̬YGe—^µ·e0znÙâ†K x%@a”c©¢+î—&aKùúÕ8vXµÊc—þfLp.ÅÁfBÄhIÍ0,Š˜ÞLºßѪ•û_÷7g0ØèªÓ½ÌÌœV*AÆ#W±œ Ž­´ò¡ÔçÉ+??ëïÞ-§ž…pÇêvï>1Ï•+ůä¤ ƒ.;Ø’:í:ìÖÖ¾è TPžÑ&ƒ)kw¢>` °íááÃOÓ8ÑmÚ4*ê$Òƒ›’€}AS°¾°Í+ëî¶ lýå—Å4N5wÈV™'φÿ wZ[£†!íÀ‹…¨+*çÁVò"œßÖ­;È8©!îçðÌ ×Q"í`0ˆËíDt²<ß…éçÍõëÀØ&¬)Q"î}i g»X McJ#ŒÎÖÖ+‡œ8a_gذ“E*Uz¤¢ˆZ_&{„#e*®¿TêÔéÂÂmf…†®,Ý AÞ3‡áyR<é„ù›`0x›Yº„š¨ÏoeËÞ±²}ÁYŽ:Á6ëD ­¨ÆjwZ| 6¾þÛ·o¿{à€99Kéꃄ—¾¾í„Ć֭óR8jñŽ{êø„ ë(w“S»ÒÃõçÑ£_àZ ÅjÕò ½r¥ùÞ.]#.È »xq©ªöî}¥×¶mnt;ôë¯?Q­Æ Á·_…Øk!Äñ÷Á`0^¢ÀõކßgºBª/".,l)5§$Y?7’ƒâå6óKÚ+  ’Ü^rrr?GÇíâs^ž/ß+E¸ÆÖF²yʆ5Å…‡[<<~|“­‘Ñ i ƒ¿ñß.ý¿^Jƒq2¶‘úúµr,x´XO¾$$-X¾|H3³+xîC-¸TBÔ7(T(êãG•­K—qoÏž ÑÞÞ¶9óæÕÏŸ‰Ð&¤¤at Ãmúô>VeÊ<ÓØN~]‘/ßS©VKÔhRÆíîÑÊf]¶l€ŒÙy@Øè ¶ž1x—ôTT?Z‘4;ž=~ÿ¾²ƒADèq7Ë{Íš}Ûš4¹ˆ×ôeÄø`¡ÒÀ¤ÐÁ– ¨øu ÷£åò¹Í Ę‘Ì Ž)Æ»·kWŸÄØØúâÀ`°Ñå*b3À…`P%4p×Éé×ÕÅŠ…Ñ §‰ŒÉ",0ÐÜuèPwïÕ«÷)Êa—--'Ð;¨Dø, ﺉMEÚÀ`p_óðçÏçïíÞÝÇ\_?\z+cÑvyé«È×T»@±»§îîëQ‘pÂGñ²¯H 6º<à°äOŸÌ®ØÚîqlÓÆí¢¹y+2F©(ÝŸ ñ@ß¾06ì )?K×áÃO=>q¢¥J| 6¼Â¸ÔkƒO ¯rZz&¯æ00¨1#8xmÞâÅm1EÝð¨#,Ò “ûËóäùxmýú‘\-À`0Ú˜šZ“šôéiÓ6™ q… z™ 08ƒÑbÁ‚ã}÷ìÙ\ª~ýG*==ÒÅtDPý„È0 Rþg$ÆÅ-#ɾ°Çç*èç4a0ØðJãRMÚ™( â_ ƒÁ`0þ›™f¡:­IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.613574 PyQt6-6.6.1/examples/dialogs/classwizard/images/banner.png0000644000076500000240000000755314532151332022405 0ustar00philstaff‰PNG  IHDRôK±ã…¬BPLTEÕÕÿö÷ÿÚÛÿïïÿßàÿççÿêêÿêëÿëëÿßßÿ÷÷ÿúûÿóóÿ××ÿÿÿÿæçÿÛÛÿããÿÕÖÿòóÿîïÿåæÿ–öº…äIDATx^í]Ù’$7¤:¾fvÿÿW $R×NØ#Gl„RÕö›ƒ U÷EÇ~ßwv÷íN÷mß·;Á.޶c;ˆ‡2-”ùùÊ–ð0~”€Žž„õùß•mñSÞÁ¼rž)3Àû¯™ÉÖó"˜•rÆü˜ôQYíA½“žÖõ)ŽÉé7Ïôq»ð¤÷0‡ãXßÅñk3ómÑ.È”ÙÓBË—ÅúüK¢ü‘þeT”¯¯×`ÑžVyZé7æ;ÝðÜ>8ÚÙµ!½Çú.A.±ÎÏ®ãî‘~qN”eYÃ=0Ïç2œôIIŸéƻѾÊ30é€Dzzánéy»Ù¯œ7 ½ƒ„m!ŸØŒó=Öt瑞:˜ø¯àœ°îÓ;ÆÈÌ éU¤¯lHØV]Ó•x~@º2þ”g(ë·Ÿ&½c‡Û ;8YÕ…yk:öqlùð5=8ŸuvHŸFyÆÇ ¬W‘Μ‹ñà\çwLï)Ý”÷`Ÿ& S¾Ë Þ9Þi3ìkzìÞ%ÚcM7ÌÅîЩ]Möq:`ݦ÷—Э0fw›ß™ï&kzç&^(góuÝ×t”mŽ— ǘ„p~b÷Îxð3ŠéüÄî]#}x­€íÞ;δK˜§› ùš>ó¼YÇœ'ûµäøglAø±]èÂãPlx«W>¶˜óø¡£ïM×@q›œqåµ± : Ò3?à\€?‚€,>û_*ÎažÚÁþvÁ]låL6i:ƒßb“ãSftÒ§à;Ë[©Î󬯇½A¸Ä7X?ÚØðÖAPleîøg¸û&ñMøMN¹yñj†Nú$œÏYߺ¶0¦à]~!u(¬ó~úëäcóAøM”ƒte›0›kÄ)õ2$´õñ`ׂ쎟ÝÈuìؘ`Çâ;¹Ì¿b§£ ,•´,lˆ/Æ‚ÍÜTìÞ#6r‘›yØÞ]sïvF_“=)yîý¦Ç¶'ÛÇó#5MÃvêÉlC6.V8œÓéðÝ;aT[,3c¤3ÏìAzœÓ«ÚÀvîÞ“ºtæÞyÙZdä:4-c¹wìO­æBÃÏéž{OL½câsúXåÞ^eSsâSäÞÅð0šäÞ;ˆ çu˜Ùësz™{·óOμkm.HHr¦Î½?ÊD,X/ÏéL8"]‰ç£:Ð"÷Þ±»'ñÛ¿ÔÓ_ƒñë-;ÏsDúiX±×ë÷oK̬/§|¼ZÓQ]ýcvÏf^c‹~Á¼Ž_òÛjl³<;«­ 먱íyÛH<ƒHªlb̵þÂìÎÏ.oy)ùôW1Þ«l½ûÍö7ƒ42‘¬‰%´,ç>no;9;¨cXrFS°ü±uO+€Œ±È½'mŒÄÖþ§ èç5]LÑ„Y¹²â¢ø¾ï}^ê9~t.£Ê½¯ê¢Ø¢§ô5™´)µÊ½wø»ÒmÎȨ§¾ë{¯µl(¯"ÈÕÕ ˆ[Ø¢žZ6a?¡¾&hXeë}ïB<dã.}ï`þÚ÷¾äü§nØÇä-ÐL÷Xtî§”m¸ÔÓCÝò,ûÞ?šôžœq›˜2NE=¢žü±ïÝ¢¼0"#çÙpӋèô4-[Ù÷Þ†ôêZeÓsÉ÷õtð}ïEçñ‚yXa‘þâ[ÇöM=ýÆ?¢‡¢Y¤wÒ#×äë¹è@þÝ8ÏY1Ñ{wÁC1½ƒt‹tMÅ~¯OOµ>ÍR âôVkz_ÑIMÌ÷M](}=çâ¡#B^ÖÓ™yDztÎ\õékz¯§ p` Λ‘Þ»gx –îþxÙºî›w!›4³é˜‹¹ÙT«Þ#‡Ãúk¼èÓí†×YO÷žH¸6úôWfŠ»†zqNÏåúÆ1]”º”´lú{B9}:1ZãÌøº4Ö|‡jâEÆé}<7S\&˽‡–m®”Sö.¾…, K‹éä_P6e6}Y=@¡p!ŠSìîU6y!L\ì°Ãý:.¤3r¡e›Å ù©À¡ÖBxeߌêu5+¸ðoOCÖ@QfAqbÊ/‰Ãïÿ½ÊZ6¶w|ÙúCGÆÈߨ£—*FÔÐu !ÙµlĆËYÄà7/¶—6uÒhÙ0ìUZ6 S*eå›DxÞóÜ£‘N®óa¸–Ml'¯§‹éll‰nµWÙúþÞ{ä¼m¹Lç9=¹_“ŸÓ—‹ÂÅäzgç°¼;¿yXß»o掓ô» ›ÄZÞrêÐvë@Ùó^ŸÓ_ž{ÏõåÑ÷~Ù½ÃK†æââ9ˆ[@ºë[ŒõV¤÷¾w»]jÛ‘œ‹Ü»ñþvN¿ô½ÏËœkY“ …w¨V«¸s†óqHÃ*n¸h¨u•­çÞ7?§£ûÙsï¾Ã)Îé98¾wö PÎf}ï<ÊÂêêÉwÇy\:ïœ¹ÝØ·Ó²uì0r• iŒW —JÏ&[búSßûŒ„\\4äU6IÁV´ó}:¬®§C¼(œ«B]¢½Ëšš°Ž{S8ÊÙaMǨ.^Vý"ëzæï¤?f¶¨²]rïCèÓ‡¡Ê½;é‰M¨º?’Þ§w5å>Œˆr1ˆ+ƫݻGz.96`ˆ‚úÞëé°äŠÕg+c§œäµûšŽæ3;çôÅçbà<Öôé„WÙ”pqŽá}ºù"ÇûSXoÔÙIGÁï{gªµÍûòV'LAàˆÎ™z#çݰ¥¤ÉõéuëLJ¥>ý]©Üj#×§ö¸ïL˶mê÷|ˆ¡š´ù™Ä„hôI W5Û<•É6$g® uá=yt¬é»”€s£Ý êUVœkPáCe­ôKg56»KŽ2eTÙhØŽƒØ#÷´olÈ‹Ýí¿ÿÔ²m¤é+Ï»³Ûí´Ëï†è¹÷©¨¹T¹÷9— ÙUM®±¦#@¡d³“)½_"è6~ã‰*?tv ìB-ÐK«À|›<>Ã;H-Úô…t3RâÆHc}«<øÖAâ,ÖÑKJìƒûè¤#Ö1ÃϨ³™ÊFÍý"¶à×q,ªb[ìÆH±ƒ²ßLjÔl ¼¡c“73-[¨•w6Ð. ¿í^eëØ1°{gÃ.†GÞ7Ê;™’ Z6±BË[òl %÷P^'’ŸØŠÜ;vï°Û™}oªp餗 mÛ{•m ­òî—¾÷E]4Fбé/<×z‹!É—âÈ&¢é‘½ï7™Û^õ’{7DÿQÕ÷~Õ²Öù:/T æÐëa^Ý.eÊU´E¶ŽôÞ÷Î\»m—Ü;¢]·EÂù¥ï=¿«VGA|–=ÊHz:Tâ‚Á‡õvÉ™žœÐîyXÚßrï1¿S£j~Ÿßµlã$x㚈õPÿF ã}ˆz:HZÓÌgúLm×ôþå»G®T·¨•QNÆ7F^¨àü¢e-ÒyD ‡˜ d§aˆzº‘Ž¢*‡üúéqÞˆô¾wÆîÍ9·HÎéÆyf»Îᆭç‘òD _Ô×z:®’ûäPß>Ò{y’e ß½WZ¶|x´W÷½—ßecªÅó»÷Ч«ªÊfMrȾK¤3ë·ôÙ2Òû}ï蓳ÓªÝ;†!ûpÌÕwÙ®÷½¿4Òåè×µžžÖáªOÇNŽ)W|òøyÒûfº !žÞ;baÀå¾÷ê& ÁXÞ÷>bû U==¾ª ÂЧËìÖ/Z¶ò»lúö‡‚BßK>µlŽ /¢Ð²<¥Îú>üð ò°<»=ÍÐ .õwÙ Ž¿µ7\éZ¶®º‡–0¯Ñ/†e|—íN _£4oÿWî½Ëš.Z¶wÞCËFòÛÛöT}— Z¶ãÔ²íˆqÀÖºeÕ¸1’GhÙL¹Ú”ùNú\}—mbçÕ6«­UZ¶Å¿ºiÜçø.´l[hÙríä¿ü»lˆp’øš·¿%Ò{•­ ÙØaÞRI[,o”‘{ï²é}ï„buhÙâ»lQq– w¸ÙÎögläÒ“=¤¨´}@ÝôÑDÖÔ±cGªé\Âh·;å7\ÊìK-›—-îôOtyÍ¥¾~ÄS°ÎyœÓqÝû?­«lxϽûosï8¹ÒAIÿÓwÙFeU6‹ôñ"kzÅÿê“gä X…ké=õ}ïÛ¿æÞãkMj4©éÕ—âœ~ùZ[€Y*[ÙýñLÍ2r]Ë&^ lÊ9¾$¹÷ÈÉ¡´ZÞ ;cxëûÉ9;Ü"g£„~Æã%nMj¨¬jÉ¥§7‹ôíhðÔ„g¢êÜû!†Ô;?Œš÷Å?Ñe`ÂÝ\å¬éøŸsþLÖ1%yw•·¤–ªÕN¸4.ì‘yësMʸûB„c±`®×ôвٷÙL¾è¬¯p.péO«’î„×ÝRÿ^ N«”2IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.720404 PyQt6-6.6.1/examples/dialogs/classwizard/images/logo1.png0000644000076500000240000000312314532151332022146 0ustar00philstaff‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿÿÿfÿÿÿqÿÿÿsÿÿÿÿÿÿuÿÿÿwxÿÿÿÿÿÿyÿÿÿzÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿ||£GGÿÿÿÿÿÿ|ÿÿÿÿÿÿÿÿÿ}ÿÿÿêÕÕÿÿÿÿÿÿ™88}ÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿ~~ÿÿÿ·pp~ÿÿÿ~ÿÿÿÅŒŒÿÿÿÿÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿºuu~¨QQ~íÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿز²ÿÿÿÿÿÿ~~ÿÿÿÿÿÿÿÿÿ·qqÿÿÿ“''~ùôôLJÿÿÿÿÿÿ‘$$ÿÿÿÿÿÿìÙÙÿÿÿŒ~ÿÿÿÿÿÿ~­\\ÿÿÿ„ ÿÿÿÿÿÿ€ÿÿÿ€ÿÿÿÿÿÿ±ccÿÿÿ~ƒ~ÿÿÿ¶mm~‡Ö®®ÿÿÿÿÿÿÞ½½ùôô~""ßÁÁÿÿÿ¬ZZÄ‹‹ÿÿÿÿÿÿ""€˜22£HHÛ··ôêê÷ððøòòþþþ€¥LLŒ’&&“''‚™33š55;;ž>>¡DD‚Œ§OO¨RR«WW«XX¬YY°aa°bb²ff´jj¹ttºuu½{{¾~~ÀÇΞžÏŸŸÐ¢¢ÔªªÕ««×°°Ø±±Ù´´„ Þ¾¾áÄÄçÐÐéÔÔêÕÕíÛÛîÞÞïààñää… õì솊û÷÷ýûûýüüŠ‹Òg¥¸¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.617689 PyQt6-6.6.1/examples/dialogs/classwizard/images/logo2.png0000644000076500000240000000312314532151332022147 0ustar00philstaff‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿ™ÿÿÿŸª²ÿÿÿ¹ÿÿÿªÿÿÿ°¶ÿÿÿª®ÿÿÿÿÿÿªÿÿÿ­³ÿÿÿ­ÿÿÿ¯ÿÿÿÿÿÿÿÿÿÿÿÿ¬°ÄGGÿÿÿÿÿÿ­¯±ÿÿÿÿÿÿ®ÿÿÿ®ÿÿÿ®òÕÕÿÿÿÿÿÿ¿88­ÿÿÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿ¯°ÿÿÿÿÿÿÿÿÿ®¯ÿÿÿÿÿÿÿÿÿÿÿÿ®¯ÿÿÿ®Ñpp®®¯ÿÿÿ°ÿÿÿÚŒŒ®ÿÿÿ¯ÿÿÿ¯ÿÿÿÿÿÿÿÿÿ®ÿÿÿÓuu¯ÉQQ®ôÜÜÿÿÿ¯®ÿÿÿ®ÿÿÿÿÿÿÿÿÿÿÿÿæ²²ÿÿÿ®ÿÿÿ¯¯®¯ÿÿÿÿÿÿÿÿÿÒqq¯ÿÿÿº''®¯úôôÙ‡‡ÿÿÿÿÿÿº$$ÿÿÿ¸ÿÿÿóÙÙÿÿÿ·®®¯ÿÿÿÿÿÿ®¯Ì\\ÿÿÿ·² ¯®ÿÿÿÿÿÿ¯ÿÿÿ°ÿÿÿÿÿÿÍcc¯¯ÿÿÿ¯±®ÿÿÿÑmm¯´æ®®®¯ÿÿÿÿÿÿê½½ûôô®¯º""ëÁÁÿÿÿËZZÚ‹‹ÿÿÿ¯ÿÿÿº""¯¿22ÆHHè··øêêúððûòòÿþþ°ÇLL·°»&&»''±¿33À55Â;;Â>>ÄDD±·ÈOOÉRRÊWWËXXËYYÍaaÎbbÏffÐjjÓttÔuuÖ{{×~~×Üឞ៟⢢䪪嫫氰籱紴² ë¾¾ìÄÄðÐÐòÔÔòÕÕôÛÛõÞÞõàà÷ää² ùìì³¶ü÷÷þûûþüü¶¶Ü—< ¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.615156 PyQt6-6.6.1/examples/dialogs/classwizard/images/logo3.png0000644000076500000240000000312314532151332022150 0ustar00philstaff‰PNG  IHDR@@·ìëPLTEÿÿÿÿÿÿÿ¿ÿÿÿÌÿÿÿßâåÿÿÿçÿÿÿÔÿÿÿ×ÚÿÿÿÝäÿÿÿÿÿÿÚÿÿÿÜâÿÿÿÚÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÜÞäGGÿÿÿÿÿÿÜÝÝÿÿÿÿÿÿÝÿÿÿßÿÿÿÝúÕÕÿÿÿÿÿÿä88ÝÿÿÿÿÿÿÿÿÿÝÿÿÿÿÿÿßÝÿÿÿÿÿÿÿÿÿÝÞÿÿÿÿÿÿÿÿÿÿÿÿÞÞÿÿÿßëppÝàÞÿÿÿßÿÿÿðŒŒÞÿÿÿßÿÿÿßÿÿÿÿÿÿÿÿÿÞÿÿÿìuußèQQÞùÜÜÿÿÿÞßÿÿÿÞÿÿÿÿÿÿÿÿÿÿÿÿõ²²ÿÿÿßÿÿÿßßÞÞÿÿÿÿÿÿÿÿÿíqqÞÿÿÿã''ÞÞýôôð‡‡ÿÿÿÿÿÿã$$ÿÿÿãÿÿÿúÙÙÿÿÿâßÞÞÿÿÿÿÿÿßÞê\\ÿÿÿâà ßÞÿÿÿÿÿÿÞÿÿÿßÿÿÿÿÿÿëccßßÿÿÿßàÞÿÿÿìmmÞáô®®ßßÿÿÿÿÿÿö½½ýôôßÞã""öÁÁÿÿÿéZZð‹‹ÿÿÿßÿÿÿã""ßå22èHHö··üêêýððýòòÿþþßéLLâàä&&ä''àå33æ55æ;;ç>>èDDàâéOOéRRêWWêXXêYYëaaëbbìffìjjîttîuuî{{ï~~ïñóžžóŸŸó¢¢ôªªô««õ°°õ±±ö´´à ÷¾¾øÄÄùÐÐúÔÔúÕÕúÛÛûÞÞûààüääà ýììáâþ÷÷þûûÿüüââfîr`¶tRNS !$%''*+,-./2669;<=@ADEHKLMNOPTTUZ\]]`acegghkllmpqsx|~€ƒ„Š‹ŒŒ‘“•••–˜™œž¤¦§§¨¨©ª¬­­°³³´·»¼½½ÀÁÄÆÊËÌÍÍÐÒÔרÙÛÜÜÝÞàáäåæçèééêïððñóóõöö÷÷÷øúúûûûûüüýýþþþ ±ÿŠaIDATx^Ý×UpQÇáÓR(ÚBñâ^Ü[(ÜÝÝÝ EŠ´¸{p)^$P èÙ¤*¸»»»ë#“=wîËæf˜“¦¿×ÿæ›}Èœ™…RúR9]úù€(Ä•A&60©Ùx€ÇNíªÊr£ì`%–°e3p€ú6 ØF§^¾ èh–P}Êîh®¶^ž}°ŽfE 8aæyù?n.%G/9°*4 4¢}2ð³ h*è„"¼\—Œ•€u< è-sf`’ÀÝé À×)à6 )k|7Ž€¤ýŽç,Ë.Úç+Í> h3 ‡7ɻ߾G±Ÿ´q…@ÕBbZ¨þ±9*7 (êÂP´¢•pª…²mÅXÂ<”íÈÇÊ¢,¹'è²›! Àol¯‡0€`áŸ'Ǫ0€ù¿÷.q]`´‰€«»–pFY‘Š«áâUÖr9œý»ˆš2j(Š&4c^¤NýlÌQôtQjЩèÄ:À–";×Aê¼, 5Ro¦˜Hc²V¤ÝNûmðÚ®. êÊð*RyjNNê@ÀÙ0¶@Ÿní-¬|ëo%àöL㚟Þíó P”9eû÷&úr'" Œ²ïq ûûòíkwP”Æ‚²gáÆsà¡ßª[²ÿÃ÷Â5­¶q¯¨¿ZBGP¶E7F‚±¶öéa¸·0%éÀïçÚPGOµDÄ“?Ú€“Ú9sÿeü†š׌ËñÒûÅžà¬rÃfOê\ÍG±fšókMqp©© %÷ º99ê±auIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618216 PyQt6-6.6.1/examples/dialogs/classwizard/images/watermark1.png0000644000076500000240000003426414532151332023215 0ustar00philstaff‰PNG  IHDR¨wŠðÈÁPLTE£m“¤u¡®–л²ìˤ×Íí»»þËËþÐÎþÒÒÿÈÆþÃÃþÜÛþÀ¾þ¸¶þØ×ÿ³³þââþëëþóóþüûþ°®þðïý­€£ù÷ûª›à­¬þ¤b{¼{{½¹õ¿€€‘1=§PP©SSÊÄò•,,–@SÌ››ÏË÷®¦ñœSmܹ¹àßÿœZ{µ°ôîàá·ppžABõì컃 !¾±äÕ¬¬Î ¡¾¨Ó²lr×°°ÝÂÈíãë©v™‹",¶©äj˜‰¹ss¹vx¹ŸÌŸh£»¼¢Ë¼ªÛœ::¦q”Á»ó¦ˆÂÄ‘˜ÅºêƺåÆÀô•Ji¨…¹–01˪½µllª„³Í£ªµ Õ‹Т¢¬Z[Ѭµ¬^b¬„­­dm—V}˜33¶™ÄßÛ÷™FYš=DäÍÑæÐÒèæûêר¯``ìÚÛ³’»¯Šµ›J\ñããóíó±cc±£â÷ððøóóŒ&2³‰«º¯è,;¶„š¬Š»º´ô‰"¡P\ËÁìÙ³³…•C\Áƒƒ£Ta´ⰞۙCR±†©Ç¨À±‹³£‡Æ²œÓ¥LL¥h„´s|´¡Û´®óšLb”Eb¦ŽÎÕ¸ÅÖÁÕ¶xƒ¦ÑØÓõ¶²›WxÙÆÚ§`p§Ñ›d‘ÝÏâ0DŽ8RáÄĹ‹£äËË©‹Ã‹'9æáô`….;êäò»š¾5IŸEM–Id¡DD­Ç¡MV®r†’4C£j‘,4À†Šƒ ŸRf¼“¬Ä‹‹Ãœ°‰ÏÂåéÔÔ±¦éµ«ëÉ””¡n˜®™ÔžXsռ̿¡Ã®©õ›Us¯x’Á«ÔÁ·ì‡#¶›Ë¤rªlƒ·{‡ªrĩɒ=Sª˜Ü±’ÁÇ‘’¤z«º•µèÚ㺜Ãʱ̺«â”;Lš\‚®•Í•9F¢YmÏ»×´…¡cŒ¼¥Ñ™Om¦x£‘$$Ÿo¡†Ž)5 ‡*p5®IDATx^„]S·,Ͳí·rµ¶mmÛ¶cÛ¶mëÚ¶mýŠ›èYQQ=NveVí—=ægDd®^žrŒ,OÃfüè(u-iÊ«,Juœ5=ež2±£ž¸ ‡òÄ¥~:VÆge|âW\WòXf/ òÐf9C°­QÒ¨a¥Y —AÖ4²2þpÍPû]'# 3àì÷4 ‹R±ö"È0iF38éÉ,E‰Œôz‚¢µ<4“4¬4JKÖ’  Aé±4%¢:¬= =™˜Yxâ¢X-`°Þ0Ÿ©I›Ì¨9£(‘S™fà;Q³Ï(•¸opFÖÇ_i„Eˆ -Í D… ‚(C§…É)¼ '¢2Z‚‰!%(Ú¥MY&Š”BB™øÅ˜ S¥”è• \çIH8a¿Ñ%Ö# 5œÔŒ9O"ªM1¼ï¬å‘A bOÖe„'áDÜ\(Rô «À,%»%%iRŸvΫ¿Ð[G  ÷wÎINf4Ì<&€ ¢zÍ7eÆç”!ÒšAD¨be 0K`þ­ÿÐÃø\É@o'zÓ•KŸ¸ýŠ÷lÞ~û9ïJ K‚qnPbí¨ÒHMÓ¦&ÂzFé£ù•ñx<僔NK诧(t?{xóÇ©²~«XRrñEAïò9€nZ}㉗‘òVÙÒ_Y” •ó™ëÞF^o9Í€”…”J#]î~spJ?ÛûдÐò$  FÉ;jQÌrÞȨ7øqæÙAŠ0nž.ŽyºõÛ‘~Sx¦";›"¹Šq’‹ŠÐ16éÝtÉÓqU¢ F䬒Ÿ(£2|&=]»¦mÛ¶!ñUR᧦±õÁï}nÚØÓsÀ·:ZR õŒ¹ßûô¸W™ÖBÉá×`=Š À }°é äðï&=ŸÌ|ÓÖ~eÂEEúÏQÆaŸ÷詽UYÜÔz¹Â<TÇTîd Ö VÕv}hò@ÊÓ…yb™(wµÚÒoDô«³ØàÞâÈ-Np]€Zœè)‰¥ç°ÖK‚„—†P€+2Îh"”'•ª­‰JJ~Öf»,½OI¼¥}넾·¯gÏäÛÛ g-­¤:¾‡Ê”ä]î“$Åcîµ­®Û‘»Å3|«÷‚Oßü‚Ö«yò2 ´ºW¦o/¨pù6µýÍ™—Q5Ut©Ñ£¦IVk™°Ÿwý¾Þûú.´qiùPëèIT]–đԵÆÒbÉl˜¯Lªø ¨ JЏúnLu¡‚@íè 5&@ínx[ÑÝ?J Uó¡õL ®ÞÐÎÙ„ø‰²³wb–sa„Ô>q¾É$›‡65î¸Î«·ö™qZ Å®^•IãQÈ©íÃÇa&CMyäåsOòDh™`ÍT§(„vh[mÎjCkZlœ„8Ö £Fx{ЦºFéTTöEê;ýV„W[ó Ã"õ3v¡ÞÛûÞ<6LÍcl™á:>½§J¤IŒ˜‚š2-l> >-~_ï<Ãõ[P!¨…és:%¤Óø{å°Nï½y2}O0¢“¼w§šdZùó‘×a.`&Þ'éêÊ7ÆŽRï ÀÅàY1ãºLKWD÷no‡í@ZÛÅŸ×ááä˜Ä°¿@ ×† á¤ÅŸmèÃÓëj v% he¥T9À™ai‰ÀÙ1^Ù^“}BX ¢Êâr%@«|ok}kJœÀp‘“"-`œ|ê±L@Rƒ‘bÑD úZ º¶LÊ­o*yf*® >T¥Ù’v€9µ³—;=Ì=¿R݈º\I“ ÆÕQ…WrJOàЧÑÒ¦¹@+»[–í' ~n­(%SÔ™^˜ã<»ãæYÁ¡¥ø^4}~”/§€i­è¼-‹0¯4Ñ“*`z]râI³W ,ÌT2=i12Š©|ˆ°9œðó¶Xï¯Îs¡y!…·‡½÷3¦ Ÿjš «—Sï±[]áá µ œ §G‰X­)µ¹ÑÔîCb9gc‡ÐIûZƒ7S(Ú§áf7¢ˆCÃ7yÀ‰]¨¸zSlèó:oc’î>üÊð=ŒSŸ#s{yÕ°øšÒI°ö…ù¶^o0šÊ§¨iv„*é# R¹ÍŸ0 Q©Ìæ1_¯O:ª3÷4°(ñ›TÕüJŸ~_ïl¨`µõzS ‚œÐz+¢x)57†úøª\ƒ{s0Ô*½øxãœJ;q«†­×ë²Òâ owÒ£ƒ÷éÆ/ÓÁ°ŸQò,à™ŒˆªiÒ©X5툂Âg¨’wùbž*0Œ´[7s9|ÜRA)ÓF¤Æ=AåçÕë½Ö»#|=ô Uªåîc£f6þ“&ì¨,ôÀØ»z½~C÷­ÃÞ…Âѯ¢Žáå ö¢NJM ;*O“õ}_¯ÇT°Þ6hù4 œh;K®Z)L”ë•°–š°£ŠÖ _¯‡Jïú¶Z/E»ÎÇ^ƒƒwcAQÀâ[´3;ªzTúóõˆŸÒ|ÑÖˆ§.u+õî<–+D(”MZ€lª6k»^ ÕÚR_ëéï’qª,ëQ_.œŒò[Ÿºû|=Ì“R õžÉàl{z:=1Fó‹´ŽBF}̬?}é0³¢õ^IšÌ8öLm¤5wl£Ÿ6uxøD›”Ž+6µÂæÄÙÐîN2[²…iÒhôR‚œ…ú( §«ã‹¿‘&ÑÔë§ëì¨ß3ùøù(ŸóKÍ)Vßž“²³GKtÞ×CP¯W½ëç·ôÊ„k?ò­iF]­ãŒqBL9*:zžlFkó ªàE˜M)íÌ8+óS—™Ÿý_l¶ŸÂÔ°^êõ^R¥£@EÀ*þ¦¶d:ÖŸJŒ±‡ÚÒÉ‹§P¥Ôh½óõLJ~›ÎvÈi¿¡î\J´jë¥í2Púû‰ŽÊY uöPx({j#g•PQ··w¾Þ'r}ÿhÕÐúÔ¾ª=âƒ4…Æ#_B Mà ˆÞÝU“l®„–•NL± ­,ëaGS9Ïÿª ´¾H)zr" ­GÕ.5æ³ïâ{ õÅçBS(Ó/ܼ—2 DëÉ4¥…´‘ZÞ›½(@"$!¤PïëQiƒ…Œ\†Œf–mwÏŒç¯奦±íƒ¼Ò4F”åõz—&F8ÞÓì¨. Þ7PS6ë’ UÂ@ìlü¼£(*Lˆ ½ByÅïY€ˆ˜‘ÇËþ„µ‰ÖKiYõhk£QÝ÷=Y_j‚{sƒ^ns×ASdó2q÷GªT˜ÏÚÔÜר2LŸËã`Ćy¾lÛ}e¢+ˆeÔ§¡‰ü 1)Á”ZSç&4aŠ’ë”ɇ# ŠT&óO‹ôÚ}d© ÖÖ¬81)(4çñ»°J¯1 §tôä½L 8 ©“N«O¾ºì»J"U ê)RQwZ E}!/5=.ÊÇÝž?7…•'E->%!]ÿ¦C$ž¦t‹tn"E1¿Á#lf%Æ¡‹G=E­Á–2R=Mù!©Ü5Úˆ\íÎ"j·LH–(¯.EƒVw‡Oi~y£½m”ÉÒ³œS°ï¢(”ÊD$¦‚|i´ ö0öªQz°rõÅ0ož’8ù£-¡ ÞÉ'ð]<:¯^ÏL÷ÿÏ<ìÛ3.´ØÞÕS" ÷ê¤gë½qòñ(nÐòÙ¼øÝ°ÿzâ¾É8+ |£L-]Büä¢|˜§.Í÷ñ((Ú9»¶'qõóeF]ivuÎ-ˆÍGs›$KyµZA…òªd<=oïÀý!ÒcP{Ÿ'ñä\!¾ßÐã.SgŠ¢^ï{‰ÐU"7%“ÉãÏŸV­³"ìÞ¯øúÌ’bZÒ?¬¯§ÉB ‚òË‘#£°Ï_÷äÂQÉ”TÖ<¾›~\Šò©«‚«Å¡®Q¯÷¾Þ°~<ê{Jàïm !jõ¶^o»  N¥?f­ æû#®Kõ ·ý$é ÓuâóR¸¾<ȧFO¢õóÎ×_ïûðÒ| ¨¼p¿h_— ¥Õ”Á!¸ßÑNúxîƒ÷®Ç8¡õ,Ÿ¦^_òâ6˜ ©sõJÕF‚\Ac+“˱¼MPlîäJ"3÷zaÑ*×oï`³‘# i±fÉ×™|ušÄ Cä)²^*w®WÃÕë%ÒÃÐ>l6Nñí8ÿÁÓ¯° õz %$}Ä/)‹¨Ö™ŒÖ«¹z}ÀmøŽ2¸7PBÎOÓe'e×5óá±±,kµ!«u&_£ÅÕë­tšÔ8(«´¤7]·øƒÜÐÔÖëÝYzœ©ÈTéqbÄö•ðTsëõÀ‹Ô¸Â´)²+"ÐoÞ¥ú´Â›'˜Re=ˆš”qâFôζ̺•"‡„"&QŠhoðù:½ ƾÞ:&FŠŒäï55®Q³öáf‚·øûÚy&ªwÌóãb½½cÇ÷ïr}Oƒùýޏ~ÊÄ$E¾­‚òʹq§ï¨† Ò‹w}¾y-ºÖÁ“*í«1…Öšê”21õ•µÂæÔîB”€šjKk¹¬7•³Y>wñbÅc£¾oÃv' ª¼ëpƒÜš’‚¢ž;+"QoÖð ˆ~\®Ý¬§ÎÇ–ñº ¹øöç¯HlO‰ДOÓ„:±Œ Àjï ê ˆ®¿Øß¸‡/¸Š,.†"HTnV€Þã žiÒÄD?å«ôxÞ·aó?öt<–´3%•Ë7f4Z‘sŠ:˜jìÂY‹•GÁÅäž ©¹vxå¹ öu¹ëw"ÊŠ«± Z”¢¦ßy{`%mR¨ h×~àÀާ'”Ê^4¬_¹ ŽÚ5&ç™°¡ ´hæÆ­€¦º©¯åÖaÎþ¢’>=ñ&Â/Ñ톗 p^­ýê (Ó‰ëGݾ ÆÌŒ'§”…m†s¸”¼ø"EzHŽ N‰îÞKBšZÿ­³ï}|±º…taÍ/fàÌe&8ÅJI¤,pª \—l3Sô«‚üþØý¾PT >ݼ5jÕçãT}Oçɨí~ÐŽp>CÜ,µ&7^Îëõ`DùReŠñ ëpÑ<3ÉQ©•Q‹5U ¥·””Ô80Öº yT€¾/g˜Š“@’REßùïjI¡ùü[XxOúÌÔPÔ…ø€+©ñ‚cgh?öõÎÚËfùtõh”ô1ÕÛBjû›N‡%Åvyè(AB)JSŒå7F*ãK_–ëc&3ez‰°iˆG¼7BªP™¢„Îï)”BëÕÆQ2àŽ£l8$²¦€¬OÒúÆ3? ßoXÚÝ׫ X›>E·ZebŠ’>12[‘ªj³Ýj¡§`ˆ’y@%Ôí–%‰Ÿt}òŽ,ù«Æ…Š¿£Ñ(Ÿ ü ©oÖXXùi¶¤oùDˆ_6)pöª„ºÈÌ>!=jN‰µFÓÕ'}ªôï´÷ïÄ=ÙlI3®$¤_WQ¯á›®q47gzżðž!MÀÕêr­^42ö‚c=;^^ IûCÒMéŒl`ßvN׌{¨‚;k/f”pfÚ££wéèÞ¾Òa¯Ä@wÞ†µ[ßv})„õð§È’ÂÙÓ¥®üRë²òS÷Œ¨«4µ” – Y5á½èüÞ¼@ý^D;ÉpÁ_Q^ûÛÁP¾ /*Ðõ¢(ýûŽiŠØéŠTˆ÷q‡F¹·ä$Ç㤿“ T–ù Õnì E‰þ–^ÅÐÆh æ7í#!åÝyÑ)Â<ÞÖ=•öi¼wWK»OVlC:¶ËÎ:)5é‡äx!P-Ò‹ô ße.àG?¥{73J‘¬£¾™Í/DÀIúK†–‘òkŸž$¬ùaø#Á¸ †gjô©µe˜‡Î{øÞYñW(5~1ãu}KU΄ô^ì˜wñ—Kqóyæ+£LªÑÃ¥Æ]¾­.+ïvë#ëä~áíkzk &ÝzþE‰Jj*˜ëD-醑n˜xŸ||M“9bôÉ7…¥AÍm¸UÃgð5³:´y9÷“|rr0ÂYÔt»XRÒÞÞR=æöò šû%’ß³^ùôâ(Mš•ð¢(€vþ¥E‡VW¨CÏn?õèùV®ná ÉvÒ")ñ70îMi¯,w/>»;yéõ»XíLk2¡ï½î}È~%±g:*$?K ]ÙvAJbæF;ÂG±ÞÜPU/ã-U¯T\D”"¤v–e‘,5ÒqWïXN“²¨“¡ú'¡(…z@ê®ËÄ02êÏßÌÌÓVzwŒàAKígA¸þÙkOùýÆCw-mÙñÔâ(«MR‡†´éèÝ-ZÛ¨U£³Ô”:ƒ¿Ä@ÉEßL¥a…ôzM³°…`f9]4­‘Ë£…qÞ×–->kGý1[˜(>"-E ò¥Èæ“b©Û?¹.°{q'çëÚ$ó„ª{úŽó°M hçÓŒ’Ó^zßtJñ哼Œãò”t~RåÒ‡¶·¡¹Ñ•&]k4õõzOT¨ó~èOùOÞÉ4<1.e|˜<À‡'“Lþ,¼€éî}AFÏ ]á2Î."±d}V¬â®¥º~b\aÏ4øèÉÅÉ(Ó´¸iræ£gPÁŸÓ‘[åžSÛ­a9OBjÇm“ά›¾ð]بî&ÂÄÝà ßäïÒñæ ]¨}ÞÆyÍt”º DxPså0_Ï1¡)׈¨§'úGm½^§×¥4ßnã‹û¦#†˜¢ÿA)ªÍD­“°§ƒëeµHý‘`§D&ræHóæc½{îÙ°vÿrU”…»áP²ŒréÖÚQÓD˜­?J N6jº–ô’Q: ?üGvßäÈx6e´öw• ãM†~bú³"ðô–÷ÀˆQK“Å]ã¶¶¬ R¸ƒo²v4Î>PjâTµ®Ú”BL-Ú"ZÒ& EšZ¨ciO«ÂDèdØïIéo"´ç,k*ãò0õ¹ ,ÝÞ\¸S°Ðz{†Q-=zê¢'ÐÓÇO^HB瑦!ÐX€¡vT~þÌšrý1Fp O^ëS,Â~A 駬z³°žPÚˉ”õeç¡m~éòõ𞢶qXW¥£¼Ñ«ƒ$òÕŒÔZ†ó÷M;Úwgo ^PÓÜÞîòÍüé9¼bÜË Níu¢ d×M„C½%u×Ñ¡#—§3úÎÙ¯1)ÂIKëÐ3¬èïð ²²u‚*ùK_†­0¯rY\Õ|“xjÐsßáå ÔöèøkR•ýC{ä’GQ5Ã×WNå› ó·¬ÿƒ0RÂ(Ds^FqTÝ]Jånî§á]¨âô×zÎ/5Ø›g)ÓüìÖŸµcy:¤³Dîÿ7v6­¶E¾Ñ«k¬½ÖY×»¹ÞP^AI@t 8ˆ '‰ Dñk’ )‚q`Ž8ð'8S48 þ€ŒüA2Püæt×^OW¿Ukß>{Ÿs†EwWu}½o ¤mp Ô1è-…Y‰ ÐBŸݰJûàA’Ù Y…N˜a,àôåä[ÚM²¦½ÝgslG‘’­+Q\°Ë£]Q+ՃљBî4‘«E[(þ ¡;²*™ŽHk¢)õ,Ä?öör*U…âëc’eÉísø^Ì*šš¦^ãWLÓ,*ÚNº¹£DõHʹuº!b ö‰{Êfú™ LBè·n °²œ Â–9V†i’7£Y_>Š[Ѳþ„,fG±OòÖwï' ã‘>y¹¡JæLBùFÜŽŠÍrrøÄvÍG«È<9þîa–üƒ(¼Œ=’ˆêÒ}/¢ Ú² Æ~ !! Õ ; [A¯M}ŽÌÚ…¡#Ëü<0wüvþhÔ™òªÖsIÝ5E\·VI$ÕŽæÂÊ“¯)‰õó²… 'T_©œM™ØÑž—Š£Wb*ÀàŒ9tê¾I”ª>‰¯„ê̆ 0]*’g‹!•g)™‘oéu|ýŽÉ 2Oä²êü€¸BŒÍ>"ªR’ >,Ç×a/›yÞa°¡)ß“º¤K‹"`BJ¡D¿Ž¯·ì½”l«”4ä1 ðîŠ"/–4áå®.€¬C|=hKÉéM2Ã<õàê•èËeœÅ:!*ÌSŒ¯'eKWd5XéÅO£‘5\â›òzÆÄT0cgŸz¬È¢—±£‘*¡H¢÷ÿh‚¯§0ì€0]2Èå1G­#5 mò p0"Â?º…¯ç—³£~¾€èØEì¨Èˆ}Š<ŸØévt _/lÓÆÆýTmRCªS¤pòRþQÝÑØ<‘v:èk¿Z'¯îп,(?1Ó6ÿ¨2hÝdøz5MQ]>eøú°Ïõh¢L‰&ÖË_³bÛkÚ1Ç×kRZ…õ+Eçõajäe m?‹Dnˆ¯n‹ˆö?l™naAuä ¥{öšyÉ=máë„PG[&yq ðš%Iô 1‘¶¹¯OÞú1e(ª‚!jŽôö*¾> ç´.”I=|Áû”ü£×ñõˆ9ÖɆ‘ågreD¾ZoPþQ„Nñõ´\€gÒšˆþq¢âBÑ`cy›®ñæP6*àF¨¤èþQè ä}’øcïrÎ×øG)1&øz&3ù¨ÞæÜ1MJ§×c¢Âå§´Ø9ÿ(ÁŸ„EÔQ ë^HØÅ‹rBúQÖ)ÿhîæ±à$Û£õXSb&-…êpËQÃzäÌ8r#þÑ€¢ÚQÛS„„{Ò¸JÜV-ˆæGBÙR¾§‚qê¶s¿‡ûãÐçur˜Pý†(S‰gÏ û–Hi_؃AÌæØ£4Ù€´ õâò •Tñõjòíèû³÷š´pGX/æÉô(¨ß yc&Q¨‰™âë÷ºŒºÓÑ®l Àt=Ñ»ÒI¼L71¾§DöjOe+Àw¢=Ëgœ9ø„á-¹£øybóÙR?n;‡¯2~SíèÜÌ£k< EXO¯—çÉÄÌ ÁåëX¾&GÞ¿¸®qÍ8sìÛ,øzò’%s#¤EF¶Òu¶·ùû¹O<ñAŸ2§d§øúN›P¦ðŠ2±…Á|íuSâa-öÁÇx%žSÔóÄŽ:æ¼`˜±šQt©.,hÇDHš°·çøztû$¤ßĘi|r¼ØBÊe‘(ôFvrô‹˜¢öØQ˜TXEã}PêQû/ʰÀ×ûXÓÄsøu+áy4½r|NFyE©1 ƒÖMŒ¯Ç:‰§ÇчsîÊšd~¾ÌµUàU·D£(Ö³­Dvëïw󙸠î u¾ïs%™›óágøúh+)ìí-ožÎ5uC«Ìñl’Ã߯×{ Ú'd…7ÏÏ<ãðÍi®`;¥ÃÇÞ³6ðõöåìÝJ•e—d¶ß ?³(“}Èâg|øŠ¯Wtd_Qû‰ië_Ê .)ñ²š' BóùõÛøú‘¾§Â«í£u¶Õ]RW³KN^úÉn%®ñõÚªñl¿ž°ŽÈIV?l:8O(Úï‚’¸3%‡jm9Ÿ_Ï釙2$ w®íiò1èR#'ÐàšÐc?}[‰Ì¯7£ðxdGµ”‡‹°¾UCy©Œd|øúØÛWc¼ã1öHQ;WFüƒ/êô´õzaõ{jí:‘ŒHj/¾?z†²±§ó•Á‰œòz½w¢óH{ô½:Zg²+ÊÑ X„Ø€”XÑ'fƒÓ%˜¥™È>̹ ÛÉÆf-4ó”òÇéêÑkML"P ÜcæÆŽ½Èª;Êã~™Ré‡dØõz¼<ÇÛ sîH$¼'«0ÓJlEñ¡”þCѶ€X=Nˆ¤S>—íR ™xšÀX÷uP–;*剗pKäìíWkEÕÞù‰pi…dŽÐ¾õ|…­7{ŠÒgu&¨o=ætÂ>aFË×üfrÇžêüz¤$X w£&uÌÝÀ®âèM½”3é1l©à Á×û…¹/) Öˆ2¥î|¼<ñB1Û2æ€x6h*Úâà JÍásô½7Á:Œ±¡l¶¹qº(¾>Œë1÷‡Ðq޵~j®¨ Š:¡õëˆ`ÍËJ!§AóG7A”ÞÄ,¢2\¢ˆêAwäG£m5ÊÑ7ˆ›]$õåúú±“Ÿ,Ñ¢íBáNÓ£2à2çÈEñ™Ë&ºäS+.»9Q°59©×²WeR1ñžÂ¢Ëgãz=ƒlCÍqž’'”T#&VƇoê¡~€²*á´²©|Bå½S¢K%S¢æ‰ŠmŒ`ñ@ß}òä÷«œ°hE=:Å^Å7ÀÀ©Bœ¨rþH(ãÎîß+ë/Å-wôß|éÍ—‹&Í’—¨¾Ã×K6q#˜?øÞÕÆßß«ë#£yyET›ñ|aüw¡ML0ÖØÒ~Å|øväöMëõšÑûÅ…ÝñQQ%¿£ÏT’á“ÙNS¨nWÓ‚Ø!cœq-¾^¿ŠÊ%ýÚ÷ßút°3ÈÌ«Ý3f÷6fâ¢ív’L“¶TîÈ83<Ðùø‡Âãlšd/ÿªÜ…g×û oh$èõùõúÜû>'ÁÿÛ…l|è¼R£B?]X2‡^FŸ+a]Ÿ_ßÇõZCLk)+§ëëÇ¢K¾Wãþ—ÿüp7Ó¡þ}žÝž_¯:/õzÝQ#KžlO{£?ÏiÑ ÄÖ[lýîËlK‡g²#g(ãÈÆ®¨°ß‚­"¤ØÒÅfI-öšF1ŸVPjŒûò)îäÝû>2¤µä½ª¬ìw—ôçn†„DŒëжâz–‹B)1ÂFF \;™n©G?}¨°ëíd¬)rV’\bÅß\-Úò4a£’D.Ë*ÞÓ{eDË©¤Ê±¤óú·ÊÉ Î„¤FG!¨a »žôýd–·iú_™bñä} FêZ,™~÷³2\Âì=;J +[êaŒÌBÐÈ>ìrÆÑ{Æ^Ò?ípËš?üâÔº_Ú:JöÓaÃB` P¶Èà‡x&×]ÒcX‡ê6âSÆ û¨3¤¬ÌýûšÅÍÑ Q‰1éq¶íT<G¯ƒEwÓ•£ÿ»?¾Ìïøëy´Kê]cÓ;aë ë8ziÔ"r$Û §üçÎ7“wò_.œþçËÒp$b,@ë‘T]³|\=ßNPÂÑÂQûÚÃ]Q%Ü’ÊãÿꃋrIÊD EX2šIk¡ôáûl3â‹ôvôÐE¡su·™-¶È_4¸ó;jÔ/½€¯ŽaŸÆ°ÞÓ÷êso.>ë¿wcuÏö4•/B:œHŒ¹ãè÷žèpyšÈ‹–ßšqFÔ:±>÷À¦šÐùJ¥ÐÜÐ9vKx›ðž¢T‰ÛN ð©×ÛÿÊè;½y§LgüQcx{ñ޼¹¢³ÄKè|^b„žÈT‰g(J¼Æ{§„rÓ?«OÚ·=½oóOêÁ› ,_mÐàNZ_ª«'XpŒþQó£S[iš¾^/iuyëŸû€ô<¶Gï;ïàç]:'%¦RLS’ǵî, œ::×縢(SgJV8á ¨mo²‚ö ë„ð©ø¤ÿ9ûÜx D_{°ŽádC1ˆEn]cbbIÃwÉ#ËáS_ìð­$ú÷b1wyÚí/ß9ïm 's%pîíwÆ?š¯v m%åÌ~v“٧᥋ dàtSàB¶â”Óï” ñr|=æžÉͷάŠOòÖãcÇçYe4­ÇÅ׳©1¾^‚&…Šà“˜¨6M&dU‘,.;ªŸJcz­×«¬ÐÕèSoê.TJ6ýÑ|~½ÂW;ˆuDùÓ¼>¨›Ù‰©Yg½£X(Å×+£J»c+Q%~ѪááÕ‚gʰ"‡xÙ/k+¶‰ª-ÎÐ=‰)u—3Æ3Qcî²y's vÑüzÔž 0¸([ð2 4gæž·~Û)!IJaZ¯÷ )•çKGÊiÚ† .ÇSÙ†j½^zÛ1P­”ÐÌ·÷3®×›ZñõZÁ3éV†P[¸È“Ë Í@Êì©™óæ:¾žÎf_-iö~ú6|ëÃðLô@,’ÍSÌ: ‰BÍÂÿzôUn|¼"Öëóü¨’Pž¼¬ö‰¼W¯×Wi“w&aùrìi*¯Ð"ñžÐ&“P2ß>öW§eäí¨RÞ›—•WúÝÔeOÙN?RÆ«’ÐÄ­dn°)‡Î ”€$Ëäí¸P;÷öü™qˆ¸²ÆåÆè)HñžBZ–Ï•=EXHÑ{; T@o(d¾¹¼N8%£Äì/BvþÓ':$”­~œ1"êÑcî²/ÇŒNżèÃ,±íYŒˆ©–tçaB ÙJ™Àª<ã£[zžbìS8©åÿGЍ–¨ZØIEND®B`‚././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.61654 PyQt6-6.6.1/examples/dialogs/classwizard/images/watermark2.png0000644000076500000240000003510014532151332023204 0ustar00philstaff‰PNG  IHDR¨wŠðÈÙPLTE­¬ÿÄÄâZcæÁÕ霧¸¶þÈÆþËËþ»»ÿÀ¾þÃÃþÒÒÿØ×ÿÜÛþ³³þââþ°®þÐÎþëëþóóþüûþÝÚ",Ü ·ÑàÞþêZZÝ ÝüììÞðïýá¿¡Þ»²ôã##å22æ::æABÌÃôéSSܽ»ìllírrî{{ò››ò¢¢Ò¢ô¬¬ö¹¹úÛÛúõúûââݽ«ëýòóä,,ëccð‹‹õÍÑÖ+<Ø-;ØFXÊV{Ù%1Ù4CÙBRÙmƒÚ%ÊužÚ1=ÚRdÛ"Û…²©õÜÓõÌiÌ„­Ì‹´»£ãÍJiÝP^·°÷ß07ÍZ{Í¡ÍâÎq”ÎÀï䪽Ï9TÏ@[ϺçÐ_~èEEèLLЭØéot¾ŠÃÑVqêæûÒzšÄ«ãÒ‰«ìvxÒË÷Ń´î‘ïð„„øËËÓD\ñ““ÓSmÔ5IÔKbÔi„ôâéõ³³à ÔÂëöØÜ÷ÃÃÕb{ùÔÔȽóÕ¥ÈÖ'7¾šÕ×I]ÔZsʆ²Ët›øÅÅÖ9L΀¦Ëa…ÍšÄߨÀÓš¾Ëz¢äy„ÔNgÕ@Tæs|ĺôæÆÚçjpç¸ÉÅf’è^`脌Ås¡Í’»¶›àͰÞë­·ëâôÅŠ»×µØÍ¬ÚÅ Õí£ªÍºêÎUvÆ\†È’ÁÙYmð¬±È³èÙ‡¡ñž¡À¶ô¹‡Æò¿ÅÚ)5›ÓÊ\ôéñÐmÛKZЦÐÊdŒÜ:F¢ÚÞ˜¯Ñ±ÑÅñ¹¦éÒ»åÒÂÌ¥ÒÞ±ÌÓt’ᇧfÑT¢Ê>>YŒbò€ºâ—O/ÿ½ÅÅ50Üc–*fâÏ4먊Ÿz@æLÄê g…—|!4&ÂêØyëe{F‹Ž+ýq²#ãQ¡Bµ0]´ç¡ä˜”<¾ÀDïT0+Yfî>ý¢ÐÍMà§%â'ÜSàò™£ŒP â-K(­öÄPgûÞš²rùS‹>­¨¨YŒ>b)XCí!O \ó{p¬€CÑB,Ig#Ö—2GaQR:jŸ§§ÎÑþa*ÂO¯õš¡òõm‰)G[¢t„ÙY)É+Ž>}–Hÿp‡ovˎö0_W aœP 9|´§&Å÷‚âŠ0EIÅæIòµÇOs¹ ŸÃ¦ª|ûâè5ýÏææ…A«2êzæšMÃ>%°ˆ6NïØæe 5G%(€Q² ¯\Y=Fø;ßø¥»>75ôÔh´ª,=ßÝÃ[¹G³ ÿ^1£‘ýs#…yO~Ìr ›ÿõxË‚+‡¥0” :IÑ{.‚{ Jìó§‚dc?Ïa½'˜ï8Z›ÅŽyzFd1sÿ^xÊYYvZï$±sàgwlGq˜—žp ¬[0“oÝ¿è”T`æõ #Ʊlxò>­ö'FH/|ðt¹Ã=?ÅÎëà°jg^r§×϶Êrw„%'üÞå¿c÷°ÿ d¡G ¨èáÂþ?_ô¯ÿ©ý|<Ç ¿l LðƒÊ³ˆîfàI)¹ë9Gú ‹ãÁÀ$ºÂ nö…a¿a`ÀØÒª*„š¿ñƒ[¶ï¸ó‘ý÷ü °{PZ:Yá¼j÷ü=3´‹ RLAý¡ µ¾Ð%²µs°¾7ÉæëÇ~zpaÐÉóÏ<ýµ ìÙ~UŠ×¯òÚeM{! ƒêÃùsò¶­²-@MÚ%cJÅ£Q”iˆÃÊuÜc¬¥µÑ2Ì<óÌ¡ù!U Î:ÿÕ‘~lîÀ¼ÓY{ço;¸yÓm;vïê’1‹Aqðô’¿ÀµU¢g¸ï·@öõDÿ_R²ÜYÔP&û€ñä×<é­Ç8ãÞÝÏÀ‘î½dañ–q¹’ÛÙ‹~¦E¯¢LëTuô»¨¤ÀO–þ÷ Ÿîn¹úè  'Þóº§p9Ý6Ì3‹ˆ·F²’-^r;JîâJ‰NF\ú›¿ÿ¬NîF¤¤ž–^0…™Ïìæ­w^Jê*z/c茳™aí±–ÈQOIUàlP+ Ñ–ØÅO^𾋠®í6Âd%˜Dk'ÁýlÞ=ì´Å]æ{ýÐÒrsåîLîAi_á›Íž×%óùRyý-Ÿ<Æ `õ„£ ¤£…Âzº±ê‘aÃæJO€.|캽FöÕ¼D££uîêç”ÝYÂÝE¬¥äH…´è›†—·^™Fƒ¬^<)!­Ím:¿{`ÿ£úIÀe£¬Ó WO7æsÕêýû×ݼuaW«¦êp•D7›à¤]zÒy}óUAT»uÆO•Ñ“Š{ºÑej6z®Îœ}|´a„ÃÍ;‡ÍV§ÓêåT%ÁGÁ”2ÍR…4­£ˆSèÀ0”=),÷9Ó» :¾¾Îßp°iýB˺ϼ—s-O(ËØðA?áB”ŒÓ|ËZëè“çüÍ[}aë•Poú} ”´'Fÿ§É_;bÊ3ïõ›vsH›!«WH}»§MÆLk(×G£µžÝhoÐÖáÒLÓ¸¨/T«†EAõÜ•´é±ô>mÚ[Ö¯»ûq“}Ô\Æ«ìU—B‚Tö˜2eN,ú8eúMð# û]¤ç-îytHi“^î‰~¾jÇÊû–Š~«¨­Íûe@òXÆçí0µ*Û7Ý(Ç÷GS;‡&¬N·¼ï]º‚ï”4_þ²g&çO‚½ÐOühÑá\¶ñ°a«vªt¯R  3&`£_^•ºèð»I×ð¿5g83;´:€d?ÔÞ2(é켃v[Ö¦'ß¶nÍO®ùø®¥&UÊJûéòLŠ·AK÷«Å.…¼t!nXËw Üæ2Raof點eu@gZ´:ÍFO*zuIÂG¶*‹÷wB3xHîº B êB.ªè?)¤ò†gæuf±³Ÿãn˜jÖ°FT J´$ `óŒ0óÂQ©²¦0Â8Ú">Ñå'=öpÏÂüÚH¡œŸÝ:ì÷ ±Ï ]#³¿eE„ +VR½(@hôÝ k£¢ÂÓw`¥î˶H¯¸Úõ‰ãðïÉÂ=?»eç°?Óà0Ÿ‹Oö& "w6%x‰1Á ìôcåÚi÷dE»r 4Ô½z½Å¶¯Y¯#yŸƒ %<µG•ˆ¾d° *¹'á¨ÇTÞ¹ƒqeÇ?„2L ùY|÷Ës° ÐË~ÿÖ-;KxQBJܪp׎ÀªE”Œ à‘ÕÇö‘†Ns„þé!([|ÿ[½Æw^u&½0´æô¡7šd²ÓÀý†©{J,çaw¤uð( E3¸˜…¤q¶VWã1 *$6m6õ^ƒ SŠ8ZÖÜøÀ+–<%Ù;Žfq<ªëŽº±^ç,´æña‹ JÍY±ÔÛeÂÎD 8µÃ§•I´Ó’Jë9Â;uüÙÇÌÕÛMiAsSeL–"~R7QM 8Å–Ðßg¢¦ñ#/Nãwî>¹ŸP®:hì» ½§’×ã%0*ä(SYS–Ñ*üeÑ#ÜänƒÎA›o¾{ãÆMw˜jR“:ʘ¤’½4¾@í!‚ 7°Q®R[“”t’Ƥ¨53È™› ÚhÒ²g”šp»¾*EI…Ÿ,{½Ì—XxòšJâ~\)‘ DÂ<¡š/Y= ö÷hMÒ¶@ðKÁ¢?*¬So„æ‚6ëáÒíŽ(zº<ʼž¢D¿#2Qý´=ÿ8ƒ]PSÚGõ685BŒ“zUÙAÖš¡ ¤mæh’ćÆˆ@K{·0H_pR×(w–âªb«·ß,vœ±{*ií¼!SǯLzŸ u”÷Ât;ô2>åž*¸JjêN×6¾³RðeŠ“¢¤ jF›¡²{G…GÑQ{笩E‘ I€‘Àa%{ ̤NRˆL*_ÑæÍ4ꨪ:5%­ñEåçBGøÒ9œhÊ€àN©@–°yµ-rÑuºŸ7âç:ÖÎÜ=÷‘Ql—G€Ò1¢ðYI5éxsÚ¤vli\PÂCpuvÇb¯k•/e(ñd£ëÞRsTYSQ0O FóKEQ-Lªq6ˆLdjw,Ó._Ü(ü&ZÞ„@êÈOlÔÝt^Ž« £Ñ¹0ýš FY(”Ä©’W ;%OÕu[âæQ’}D ²Îýˆ’ŒÉWQx+³K7÷c3dB¯õÀUa§¼”t÷ ¼t4JÅdÆ‹½JïâE)ö¤¡è | N†|ÁI¿˜H Ø9Uâî…P7ÕªÄÒWëS*]“JrÔ÷§ü¡¡‘nÖ1JùHI¦3{ÌíØÝ[ˆ¨¥ˆVˆ×z÷&² ÑèIÞt 8+è2OìÊ7•~×SŠ¡Óá~=‹.଎EÁ™âŠ$ö¤âߌê´àáŠÎ PägÈQEÄPÊ—„rVPŠóÂ䎬^®XÁépëÅžé¡ÛÛ…ŸÚ–0" ÚÛE8¸§W*ÂÏÚ^èœEé­ôhꨞ€ÿ‡¡†²—ÒºZâ‹x‰wPÜSIvƒš±§¸'‡‘ 6$p¤ÂÒB»R=¬NÂL½„êõS<}Ò•N‹èc=¥HOõŽJ,*P5Ni…¢¯µrò¯Â{ÈFÈ”PÖÌQŸR{fpH¨Jä žàC¹Oc¨ íH{ý¨@­£e”o•q’­b¯ŸTNÕŽSêøEA¾Tµe2RúœdM^rW{k‘Xûü¥¥9êL^N áå‘Ä£1/Eôžø€˜hgâë8 cQßãrÞ’—NüÀ(/Â+¢'ñ‡‚G/šÎíÓRŸæTD£˜˜hª•ðãEI^ˆ¶òÅß&¬ÄN~O¤Ž_™äìMOgõ4I^/KhìEëKÛå'­é…[%èŸà‡£y 18Ñ:ÊX+x”Ÿ²}qø‡ähLdL1GɈ§ðÙ*¯ôZ/*SÚìÓk=óÌï˜(©‹2Ѳ¦ò†}æ‰àÌØèÓ~Tƒ%¤îu‹WÌ‹0êBI)w*•óõxKÜÌþ>½UrõÆY?Q ¯lƒûqS%X5W¦fêøóLÂNÁ* uÆœóRŸ J*˜' VÅb× ’b)ü&µD…P"Ô\Jz>Ì »+É¢8¹«ñ½À¤—ò¥c‹dL’+“Ë'áË+ðP¹döÑ"O$?*tŽe»TÚ¸Ó:ʇј—…§`HÂÑ2&¨£‘8j†WÊêy -„«=ŒH´1I.Oþ)ÔQ Ÿˆ§Âàv`L¡oJoФƒ‹(C·ÍŸ|R£ÈÕ 1’:|…5çô)[9k¨äÌA@ 7ç#ÓRM¤ËT$[û9»ËüÁFxÚ²àðB/¡¼ÅÌ» UXl>´z%ùvÌÑÈœ ÎéX·ÞÇB.Ÿ¹#´¾-ù«Ç® )¯ó‚6²ú4ÎiJ„z9ú‹–ÎÛÝÇ€ú»"LÂN±ö8( ^ŒÅyAÏx;ˆðãh›‰þÍòsÓ¾¥ÀDÑsjì,¼u;‚D”ü¡„?Ö?‚Çbo†d·Äwu¤ˆ_£IÕ)7*Î^ø*lUƤóúØ–"޶|–V6mm¯ÁÊ>º š) S¡"|xè[:óbë—Ð$aNð•ÎëµèdÏú&«¢»þê¥MÀÚ ñý=JIâ¦ñy=‹_ äcB&ÅTäjw„Jöëƒèž© Ú‰ðW‚Áª3‘´†&*έVàžôx¢)ÛBÜG˜ðÊá…*šî) _“¶y¸Óô¼§˜¤6Úp]d+‡€SõèX®&Iq³NTÅ––A"â~Â(: â|™àþ@”‘:*8ÍGÈ¥.’ QA_b’08‰¾r£éDŒÐ¿µ£úžÜ¹«tå°bGÙØ9ªÙ<Þ±µ*¤Kê”íèj-B–ÒA[ª(ŸÊÚ” ØQ©”T°¶cŽ*£×>|Ø dÝ@¸‰H½©T…@­°CKò&yÚqŒ_¦£< vZ8š6&ÇÐ'­ÙÏ‘ŸbN2µ@/¡%< tnpŸ0‡†¯XY} *©ë,Ü>(Ä7¡Ž†ŠZ D):VÉl¹ŒMIç¡ÖÔÖ²¨èÓ#:{=enâq`òúšÒ…'_î)˜²Î': y}”‡÷•s8¥ÃóOÌÔbèü#­:¤›HdFÑrÏ,7Äb°Å; SûØ”d.óÓô¦­{ÌÔ¶–|zp^¼†*‡ß,¢8Ò÷}üž!kBñSï¨"éïµ­Tªœ,>2BªÅ®ózþ-Ô^hï[n¹§E”Ü<*­ÐšXâ"ö¤g*#w—Ûn~Œ’ûtŽÅå>êu5—æ%Þâñã:.‚dÄ!éñøtyÔq—{0nÅÖ%9ˆT Ó.TóSH-JG#ˆdL®òôw¬&ªh¬QDªöÃÒ-Z ³€e¡'šr§~´Ge®íA%âE¼^U>Ø_((€ƒWø(v¦ãQ‰ð›Ò˜ÉûLæ“QPÒ]4wÔþÎ1íí•­õ•š %~‰ææiv*=Uî‰-ÞôZ5€PIG;~ƒ;C-˨Þu¸®|ij(½âù£¡1éà ¤ÿ=8®øÊ÷‚“Cf[élDi©j*ÑyStŽUÇ£qÿhjŸÉÞhN8ëaÏw„¼Õî4E»LqÚ4.ÊS!~¤ýhA ¸`O7-âÀg ²Û'¼Ø²¥‹’†ký„+¤7ÒÛöT̽yºó”n [KÒÔ€°7޳ýºñh3¡ â¢x6œyX½»V(™™š¥ñ&£@•êC†ï,SìNó†˜À ’;n{ûç?:lІ²ø5LæÊq©$ÍPÙ9Ôt"›Þf¢òxT#‹Íiüg÷ÂóË1GÕqÒ7üžn{Ò‹xÛ–d® Jbf9ÿ™½êxŒûGcâ1JЧ²s';c"~Nå%ŽJÚ½pTw;êÊxº-SLô¶k±}˜¨|ª_zè4¢ÄwåÅö<”mI€ŽGÃÎá‚›r©KK±5WëR%x䊢½¨@ŠS ÀAeîV‘óø™èAí©^"·Õäq´–Ø©fsòO2–’ªÁèU2 5§ÕsKÄÓétµ Ž—‚*‘³>ɆV/wjù´1µyæ0ÍòUçÖ»€² 4¾å-‘Û« ¤¹¿sOÈÔ`‚³p6lÒâY¾öF”H0¡Äà 㼦îÒaÿÉ z„7 Ÿ&d'Yê ’Ž*ÁgeÍÁ“§Ÿ@².Ñïî;Þ¸}aÐ1Ÿñh “6m•z@2/L¼‚ T’¾°@Æ èÔkº6Œòk3Ï’‡¬5R*<ô »n'’CÚ7U^þA*Ü e çn8ÿL•ø'3RÖ¦6{{]qÖîžf;òôåîÑ–¬î"Ó½RŸ¼býÜpïh„ï<«ww×Ê|Ã?»T¢oic*ˆ¡^ÂÒœ§ùÊ91@žg*iæO\%A¨¿-3ÊŒ[ 7OÝpÔá#¨t CßÉáð4"mJ yuxYSE'BiŠ{\Ë«¿k‘éÁ†–}÷ <Äë/˸#W[““¼°‰L Þ”„X踒™ý_¹é¸sæ½±ã£ìvæ ðêuãñÈ*n&¤±èEæE˜‰”úÈ,¥R¼è­¯¹}ǾÁ± ¤Š£¢‹:Œr| ?–P¼óÄá0é{Ã)%ð…$ðTEže_…œÚšNµWo^mÞ“¢¤ñxä¢`¤x+ÑKu¼ŽøÀ¢ÊOoØ€}:‚ÓÞæý(iσÙ5H/8ì‹K­‹¬nìÎGÓåûf¡6šØž”ƒ*+Ú¼©6\alfwW:µ“¥þ\TÒLÿ˜°ßÓ ¤…â¨04LG*£ÍUcA.Õ3’-=}´6í«ƒa~@’Ý 3¹¢ñi]CS¡’jŒ…Ü2…²çóS€É2`¤—ÑØÜ†c'Fúr§¤™røðt/…>&Õ‘LF¨î¨UX*: H™›pGïéïï(—ÌG¾¶®É“Êäô-°g”)ަËdÄP®<"R­£¹êÄCZ1¹87…g+rÅ gL¨¤7[%½fF€ò7QRíð•jŠÕ§Üð”tµ4—ã–xU+N[z=Ì‹Ê ÈÿýÉõFc=aE™PÒ%ÈD»]PaI¨¤SkjªF¦šdk¹ÐçÖyDî{GNIÿkR&ÿ‰uýõån¹g†â=a€%M&>ó‘{§æŽYJxR{ÁKO "Õ}:ÂQ‘~½f«v,¡×PBzíÈ*iO“ÑSRÒ+±_`s ÅŠHJRÅb¸<ëâxÅ£?*9¾úMÁl×sjQQçI7u´Ë‡"Ég s’¡Ü‰ÞQÖQÅRÕTnõT¬íž}É(ä¹uwlÙz`¸‚O奤v¿å¾KP'¦?bbjŸV>r½ó£qC|D‰M*ó†útø{Ÿ»î:TRÂi†Ó¶Šº\{ÄÊ}–¼SRYîAAõ”–Áª—,µÚ8Ç]„áÀiíŸÀ×Ò¨UcÇ6L›ÛUÃZcì¶ Ñíg÷ÁꞣèKò¤=ä'\$sÈEmš×¢¾§¦gO…„O¤£1O«*³C¸Ÿ~ ¡ÝÙ–87NX™öZ‘®éx9=.÷Ý /¿ìÒ °€žMœÜô »M‹Ó˜RýÆ5 ˜£I¾Ú°×}Ùœ©JVÒÝ Ÿî±4C–Úά’N¾ípÐÉ©·HO4ê±Ñ€líx¾›÷|ÇÐ…z>øÙ}ýNQê©Ëœ 0ÕPÅ”´ø½üþI‹n•1ö ÒÙ†íÖØ&Jj î%mU†x¹±yo¶2G†ÉþÀÌ.*¨£dDœÔsDŠ´vÒn|×à=oþ!xÄúüO$•ÔPùÜb@†3<»Ÿ“e¬ž¼šî$k Neùéèž#¹}Øoå–ŽáÏX¤Çƒ’‚ÙçU9 žÔÀüü]# sþŽa‡ ¸á oD‹ãÞ¼V(v¹¨½ÖÍ8ïÎäH_ƒ*JJZÙë `õæ¾Né¡Õ8ÓΦ”©7ÖÓ^ÝxxX/ô¢ËÏyÓí® 9ìÈ_BpIŒ–¾Ú~Öœ%.^ø}ÔχööîÛ¶?úÀ°SdD–•ÀP %$Ñ–€lÅ~4ÊEš-ÐÓO eé  }RÒu»os¼”ã΢ÝÍ;ve–×TÐ)K§£jú,ñ)ÞOw‘á†>…~ÎTCPÜ·² ½éŒû &tÉý˶ì0.¨Q£¿÷J%$õ Ù“"Kcmyɲ¶ü0(9€v¤%÷› ³ôÇ*s¸ÛÂ¼Ê ¯ò<”J$GZDM'ˆ¥)÷¤û‰ÆÇ£fª<¸Á‰žŽcêÔ–^œS?pÄfSþœÑm™™ÉŸëE¬pu”*±W|׊uî.<iQý箞k}ùÅBó;†yÝl$kãÑŸ°/ÇÍMoߌ=¶®âCƳþ’è'¬Ïj¤›Ö¶íKÏâR5;hÕL§™¹ÔK•ñÓ'¬CFfc´¢öö™S,ÿpÒ×»œ1ü±–œ+Ú¯êt£«ÏÙ,:oÉWº§$’|ØTÒ€ïxÄ'F'*=Xú«àöCúÏ,qäîPóGÅ=yH¼eJJ ÍfV)ÍNÀ*úi‘ ÔLºÛ³Œ`þ?檲“±/e  ¤w¾{ãÊ•«×ݾ0œá:©®9;‘˰q½…cÁ¢{JÙü¸^|©>h E¤z26(éݼÑéwfÁ¼é*š>koé}Q#¼Åîýù£–Z ¥b© ­'õQŸ*,åÉf}ÜDŠ\̓©¤-3 ó0rNûQEõ3&ÑÙ3,¸þž¯¯b¤•ƨŽe‰95ÚÝë)oÍô6Sé6kIÛ¼><€0ev{Òìj<"UK>þ+a±$múË-Ð-„©ªÎü‡%4KEòØ:ècUóž´í‡²9JøØŽôÔáyÈ9^õ»WÜ”çª<Ê·T WÓÇWåà•f)_ãýh2gjDJj=éœÍ(G—€äs$ò•QŠÇ—M&¶zÿïßÄÍŽ=¥G+DìÛdmší§Ž3Eb×'š2ö¥lN‘ÝŸí¨¢Ñ¨ÝQ°ÖõÔhä%y©3w%þE! VOóõT4ÓóGõ! }ž)²%½Ý jdÏs@2Z³}8C8‹Ä€¿ §¸m™íÐG½äüÑCŽúJëgn²ûѪZ;×÷òè(›4:¢nGC¤@¿îüQØdŠûðÉC1Ks{ÝtäºM&ÇèËßçú¿ÊÎÝU²¬ ã¾êŸ¹¾|ûöiކIÔWk@ø‹¸yÖ×^á×óÄNWñ4Š\v2ãì2¾ÎÃÀkÚs§c—J=Ôø£A’…–XÈy¥öÀ„®i°ehM0ÝKb¥œ±n$×§kXÎÙ‚Òtô'xyµÒO‹MÝ2qC|d´œ1jè‘ò‘ÔãäûÇj9΂»­uYEa8ðà˜žŠ˜ †ojŽ¢»]tÆüÃe˜0–Z[ š†E¥È´1 Þ,µ&Tõ³Ÿ“ÖÝâq·ÏÇ…)ºy¢n‡ˆÿÿ@Ï’¡â¤„ß ‡a-WòGò"ºfðö$M„£¢z‚ GC9çå\@ÿÈ’‡àíº¡Ïœ°g…Û72IŠÒa÷°¢eÁdnÜÅ %pœ1r7e+¦mgͧýܦMt®F"`Þyšã%ÆL¾¸>6:Rº~âæ­ÖJv~u©‚©'PªþeŽzX n“È4¡ÏM„6Ũæ'9Pýãns•È`©Ì“B‹ë:f½3¤«4¨›ÐÖIÝ«Q?öíÏûñ/(K„’[-6¥ÌÓ„j殣¾Ì¶‡ù¼¢fŠñ“žgÃÍ»”]*:3›0zòD›u&Ÿ J:öøCõ”ždå/ó&„Ö_“wÚ²£M§ÏFýE†" Õ7w7Õº‰|œ¹Ó£›©7-g[ å-Î/ÃÔ‹¼: -¶§=ž/A¾ÿ[ùˆS™Ï¾¨C})O’WI!A:*Ý3Mw-¯‘š‡p:t›õtÒÜ…ÊÒ`¼¾ÄÃ× £‡ÌÞßÑG¼t 5ðµ^$Ê^åôM¨5Å™PýøH‹ǧœvò&¶ºÅ‡±GŒG<|Ùyó0(dÞmÊ0%‘ƒ¿®i,Øîi¢’cë5þ%†Á¥¥²¡o>˜Wseô~c¨IÇ™"5éÓ›rã•Ð.3agd³¥gPø!¥—‡džôUà: ñðóœ¶ µoi#ú°Rø¼Â“rø,‰Ù5¥e*º¹UdÒ7 RöHÇ{Z…÷ãt‘m>Ï~h?oЛgZ¥»„¡4M¸£ùø— ïI²$bǵбU5oÕpÜ|›ÁÑïIÄe-”ø(³ŽŒë±FÌ‘2çÚÑ(÷±zǼ8ÕhX bqð6 ,ô—𸬵Ü{Ã#aû?YàáÏsY²7a,`[¨³´®ƒº"’Žç‰‘Kvæ Yj|¥ïìí2ûœ¯÷*#YêZ4RYS&7š¤ž«%Dbü[M–Rӓ̝›*z÷~ì Wz´Þ}ÃÜÓÑÔ(!jj,3q±rK®Š¡Ødý6ç¨}P´E$bÒ޶DŸ#Ò)õÈEœâ*óuƒ’£IìGùñà.]¿®K‘ê®^5E—„–ÉÒ¨èó¥ŠzûâÄêÛ’­¿°šH±Õ–{M‰‡OÁ÷Üc4ò¢R1]/æóµ±ç-µ=9•ã”Ôh`íq=àý&d ô²•‘tI£¥_ŧè>Ф¯;%J‘E§Ä9º:†3a¼±Íq=¤‰$F\¢¥¶”Ò‘Ð¥¾q[šœ£4󼟄LLÝãúÆHD¬ ÝO%&c¨[OGÍ#|{VM¨¤Pýau™xøÕ–àþ'/wc+šj"\ikò4ܶ·„Î=CÙ¥(÷ÜgÜ‚(eýÄÐ.m¸Ô/„Â¥²í »¬'²tÑozVmMé³|Zù£úƒYr4ºœ÷Dn ñê&ÂH-¶ õ/ž!úhY_nÁ2Y…ÑÞ+j¡ +̆š…z3¹‹m®&õ™­Í\¾iΫü(5ÓDã©7óy»J¤ôž$LÆIjQãi”ª‹$RÎUÚ¦Î÷\O€ÔÐMäÎö¥9e½V¢$ÆÂËcöIz“ËÁÉ#G-O†§²®¦ú ÝABt~™ ’Qž•½ú^ƒ†ÉUTš7ÒJ=KÔf8O«þBçKcÅ#o÷”G+I’‘j2o!HôžôqÈÇö4Á‡6ÅŠžeÈLæžò%52KÔ“ŒîDiØaC½ðzR?:ûÊÕ‘ûoz$HŒ0¦OõÚùf°囡"u`«ÝèßÄ¡t†Fï~Í”Ô=>±æ/*§dÞSf›âÂÈä;/F©@E«Ÿ?#¼àæaç6l5ÕÅ›H,ýQßkêa“ªw+‰Ì·”iGJ0_'n%ôBOË:t¶Õ\Ù6µâ’¦,>YZ´U ù˜ÉuÉ—ìO3æóv‰bŠÙ¼héõ.=|–™Î_:÷A˜Øë(AÒ +ôf­ÁEIçN¿c¬#?úÍç3^ê’nåú5DË,…"/^W|låP:zNž×î‚Ð{vLõM¯h"?™O¥†ºh›u½çóyô"¹pH=἞¿Åf®ÃAT‚©¥0°ÓÖ ñð'uê¤LIŽA©3Ù48iÔg4x±Cã±£QŠQè m/“ ¢öL,-½òølЪ'mí†æ‡’ÌXıg› sÙ߯1àßû0›×Ãn¾he›°ZÀIq¾w{Í+òðM?ýƒ(eª°LØÕ!™;ý-‹yòë«F.éãKŠ€áã«…›w õzTĜ֠¤rûpluÓì2\=ͱ™e*z 8RƒOÔ÷Ú†À¾õ扫j¡@é³OCëL›8‰@ѪæI<A×$IÁ™BíäÊ*õÒm6cŸêz={_Z íôÚiRA@ôOÆuP 2d‘N}¦òöÙ§ôø¹[Ñ6dÉÔÂÅç¹Û†CVmwmÎŒB‹Ñå ûcBdí™­q“”úÓÙ³Ú Í´ŒC»¢ÛñAªÆLö}(`^™Öù‘*¸ßp˜ ­ÊL¬‰µœ U—;Õ“­ëD ùÕãçîýùòì@w:ÙåZN6ˆ¥Õv&)‚&©ü7>·9'Ÿº³K’<éðÉ×gBuúPù~ðÙå»UŽ0¢]ƒ†ijPNÛ5}ðhÃ𾊎ÞÙÏë»<®WAÏùÑ¡qbÇ[n,aX²¹TNÚmxÿlÖ?þÑë[¹r×WÞýþUÀÇ­²O°JDnÏ´¶ÐŸƒ+ª¤xëÛÞºš»ÊÒôŽ]{[ÞšJ‘%„Vtö˜ÃM;ö]êW1u;þ·wBN¦HýW‡ô?žiÎ3bz¡ZƒPΞ,+ b~ô‘¥q¾–¯oæ^ÆÞ•ýÙüõºSgá*#¾Æ`ÑÜÏ—%äó*cS¢~ôaÔ¦+ø4'õïçEÅW¶¿¾h(áåå ÂÔäýõÎP}[å“~íZ%F•Ï‹Á~~[¤†dç¾”úì•ØþzÑ(jëýõYÛ O§›û{/M9AÚ÷YÞ½>:¨ ýæ­]­´¸íµe!¼¥8”ýY:üG¿¤Ëê ÿéÞ‰\·ÌÚ2U±÷KJ$Br`&Bî¯ÍØ¡F—tÙYÐWÏÛ>Ì'Y¨RÏ߈J 0JØ_O¸Ä­Ùõg}3é¾ÿÕM‹Ê…ª 8,/K˜ˆô•±Þœ¥Ø_Ÿ÷{ksûbßÔ³»¤ËýŸ¾r=‹ÈC}ؤzæñ’=ŠýõÀ T&÷Ë}cÔ$,%O㞎›?êÐØ4 µzÂ%.bŒft2ó4e…¿¡g½Ü÷±}ã“È ³–ò›åpÂWÔ8   '–R/e¯7âz}µÞ»9Oì&2÷~9þ­'ÈT‘êÙfÛ_ϸÞ7Å>è ¿|x²FR/7xÒÏ~!àtQ¯×J™²^¯ß–ò£d¨ˆÜ]žîݽûž‡wö3-‡ ™•.¡ƒW!¨Ñ»wy*»Þš-ÌôîÇy奫“ͰæÚ Œh¼¨à(S%è}Ÿ—[óæì:o•Ûi¶>g>Z{„æö¬í×WhOèxÓÑcD,Yû¸ÀZåpÌ m”ª ¡Ô½Ñó õúÉêõøI—téo+€K‘ª*;ßßܱ”®'H Á‰RÀLL2ÙNð´šgÄxô匘¾Á‘Yx¤V÷ýõlÌ©œÞ͈F´¦¦ZÁyœgš¼VÉ&+D©O“„ˆP©Är?±Ä<ßÔÂ.¹c’9*âÔQ&¶ŠÖtE‡ „.øÏ„¥C¤'$ LŠæV÷¶ãÔ¢º¨˜b$O}±)E‰q}‹€žÍ àòºœ ºçq~ñp£-‡yG͆Ná›9ºí K9ÖPh{ðcB™Nh|±Rbït"‹»ŠRUn0ݰ úÎÕÑL“(­1I6Qœ]”VØP±£Ç˜ “ô¬Àý<})QŽƒw*£¶ôˆ þ¡¾/9ú_Á*Ø ÅQ“IEND®B`‚././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4541125 PyQt6-6.6.1/examples/dialogs/configdialog/0000755000076500000240000000000014532160402017250 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623062 PyQt6-6.6.1/examples/dialogs/configdialog/configdialog.py0000644000076500000240000002143514532151332022256 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import QDate, QSize, Qt from PyQt6.QtGui import QIcon from PyQt6.QtWidgets import (QApplication, QCheckBox, QComboBox, QDateTimeEdit, QDialog, QGridLayout, QGroupBox, QHBoxLayout, QLabel, QLineEdit, QListView, QListWidget, QListWidgetItem, QPushButton, QSpinBox, QStackedWidget, QVBoxLayout, QWidget) class ConfigurationPage(QWidget): def __init__(self, parent=None): super().__init__(parent) configGroup = QGroupBox("Server configuration") serverLabel = QLabel("Server:") serverCombo = QComboBox() serverCombo.addItem("Trolltech (Australia)") serverCombo.addItem("Trolltech (Germany)") serverCombo.addItem("Trolltech (Norway)") serverCombo.addItem("Trolltech (People's Republic of China)") serverCombo.addItem("Trolltech (USA)") serverLayout = QHBoxLayout() serverLayout.addWidget(serverLabel) serverLayout.addWidget(serverCombo) configLayout = QVBoxLayout() configLayout.addLayout(serverLayout) configGroup.setLayout(configLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(configGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class UpdatePage(QWidget): def __init__(self, parent=None): super().__init__(parent) updateGroup = QGroupBox("Package selection") systemCheckBox = QCheckBox("Update system") appsCheckBox = QCheckBox("Update applications") docsCheckBox = QCheckBox("Update documentation") packageGroup = QGroupBox("Existing packages") packageList = QListWidget() qtItem = QListWidgetItem(packageList) qtItem.setText("Qt") qsaItem = QListWidgetItem(packageList) qsaItem.setText("QSA") teamBuilderItem = QListWidgetItem(packageList) teamBuilderItem.setText("Teambuilder") startUpdateButton = QPushButton("Start update") updateLayout = QVBoxLayout() updateLayout.addWidget(systemCheckBox) updateLayout.addWidget(appsCheckBox) updateLayout.addWidget(docsCheckBox) updateGroup.setLayout(updateLayout) packageLayout = QVBoxLayout() packageLayout.addWidget(packageList) packageGroup.setLayout(packageLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(updateGroup) mainLayout.addWidget(packageGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startUpdateButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class QueryPage(QWidget): def __init__(self, parent=None): super().__init__(parent) packagesGroup = QGroupBox("Look for packages") nameLabel = QLabel("Name:") nameEdit = QLineEdit() dateLabel = QLabel("Released after:") dateEdit = QDateTimeEdit(QDate.currentDate()) releasesCheckBox = QCheckBox("Releases") upgradesCheckBox = QCheckBox("Upgrades") hitsSpinBox = QSpinBox() hitsSpinBox.setPrefix("Return up to ") hitsSpinBox.setSuffix(" results") hitsSpinBox.setSpecialValueText("Return only the first result") hitsSpinBox.setMinimum(1) hitsSpinBox.setMaximum(100) hitsSpinBox.setSingleStep(10) startQueryButton = QPushButton("Start query") packagesLayout = QGridLayout() packagesLayout.addWidget(nameLabel, 0, 0) packagesLayout.addWidget(nameEdit, 0, 1) packagesLayout.addWidget(dateLabel, 1, 0) packagesLayout.addWidget(dateEdit, 1, 1) packagesLayout.addWidget(releasesCheckBox, 2, 0) packagesLayout.addWidget(upgradesCheckBox, 3, 0) packagesLayout.addWidget(hitsSpinBox, 4, 0, 1, 2) packagesGroup.setLayout(packagesLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(packagesGroup) mainLayout.addSpacing(12) mainLayout.addWidget(startQueryButton) mainLayout.addStretch(1) self.setLayout(mainLayout) class ConfigDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.contentsWidget = QListWidget() self.contentsWidget.setViewMode(QListView.ViewMode.IconMode) self.contentsWidget.setIconSize(QSize(96, 84)) self.contentsWidget.setMovement(QListView.Movement.Static) self.contentsWidget.setMaximumWidth(128) self.contentsWidget.setSpacing(12) self.pagesWidget = QStackedWidget() self.pagesWidget.addWidget(ConfigurationPage()) self.pagesWidget.addWidget(UpdatePage()) self.pagesWidget.addWidget(QueryPage()) closeButton = QPushButton("Close") self.createIcons() self.contentsWidget.setCurrentRow(0) closeButton.clicked.connect(self.close) horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(self.contentsWidget) horizontalLayout.addWidget(self.pagesWidget, 1) buttonsLayout = QHBoxLayout() buttonsLayout.addStretch(1) buttonsLayout.addWidget(closeButton) mainLayout = QVBoxLayout() mainLayout.addLayout(horizontalLayout) mainLayout.addStretch(1) mainLayout.addSpacing(12) mainLayout.addLayout(buttonsLayout) self.setLayout(mainLayout) self.setWindowTitle("Config Dialog") def changePage(self, current, previous): if not current: current = previous self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current)) def createIcons(self): images_dir = os.path.join(os.path.dirname(__file__), 'images') configButton = QListWidgetItem(self.contentsWidget) configButton.setIcon(QIcon(os.path.join(images_dir, 'config.png'))) configButton.setText("Configuration") configButton.setTextAlignment(Qt.AlignmentFlag.AlignHCenter) configButton.setFlags( Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled) updateButton = QListWidgetItem(self.contentsWidget) updateButton.setIcon(QIcon(os.path.join(images_dir, 'update.png'))) updateButton.setText("Update") updateButton.setTextAlignment(Qt.AlignmentFlag.AlignHCenter) updateButton.setFlags( Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled) queryButton = QListWidgetItem(self.contentsWidget) queryButton.setIcon(QIcon(os.path.join(images_dir, 'query.png'))) queryButton.setText("Query") queryButton.setTextAlignment(Qt.AlignmentFlag.AlignHCenter) queryButton.setFlags( Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsEnabled) self.contentsWidget.currentItemChanged.connect(self.changePage) if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = ConfigDialog() sys.exit(dialog.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4550045 PyQt6-6.6.1/examples/dialogs/configdialog/images/0000755000076500000240000000000014532160402020515 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623883 PyQt6-6.6.1/examples/dialogs/configdialog/images/config.png0000644000076500000240000001562314532151332022501 0ustar00philstaff‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ'6Å’ÃbKGDÿÿÿ ½§“ IDATxÚí\wEzïž}›w%­$$„„ÈF'‹$ qì±§3 ΦU¤2EÎÉ„:R™`àpQG°àL,cb•9q‡Au`ÈÃ& ¥ÕæÝ÷¦ý›þº¿þ¦gÞÂç²i¨§y½ófºýåïëÖišªï[ý–h­1ô‰†.¾ ÆüY¯s”ëâÓŠ¿->Yvß(UlÑ£G•Ž­´9\¦ïI†x+I’ hjµZ___µZ#l,ûW|*ûi´Òü“"²õ®åÒOèÅ{JW+º?ú,_y­å‹t= 546V:::èá&¹^xáÄŸ4qüHµªí¾;ØîeöÕÂïô3û“:/ÒßöÊlÑ”v O‹D}×Ñxœu¢¿ùfãŠÏo¿ýö@ êÚuæüé´ûîºzÝ7›*í§é1p@d£Ê. ]e×ôEeÄ&þ³Ýa9í}ø')yª½ÕØkB˜îUö>÷ щ#¨À_à‰˜®v f|Æ£©=r‘´Bkik=ð ãº»{ðLpYEû~kmm;¦s`p¤R©§—q-Km¿û«q=X\' è3ûL õ˜$q÷7_O<öƒî÷t0í&©ÃþOŒq LîNO† Üx\tAáxŒÒÆÖ6ààä‰Ö•H,U«i­–B"e_ý¸Œ½Í÷k•Ú/†ºSm•}©¥ÏÌ0ÔcïIù¸OüÕe¤¾ß¿"¼T0#­uL5O‚Œ‹ìšuOAVAe]9 ž‘LZ³¦q$ 4búaðÆ‘¼èÒžÍxyY¤ÒÅíÆÁâØHô(ž¶“'9> dëÌ£ëþ”'M;a,ºv4ÄãÉŠžaiYy…`Nøú·"ÞMìMX¸–â*Uîg&@äÈÛ Z;“#2êÜ å~àðe* ›#,Ý”èˆÔ@ Ž*’DkÉKžüúk·zÚËž”–ÑQ†¼Â)-3oÐbDnÊÏŒÖÖÖÒÜÔ”4$°¼ðŒ(ËM¾ ©Ä8¡’&n¶Ú½ŸIŽ?¸–Ÿaáµà–F°/¸v°¯¯¡¡¡DŸPŒ×v"R~šÙÄBŽx*#pâ(b¬ ¤í|-47¶óƒ?þä¿¿Z³nCGGçç_¬©Ö‚–ºÙ \e˜†µTâB™“˜j'»ž9szo_ßÔ)[M6ùÏw™;ÒßG|-žÆä`˜ÌéO©µãœt3)1µÒV’Y»ÏK·Jd3Å8q\×ý>¹òÕO—-ûëÙS;¶Þzë55׳O‚Qg FEþ4¸¿p¼\j.:ùa‚i•Qyj¾üò‹juäö|t‡íWžsΩCƒ½  âQÌ)&9v)¾ô­ØÀ(¨@’Ar&ijZ[[Þÿà£ßýþËïÿçÆJÃÿB'`Ö¬™ø\¼øÇgœqÆk¯¾¶Û¼Ý‡û’„e¿ dÓ'LRtç8}ÌÈ®Dö)[[kËïÿãÍÃ~òW@ÎGccc©WQt Jÿ:ŠŸQÏ)õ-‚Ȱ dÞÜܼô§‡ÿû‹ÏìþýŒéµâ.›fš·Œœxõ¬Ç¾§WœeÖBœdwˆÕ<+¯¡¡Ú6S¶É8°RI’„ß”¦é Èc ÆY=¶m³Í6/ô3LöƒÒŠ_‘IñD¯:JaëÕXº9@²Ù§Æ?€ ÍË Ï©è]¿¾»­½CV ÔôÇe®ááaÂÈ-oc¥©ÉyE¸r®FP·}CCC##š½‰Z­ÒÐÐÑÞîåQj!Óó8Mlwâ!ªâtŒ©U«­mm&L0NóAö óñǯX±âË/¿Œèˆ"{·®g[ßãhÍ:"ÉV[mµçž{î¼óΘoðujYDÂ8Ʊ6¤³ö²a74u®|é¥_^~ÛŒ­'ÀljjL›;:ÖnÚ¼hñ¼e?;rx`s¥!ñS'‘“DζÎk1­‰~ÁL–Ç‚p^ýõc=vÆŒcÆŒÁWÐmÅ6ºÈâ&öš¸€.¨Ÿ{ßÈïcס‹ —¦ù¶víZˆäóÎ;ï€FDGxê_¬Q¦j­­ :¼ iذ¹{a[×1 õ4·´tu5Œ;vúôß|çõïÒO(ãÌ"‹WXnlA†Md㘟H²ÖÒÒ²|ùòvØa÷Ýw‘Wòàj wÒE¦RŒ¢Y‰NDÝÚ:mÚ´|Iç{ýúMÚËe 85‰ö~šE°ÁTM:”ÖT­ÚPiªÖª—#^Ïš³Dµ_µŠ²V4±ÍïG€™£uëÖÁÚ²eKöJÑ0tB÷àŸ¸æéÑúù“`Ò¢åÔ˜9EŸ©•©›6mÂp‘Lœ8ë„Î1c¦NZ©B‘¸‘³®vq>òTø_(ÏLN‚[Î1A÷³³|1 ¤ÖC§½tvvâ‚˜Ž Ð="’DDTd1#†uŽŽRMMMmmmôýèiooÏnÓ Á¶> èb#a,ÍšPºw:¨y£ ‡JÈ~•Ámš”#˜9Æúâ‹/vuu â+:'Mš´Ï>ûô÷÷7ø&¡¡OÜFDD×1ÝE$F¹Ù‰èDêÂ(ÆO:!ÇÒ ù˜Ž3ü4½1ãýTË™8“‘¬MV”Á– N¾ä°ÌÚ¼yó§Ÿ~:eÊR(D;DÞ×_½~ýú£>º»»ÔôÄOôööqÄøZĈ ‘HEH€ˆ³Â’[Âèø–* ixœîüõ`øˆ‚Ÿ JŒaSÈ® 4Ü‚‰´…I‚goX›P2¯!>GFF 51“N: zí³Ï>[¸páìÙ³/¾øbXO=õ°#4%gEº¯´O™=#ŽfC1ŒÍý«i¼,ƒH^Xµã\sX3ìùS´F¨&åͦ´E,´Îù1 ÎïÀB„ÿÙgŸ4@êCyàÖ¬YƒkÈÎK.¹äÝwßýüóÏ œXQ0¼Q& *Æö³©úÔKDì|"y>náoÐÆ‹]o#Äîn" Eãýe úDª„™×ãÆs=ÿüó˜Õ=÷ÜsÊ)§@ÅП0™;w.;q‘š¯‡NÑt(¥#æAƲ‘T}dÖsB> â"=ʹhGÏ„²óÅ‹qS¹(Xy–’U…DN?ýtÐËÕW_½dÉ’ýöÛä4-8ˆNZ‰ô«ÑFÇH¢S42£ °c £ƒ#î”´q&]IsN ÁË”áH‚¢ìÓ-Æ!I#ÈGEæ?°Œ`¨ã?:k—]v}Dš>{¢÷oyJr† ù&mEy´ô^2»¤m-žv¸8ŸÝ»ãnòl)™ÃðNª‹/ë३Qy³£RâL‰á2@QR—zΜ9Pê„Oæ ™‹Œi=Œ˜q„/Yã¯ü@i=ÓðqD!Ë/yIKó ©ïªë M˜õˆÙ°t2(òY<Âe7@ ‚¸ÁY@%hœš®›çÕ.¨Èú^Ë@ Ánýä\¸ÃF!M2Í{á%DÏ‚ ~øah«É“'(,økøÄ5,é¥K—>òÈ#PdPsÒäûVŒ"âŠ~XðÜÅ üf¹"¦ã…4§@”GÇ'6(½§Y&&—ÖÐäß]ºT®A#rä‘GÞqǯ¼ò ¼$èxP "!äpA*Áí¾îºë6lØÔ¤,'ÌX4Úáý„é·l`!:¡=EhoEâð>Zª…ZßkØ$¬È1ä'W%’A2vƒ¡ƒ³ 9üðß~úi î0I rÕUWÁ™?þ¹çž wà 7 –ÔHëGaŠ„]=o¶ Ébù¢ãÓ±¦½íåæI‡k1Œ(hï“ûÂP•ãæ!b¶@ÁÉ@Ùxp5V­ZuÅWÜ|óÍÐkPp`Æë¯¿þšk®Ê£R¶(BÆÔTô¿¾3ù”Bã;• 9 ŸîÒ!oj¢o oÃe†L,ƒ¿’ü/ËíÈÑ×€× Œ|ƒS¶×^{Íœ9ó¬³Î‚ Öƒ‘½Ç{Àÿv¥=„ ¢‘N(ý‹!ã’B¦¼¸Í3 '3TÈÉÇño¾›‹þïAY›“IS•µE0Ic‡¥ñEií*+eç±J™âSªœÈá¼`°s0ùh£ ðgVð!R2Zïè(âIÀè£>º÷Þ{‚epíµ×B¯Ýwß}ÀÎ-ÓΈmF»1L±Ž”LÐÇ.@Hz[ D¹Ä§¼fX+í‘Qaí JeÔ¨eÇô‹î)®6„ôi§öÐCÁ°†çP`!¹ö裂¬ ø$1:tÁò»žTe¤+Ÿ#nWÿ âÒ ‘µBñ4û,bCZÏ‚56 [•ê&ꤩ‚¹îºë®'Ÿ|î:?zì±Ç`aB¬ª…Æz1¢ G©ŽÓA¾Ö)?ç`O^tI"ÊÙ:¾t6®"ûÈ„t <>º±«´Nƒ0Õ€v€"Ûx úï¾ûîcŽ9_-ZNíRõ/%Q9ùµì_jãJ>‹Æ9§wbþ2Î/‹ëƒ¸Ë_‰WЯdìò83SJA47G ˆgXØ—]v‚~ÐÔqLJ¿Î›7I\Ÿ låIÈ•Ä&$û¥ªà¬†Ð~^9k(ePˆøà£VÆÔÁRIF®6su A©½óÎ;€ÝvÛm·ÜrË{g„VCµB+±-LHjä{Ýt•t5Bý3e.Ýès^º Þ˜â+ïDèDHEèD+§ní9çœsþùçÃûÇü!§¡õo½õVâ2[…1B‘6‹¢:Òbš"?il„0ª–Ú?W6Èy’𾕼Q ’¨>H;KQ׳}Šª7’RvpÃlñ°’kˆ“ YÔÓÓªÙn»í Œ.¼ðB°!Då6¤@‘ˆJ´<ÖOÒÜáÍv»ø^N’FåäJ ç^D e}Ïø tZ”AÜß”êãdq¼÷*I ø ±£;ï¼Ä‘×ÎŒoN/®©‡ &‘W Q0-¤„<+Y È© ¥ëo½_+â&ãd6¥NPÙÃItþ,j\òlZC@äSûöÛoYí¿ÿþèùå—AAÄÆüqØ™€Rêû¢ Ò²þÀ¨|pB™¼Y¬DiCéf7ù“b}«–5ºdŽÒÌ3É”¢g 2hß}÷FÈ!¢8ÙÞ{ïM<ª—AÍAB!*ŒØq+Ùüijü¨ÝŠÃ*>¿UÀHZNxØ‚öb«ˆwâÊ܈tÔÆ2(EóÇ)Æ›nº  tîC `áú«¯¾‚lB2n ä~¢­Ä›×JšR¤úàWðp¹¶Œ :-î,£…CŸäs&»WE£¹è"E=‘Þ‘ÎzÑ¥À“á¬!£ Hè(­„ÕvØa‡áO0øçõ¬D—ïÔùðžñŠÉ!0ľÃé/­ƒO ÅBѬ´cÄ\z!E2_sx¨4½E¹0Hˆg–î¼Y)r[. ­ÀkL}$¤K½yÞî*8tpÏ¥¨[rþ‰1UQ&$냜Yá7cÕSð=,t&Þ?QDGD€JNòèÜx㨇<è ƒ æ˜C¹”+Ïh23‘•ã/­òQ1W{à’…}Ã.¥¡âú àåf,bÙðÑ:Þ‚£ Û\å:sÕW@0@˜9¾’YH7@`ôÁŒˆëìPuIg#wf ;qx ^³ÿÓ‚`y½ž*ÑñJ@Õ(ÝXO5Ïb¬¡˜Î‹êœòe¾bΜϑ¥.ðâ2’J`(Ö`½eË–Aô ;t/^ +œR.ƒr¦¯PÞ¶f¬³¹yB{;Š\[ÆŒA•kcW×8䩾‰íçiŸ¸FÑ(_ý!bÒ~'b•%Eq d)gI“´#¤AÙ?óÌ3‡z(ô:®E14:A>ðfW¯^°‘4¸ 2Èå t~3sxhø¹?ÜTI’†J[[ÒÒÒ1aü¾Z;}§ Vù¥ÆèØ`È×(&ÒPÔnŸGˆŸÐÄ0E™ŠXë9‘æŠ"ªE­O ( ^ï¹çžC q~¼Q‘·Þzë7Þ dQ&$‹àØZLMƒ½+Š× õ,;òÀ+±|ŸE{ƒ’Q)ñ›ßüÛß…ëT‰Mw‰q…½vëO(îˆí ¶,dVŒ0ÂXiÐE‹®(wŠèpíS”J–[T ‘J*e¥NâwÆ2ÈUŠ¥´°äÖ[=¿¯·×ÝæNÒ±jÕêöÿ‹Õ¯¿ÕÒ4´`ÁÂR¡[o'"â³Ð¤°‰È¤ä´´4Û²'~x ¹[Í4´ã3þáïÏýÁvìë­{DRÁCÆ-ª”rE²¶²Cµê•ßë…[¶ôê$ yQ-Ò\?äO2&ÞàŸË8¡k¿ƒáï.<ñWÿôÄÿþ¬·o5>½}ƒ#N:úbÙBžtªµÛ¬¯£¸ßˆ¨œÑù,h8,ìcÃ÷‰Æ®ýúëqã:6nXsÕ¥'uv´ :1—ÝŸæÜKýå –Žß\ÈÇæÁ‘Bši | ]ÞÙÙqéù'Âëéé=oØØ-u½!:»':ñHçÏ÷PõCâ£|¥“2ùc€ü™ê›8±«±©±½­m\׸Á!8\ “ˆå¨:å …2XgeÊY:bß|È+†Ðl÷yýÆn0"xèäÉ“øøãv[‘”ñU|ò_(Ù|&£äùý9òšÑH­šÁ°f6Ã[ “/ñÙT>WɺÊ'%"‡š7¶˜ ›…ªÏ•ÒWäFðì •Ì^0ôËïv‡cÈéæúó@ÏDP±¨·ßøe½¤„ŽP2:eBJÌè°‰%dG OïR¡Q¸´ŠƒÛòü ¢‡‘*dû‹Gt‰#kÂNûª¤Œ¡t#­ËÎ"Ht±¦4| ÛMp¹¼Ÿ¤EÜÞêâáóžï¢ã„¬Qt„k¸PP”«²ª7É‚[5U¿ßÕ¨ž³äq]ŠûC,Øó\¢M8* Â1¦p,[83½ü^d•? ˆÎ‹Šö¬˜ÀË*lÏT*6ÜYÄÙ{Ó`ÇbW½ò%iÑùAª£½mü䉤׵7~C‘Ä( §t¹ÓeXTëp$‡fññ~ƆZ暉~“ÿ€Ê¨bÍgLN®™B±GHúbt[+UÂ;ˆs&/¼´êâ‹o„Úbç Ðf ‡q†È'Ütþ¬"AÇ>®G‹éxâeç3iyH’*HøüÊØhPuv1Ee ÍM«^}“6û¥öp>Äùä“O–ßÿ@ÿ 4kr•Cò³Î9—²Ç”WÅG>)>«0ÖÄL€&ga *÷Yç O-X4ÖêŠÆtvœvÚ©´q[—ïø¾•vËñÂa·ºô,¥ÿ«‡ÝRZܽ‚šñF¢ÿß…M`ߟH>zK¾‡`ôö?\Šåjº¸QIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629913 PyQt6-6.6.1/examples/dialogs/configdialog/images/query.png0000644000076500000240000000433514532151332022377 0ustar00philstaff‰PNG  IHDR`U“D¾ú pHYs  ÒÝ~ütIMEÕ(+!âÕbKGDÿ‡Ì¿nIDAThÞµY[ˆ$Wþ¾ÿTOOÏegvv¢K‚l’…DŸdM4;ã…@\!‰ !^0Óð²¢qF‚ø (D ˜B .® „<$/1DÌLT–Äû 3»Ó;—Þž®:Ÿ§ªº«»ú²“ø33}êüõõÔùÏÿý—S¦\’DI6’p$É[ÒË È{ï½—¼²÷ ×Rª=‰¢™™™sæ²™ ×Î…¹ƒéM4Š;ç×7666Ö×7Ö7ÒÁÆÆz¸^_sÑ¿|~›2$øÉ©/¯Ôëõúéz½^_Y©×O×ë+§ÃÌéÓ§Wê++õƒèÏœz‰AغóÙsO½ýrîÙ;·ÂX¼¿7ž4›Íf³9æÍ{û±‰FÌ÷)ìÓ ¦¿ÙÖQ‰÷^dºµ}„IG@ªµ{©Ñ¸Ôh4KÛ͘äH!IZ¼³µ}9ö"Iù¸µ{©ÑÂh H€â£ ó7 M;Ë2#™Þl†öv#q¥kèàÀz¿¾[,ÜÙܺ £„\$™Å=,Ü5и–Þ?d•»Û"¥ð@ÈV,;»„†¡„a›"îýúônwÏ ¡ >I ›3ˆ"R©ë)Øî¾A„§#Ieö3‹Iš‘ð ˜%¤(béÝex‘̓ÄS¢ò0 (5—(Û¿ìÞ"K¤çäÌÜüáù™ ŠÌý‰àeÉäÁÐ=nRmanfrbbræðBÕƒ%RÛ‰ Ûä”ÝÜBàcRµù(Ý\TÏ* ƒù6áÑáÁ _†ØN Nɧv§×ÌŒïpNôáÈyP4:QLä¾ ‰ŠÒÇS’ÄíZ¤œÖD¼¥äÈd4 … Hô/áæ—Ÿ{ä±^|ŸC*›¿ÂïnlnîÝôÌaéç'D_™öÃsšq,ÑÔoþyí*Qä.¹ˆ-“pÈi82䥶@/MrsF/áÞyoª¯ßÑÏNË‚eúñ!†|0ªÂ»ô¹çïÚ‰$¹fs?Èk?3ç‡`©€%ŒËžfúƒó1)‹7«¿…˜~ÏÞìal9>çA'²Çk~Ç0^ÐÞY‘>þ®‰Å[Ÿ¾ Þ|`ì¢e_po$µïîšÿæ·ªÞ†Ôû9>çÆò"ÛÛþÓ/ŸùRZsHiÂé+[Êv];¾ºÞÒòWÛ#Ú³0ð@ÅÚŸèkXÜ2ÛëóÝÅi™tðTàŠMÄ€´&ïÄÄûÛÆá:Ç Èû¨§| ]3hËönyGëÅŠJôýxäýA殡}0K)I*´–Áæ Ù^üô “í2=Kð`cf4’¹­Ï¾tGÓñJ$­®©Nd@@XWÐe$Gç+‡|pŽ‚¥ølRi —V¬Ó¢MYgQ½›xøžûž›‘ЫG)*6 Á9òàÚUÓRÕ÷ß÷Èn{hÆx â ƒOÐ'ä,SþåOhªVgøLÅE¬ÿº&öêKð¡³1!õ§})>ï“5rÖºà B¤`›mÓx+Èx0’ÉÜŽ™fnÊâ]b|&ªkKŸÂÂê:Nw9È þÐdAß©ƒŠøN]„QÅ©âü ãñŠÙN>åv…ÀqÝ´S¥+…¥GÊ28R÷é‹úÜR½ø> ”鎜ÏDcç(94é™$ÓSW–:á¥\0¸£ðiXKÜÑ’[ÊðB_>°¾Qúég®a,>ž86‰>ý@ü¸ù€ÉÜõ 潯,^WKÆl‰:ņVËA|õêëŽ]{ìú£–Œs{þ­ád'&> Ýi-ì%Éût£ÛÑTm m Ð÷áå³ó"MºZE•ô§R‰‚T*QU*a>Š&œ9‹&ê{ñ57™ò`öÑÛO}ìí—S·?:+#~âì׿±¶¶¶ºº¶º¶kk«ázu5Ì@¿öÀÙ»™¨¹'—––––——–—ÒÁÒÒr¸^^sÑ/˜oc•$I’$qœÄÙ IâpÇaî`zO:çœsáp„wÃá±sÖ´BBÍ_Ô¤½bþºíÀúÂÔÿEþkV­À´n^–IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626012 PyQt6-6.6.1/examples/dialogs/configdialog/images/update.png0000644000076500000240000002015014532151332022505 0ustar00philstaff‰PNG  IHDR`Tò¥Ô pHYs  ÒÝ~ütIMEÕ) týÃÊbKGDÿÿÿ ½§“õIDATxÚí\ ¸Õ•®[½¼~ûÆ[X»lB‚€(Q1âF@Q¢fâDÌ DpAKçË¢IŒÆI&Ž£d&åSBqb6 @áñöýõë·t÷ÿÞsï­[UýˆæÓ/É7–دººêVÕ©³üç?çËf³Žã¤Ói×u9çXgŒ9zÁû«ÙH+æ'³[x{Ë?ÖøXD",“É@4ÎûK®EÈ 444´~ý†h4Îy²eøÏ!3îpùÕ˜üUnef‹þÊ­Oy 5 ÞÑÛíïv|“Îd*+Ëo½å–(4ª§§»»'uíu×õ÷§„‚1‚Ç0—áoNeÞ ¸Ü„½ô¾¤¤Ìh³øÎ͵‹´’‹ òYÝ““k|9pP@ïÁø84q“ɾ§ŸzÇFÉêJKKËËËúûóèþâ±h$ç™l&“f–Â]¹òú¤êÐC‹ÇÓi¨#¤ñ„ÉÌu¨º‹k•·šë‚ãÓ ³\ônOŠÇóJŠ‹±-J£C™t®:‰B"GŽÔ7·4•dIºê,t¥ä™ôP[{[EEeUUu~A~¿Ë\õ´è G>Nó„å ðažpà†Ó ÷b|q?œCX„€ŒëÆ€¸%|ýâî.+-jkk-...,,‚“ sóÉ ÜÆÆ†ÚÚ‘îª^5mÚ a°Bû¼KÔzÍô:ÌÜ|Ój@ºÀ;¾ãKi05X”Ì•K¹B¿øÅËåe…>]9y–¨ÞÄI©$&‚|²?þø9çœSRR’H$òåB+yyyô‰%G£Â‹ Â7oÞüÊ+;ÇŒ%agÄ’ç5Hñ…wpé¡sûW‘¬Ìè³}óTàmŒæ_ß~öQ½&GÕ6ÿ4räȪªªX,–¯P¿ÁÏ›7¯³³clÝiÆ\œUÆZ·@¬DY.Qž“+™ôØî*Çá*¼¢ü‰‰òxf¾åŸô‰©˜Ïm]Ó ˆ‹Ì9¾C/…+|tÒžÜp­„!&Ü?§ïÙ,׋±),P"Bp‡@ Æ¸|&&ÔR Æ y±X˜@š9Ïf²±xL˜n$áaœ~¨!.Ò2Ë›zÖcÃ?¿U1Ƽ‚&ØÉxtßøZ"úsÒ …TØS" _ØBãC¢¯JŒZñ£¸ýL;Á1Å£±ŽÎŽƒ:t ¡áhGW'v„Ò¥úRÀý)ÁšªšÑcê&NšR^Q“É^È‹™h­àô¼µP+òs³XÉâ¯ÐE(¦ã¸´¶H\ ÔTlÁyž ÚlÆÔМQ0‹j;•¦ËÔMâ–¸1‚£ %S: ã¢\W"Å¡U2-t0RQQôøÚk¯¾øâ Ím-ímÅeå#ªk&L‚q¦”•—WŽ€Buwuµ45h<ºcÏ.žN®9súÌç/¨®™ìíI¥ú }ŽÊ \e*R6މ07×Q2f« "³µ„»$ò6œ)håzjªõS#¤¨òÐŽÖ*mba‰[#ÑàÁBw„8Ã:Œa;„›hx±ŽŽö¯~åKÏ>ût¢Xt湓&L‚XqÃGÞx¸ô(ç-m-¥•U¦N>{Î)•çô%“ÍMÍ ¯ìÙ½eë§OžrÞù7eZggg&=b E1ëæ,ƒ cøÌ ˜˜ÆA\z!/.Ýš%³bD#EÉi[ŒÞa¥´¤´?ÕÑ|ûÛß*]±bÕÂ…gŒ=¦”ÈKˆ‡ué €¹ë>ðç}‡Þ:ôÈŸ¯]7gÁ©“§N+(,ž8eZWgÇk{voÚ¼qöŒ™ŸX}]yňŽöv‰8ˆœ±°ŽFÓäœýÙ©••šìÔ$܃¸÷ÏÆAd_B÷p›Y½ѤõB¾™ôËP%Rwbö…v”—•¿òÊŽ?³ÈèöÛï=åÔÓ…¼ú‡†ñ___RçRÄ‘ÈØñ¦L‡ÕÒܸcÇÏ^Üòý—ùY±ª¼¼Ê¢³ç~è´íÿýÜõ7\»ò•ç/[ÑÝÝ $A‰Ž67×äóÂÂ(Û&ûÌgåT´÷ÕR‹Â à fE1eP$#£8fh {B@Ð…ÊÊÊêêš'þã[U[¸î† K–\¯˜ìímmmAàv)ñE¨bÚsÊÏ¡AD­®/¿ `ÅÊK/XvѳÏ|ïñïžqÒ)g.]•Áé–^ôіƆï÷ñ]¿ÜyË­wº‘¼¾d/ìÚg/Žm]Ìxf'ÆLªÁæøý% Ǹ4¥fzUõ´µ éeP/rPR©>{{Åå¹`ÁÉgžu6¾¶µµ ¹D"ì,R”.R墢ûüÊgœùðÝ›››ó ŠÀÑ456ž»|剋ÏûÔ§¯ÛùòK•#ªpuì½\t²21Š:c†²•/Kwn\5àâK/½ôÐC=ðÀƒ3gÎxêé-¤5òAeÕCΪ8+¾°¸ªp¶u²®pŸ±Xgij8zù«ÇŒ{Ï?þ•׎=¦®±iÚ¬F·ù»ÿ­/uîÒó[š›aàïh|ôa=„™ŒÇ…fý,uP~Š{¾ÛDôœÇÈÅ8 2FèË’%Kð­££Cj ‘ <= XÈ¡ÁVj‘þ› 1Å››N_tVeÕˆuë×]¸f]í¨QP×ÎŽŽ¢¢â57m|ðÞM‘XdÑY‹ÛÛZ’¸àíŽ/Ñ¢/qÕÿ\þåÍÎ¥AƒþÅ-)½`½««kÁ‚#FŒÀB þÿê—Ýlmiž>cÖý›ï{öë5= "«§·7ËûĆÛ>ÿ¥öìþâ]&ó.Ûyr—äÍ}Nš ²]OÀ–ÖÖVøiHF ![«y €pm„œ«É>nÅx^¼³³ý„y'Ý{ûæ-}­¯¿Ÿì5™L"ê]ñéï¹ÿGòó ¹À¨ïx|‹êwìŒU‘9QŠïú’U" ÃP"³ŽÈ¹§扸«Û|QBxïª/¸¸x,ÞÞÖrÊÂEk¯¸êù'¾KàÉqQnè©Q½`ɲM›nýB;¿ÓñÅ>Ž¥6Ö5 ˜&ÿØj²ƒFÀ›@}¡Ål üŠ:„’ß µÂ²À… «ÚÁu\üQScÃÅ«>6klÝ‹[·–”A·7ÒÞÞ>÷äSãU5÷Ý{GUuµ üŒ1þŽÆ÷_›'•¬õΈF’y(xŸeË–íÚµ ñÕ0ŠÄ=@DÁe%žp û÷ï‹Æ¢„H83Øžk‚Ægha gWÙ1óˆMÎ;­m-7~öÖË?vɾ “ÇOœ„‹FÛZZ–_vÅWî¼åG[ž=gñy¥ˆt‘ÃU­,"’麘¸;…]®*YiOÃñ‚ÂB(¢æºuëÖ®] Ï£€<÷î Q.ÌãXÔŽpàž={ Mþ„’I;Q´“KGfv¬¤¸Œ¹e+šþÒ© (¤tqIÁƒ÷}qÃÆ[êÖ\Oˆ~4Õ—¼ìºùڗ柴`ԨтKb:Óa?5žWcßþûR}ž Ê{–u1:¹Û›7oþ´eÓ¦ML555åååd2á’†%‡HÅ}ûö5jïÞ}«×|ŽJ¥” ‰Ø)˜PnЬJ—¸d³X8jÛöm õ(A9ŽU6‘$*eÜwI{[›‚ ANZ~¤øpº¸ð\b½¤¬lê”iÓ¦MG¨1V§pa">¡·Ývç[o½ÙÐPTl˜‚µzºFR¤_“'_]]ûñ1¢ H‰¿Ð^­ TNŒ¨”ÑUUœ7ííí¹ùsë,˜üŒã#ш©ÀpS TXLHóλn¿ãžû`M%E…P"œ 9Êig{ï¶­§ô¶Î›÷"&fk1˜4U ƒÃýÆ×ÿ}á³W¬X ßÏ')dqƒx>‘hU­YøqŽŠ5TXb¦­‚€Ì<Üý,HiþF Ð O>ùÝÅ‹Ï^½zÍÛ¬/!;ûú3?XyõÚTOWV¢z0µÿôÏŸØû»_­»á_ÿŠ‚ÕòåË׬¹ö¬³Î°€o¡k5u1&ÓH&y.ÂS*kÌ'lÃTg3,8·êâJe¾Nì:Ñvú+“ÕkG}:ÊÆÉ=vt´-_~¹¡ j×σúZV]zéSÏ>w`ïŸÆŸ€J(N ~vÆgïúùöï?óôŠ‹V*Ôê?J;oN¬9"ÔA Oš4á­ÃoüÌÞÞ$'SO˜É(æèþšŒÂÕN€ùåc<óQQÞm8£)ÿ¡¹né‡õÉUiA»ã –Ìà"TóEÉŸð÷ë \×\}å=<ùS’…AF}==KW~ô‰ï>zÖÙç ×Dìe‹¢„'Yz$SÒÁK À¹¿ô(E Sq›,ÌäûQ•Î_šÐ€ÒÌ¡C‡äU ‹Cé…^xä‘GHƒ”bZ5Z ÄÞæúæÆ£ÂmK:´Ü˜±có+ª.¹øâÙsæ§…•ˆª/ØCuëúë¯Ç8&§Ý=ÊU.éæ,õêÐàò¦až†1¯ù" }*Æ—¨}¨®®)]}ccã­·Þ:þ|Ü€ ŠÐ¼$‹”XbzÁ ~nDåÎm[W^uMo—pÿn¤¯·÷Œœ÷ücÿËu×ñ–Ñ8ó¾ûî{ôÑGo¸áx• ®‘Ç0µìaÑfhCÌêJˆBÜø47Œ ý žULÜ Ünþðáè…Lž<™""HR´‚=± ðÔÓNëk­oki† …µJ½7abùȺ];w––•qnã(i¹øâ‹9bõîqûšT6¯âvàF\SÛâ6nÆ“ûóÁ޶6a\O®®ø8^Â#ªùfÁ¸Úã%EÔ ßÜÔÔ„û$g”£øçq{Ù²ŠÊÍ›óë—_,@¼G ); ûû?´èìlÙâ ùÆl½£…„NC‘³3M–|¸JVv²þqé¢ YX&¤ ¶C:v67wÊ”GW¤ƒçz]ÕFt‘Ä0M*0o|Ç ü#"A¸TxîØX|8ú5¢… 6ìÌ·ï@aÓ¦ÏèË8ÿûê¯KËJ¡)FF¶>’&ÚU?ÇT=(½¡d•Ì-pnÙÓ3ÐÛ‹B…#õÙÍ‹GìD[^æ¦ú‡L€{÷nŠº¸øi=ŠcÂ!ø±cÇ7nÌ¿ý XZ•6É’Ò‰§žþ“ŸþÝdF@6 H€ÛŒéÓ )ŠœùTKü„ºU29tà Ú¨bàÛó ⨤#ÿ()v‡xz(Ãá-“×ñÊBÍ…PUÞ&I7ð ÒS-ñ—»þ궤I|%9sÝL·DFÞµ¤çÎÙúòîS>¼ˆRn¸jdgœ3÷[;^hkm)*.!¡˜A(®›ö^¯€lt¢É\»Æ6x$Õ#k‹‹‹ò˜ˆ‘êêìLöu¹™,І38$¼C<1%S-€À¸Ë|‘@‘ŸÒà˜Õ^á –žû@ƒQ+[R6ú‡«ž3wî@W{ksz É·eD›êˆê1ãvî܉hEMÏ6D°ƒy>…l=ªOŽ8½í¢T×Ö–¦ú…cN$"ù ×ü<›~ýõ–ÎÎ~ÈHú©wÁÐèR à «Œ¹TbæÌw^PX4aìè½øØñ˜wÑ69넹Û_ø9Ž%ÎOÐlþÅ3ì‰Ñ¹ºJ·ó¨L¢ÕlUUaAAþà ô×ä¡ ³ê}ý£¯¿ÑÜÛ;hÀ²´8îz” —ì9UÄj»ÂDÞžšF÷]º­A6X‡"”••¡e ý]X ÈÏ/XvÁ‡Þøƒ#Û\YhJüàì9-’ä/‚(›‚hξ ;t6E cáú‚¼j­ŽÇÝÊŠ¢úú>@sÕ<ª;öóó£ùù¼«³«¹99óøšÊÊœ×X«×8 œ9SÁRµ²©5ckÒ­ÛLÈ“ê¶mÛ&< s¹¡ýXXs÷ýþ7íÍ͕蛑;ÃGÔM˜tÓM7žtò-]º”Ò ãì|粈kÒþjŸNóÖÖ$š¤4ÑL•C*•îîáes献(ÏÇ#qÝw)Œ³ó÷®ü±'¾ÓŽÇ4nÚ@aeº¤&SZséµëò%¨Òb. woOÏù®˜»ðÌ¡h"Q6âɧž†¡Ùæ>]¾jâ‚3¯cO5íÅb‘¦¦d_II‚†o–@L¥¥‰ùóÆ%ÀŸ2.DÀôáú–DŠñ€¤®¬Myì…ë:&\ÒY‚_pN{G¶©%3¶Î5ì¢éëV¥ó,´µÑbø³¬µ N¡‡›Ä4œŸ½°ý oºìšOž8ÿdp¯‘hÄÎNá•ÿôú óóÀ²#¦QG#àðÐãð‘GT›Ï‘[Ã!”–$d»..ËASÕ`š#IJz³¹²2fªt!&_Ñ'¸¶î¡/‰Kä1Ptííé’"Ž #¡ëPŸè°ŽÙî´[ßÈ®‘Ù~øŒEHý¿üÕ¯Ú·÷²+®J R™G¤Â@……¯îÙ=}úô!©5†KÌíƒüþÁu4ÍO”+é’HFÑÍ)ÕN€ ùHàŒ¦L©ª©®Œ‰ÊÍ"Ñ)©ìÇŠ KGÁm¶¶¡¯aðHýPkkº¸Hv° ¯@·úÇs›Xö/-¸ øÝªêÚÍwÝÕ¸ÿwßúY$\ð¢ëYX4Šþœ{÷Κ9ù$b»¡°™ë1ÑÃáªp¨C˜›þ]»¼%¤æÌšU-ÂÈŽ©&;®²\2GÀì8ÅÅnii4ã " ²²¾èô%³]]ÂÇALº‘Iw1 #ÓWk0´Ý?IªB9Çú Ÿ9~òøÏ^¿öиJÈ ¨°ðÏûö¡†PS[‹ìŽ'“(2OTëŒj©M,@¡úK'\-c¹¨U»S»–—GÀ6¨YYPùx,ÓÔ”íêŽT”œ°c˜˜-)ñ¬i¡5nS¶£6[P‘Ë–-?nòqÞyÛ…«.»dÕ¥à6~µ{×䉳’lµÝР.ÓQÌ—gä$k”1¹†Le:QðfXÄ¡uîä žÏ•s=[ P^XÀ»»Óí׊›·c»»ÔVœð‚»Œ&LœxûÆ/ýäÇwÞv3Ú¤öÿéé3fôˆÖϬãs™˜GfèwíÌÕê‚°h@›"uT–ØÎu{590¹%ÀF#ÂO£›:5ÁŽ÷&Yÿ`tÂøÄØºg&/wÃ&f4( ¦œ2¢{†Ž`@ÄrìwóÍ7æE/øÈâTJ¾(™û2Ÿùò îõIÓĂӆüó#Î,·“ö·Ô0šÅ.xéc³ô  Š0ªÉ4/ , afOÓ4ÝaBj?öÍzô&6+ÓËrkžlXÈ2lS¦$ )/„‹C‡x_*]Zær]ñÆuYØûØ&fd.·Ù¢±¥CtèíœõU[ƒüÌ\›7Wƒ¼7À_L–af-÷7ªƒU纙]Ø€_zÈ)(`Y=ûK6R÷«*áã2°g]]|ï>(”ìh0PƒÑh>îŠn€œ‹¡M=¢ÊDÀ¾¬ù‘ÌôáÊ¿æ,~ËjaȈÛĹÌs=UÈ?1Ÿ&ݱˆN ä9o¾•Åê¢b7›V„ˆQz†½j%Á,1(”¤¬™˜Ó6 ²~í„)Þ²Ù(ŒTÌ  ¢uFÕ¹¥ã–cèŽáœ´ž5œÎ8‚„"n»¾>“Ÿ¦ÏÚE_‘Wm†î¡Û)*ŸùSTCƒÂNǨ‘Q @˜³Î_äqBQ,˜jxäv5Ø¥ê”#µæ`É ð§þh6‘'&‚êˆGÝ‚B·7i¦ŽKý1œ<"~–“²Rã="×±ÆÏòœÌz|UKXÆïP‘+ >áG>Mˆ¥öZséqE f”T.5ÀÈ6t¢K¹‡—iª¨û A*¸È?Ó<=aÉ$GEžXMéWU ‡HbµÊ4-iOƒ»ŠÉdûæpP·}3ILj)<'4ì† mfk‘7®.(Û8ˆûÍ=SfîQ(QB2‰i-,Œ46f0Í©¢2‚Š4wr„æï a¡9lv]Ì6±°ú¹I}ŒÛ Ì\¿ÇXY.s˜æ7dB¡5H;'c3>Ì«D¯v~BLkðsåÔ‘OäWÅš[ÒmCS&ƒûtt£iùP„¿–vVZ©†!±g#³ŒhŒúçõ¿3óiŒÝ‚焆ó¨/«’Éú0.t¦³;Ôy2‰¦gDeLôVTNRÔà‹X,lhü¨£ãHÞ!d”:ÙE±œÆeüNX}ræÛ EÓ×Á¹õjŠ@,ã<<ÝZùW˜Uw7©Á tƒl ±7™©®rËË"¨Çf².jfcQ¯oÕ f"B:˜öA†ˉ›Mb^o¿`*îxK:Õ°2Ç÷Z—P6¤Ë¯ŒÑC@gH@Ÿ••F(p]fݎשj•¢YÎñåËËŠ >i¬ét KØdì'8ÄÚ+éD£4‰Âp 9ÀDò„L,”¦rgÔ(p`N^žx>‡ÞL'Áá“Vfs’HÁ)Æ¡×e!…‰†˜‡¬ Â7~üxÈèÕW_E•†Â9J£1QÙ‰¯1+nh {耓FâjtsÇŽ«W¯¶i3ë(ǼšÂá^ß"÷šY‘/Xob Ý)Ë“ôìà?>öÇ×ãy(%pÕVm„>ô!W¿Fžž,ÇwdëtIhŠêêj]ʬ™³ž{î¹9sæÚÝ–v y;ò·‹ñáb¼ÝÊI 6¦át÷ôŒ5 )”¬ È™æ\},„zkŽ“KDÌêv•::ÈôI‘X¬íº Ý?>ž!èOô]üò—»î¸ãT#ôÛ 4ú¢¡0›«%< ‘bΙ_!PŽð>pÿTAÜ¿ÿ7Ý$D–õ8騉î6>†å¦\™“× ÷ò˜ðøê.»çž{›š¿õbŒ+{1648Ò¿€Š;ö ÿr¼|‹å²:;z‹ 0ü´>iÒ$À\<*Ý j€"#~ÉOV½TÎê¶ßPdf©’!WI·^×ç »ô©ñ1ÈÐ`º¦º¦¶¦æoòÞM$6hB“Í”bZIT½©E3ÛWƒÊ³%*æ`) É®káƒdV1fnܸћ É}/ dóá÷a„æŽåX·fßý½ø‰š¨‡Çóä¤n_B.äí„æu·.}¸ÿ¾ÇÿÓ îXN>áýÅ÷6àc «ÿÏï“6ì3_Sޱø4èý%¼¸a–7§6æä_»åd¶þ¡Çÿ?Ÿ)ÎTàœÏIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.615418 PyQt6-6.6.1/examples/dialogs/extension.py0000644000076500000240000001052214532151332017213 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import Qt from PyQt6.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QGridLayout, QHBoxLayout, QLabel, QLayout, QLineEdit, QPushButton, QVBoxLayout, QWidget) class FindDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) label = QLabel("Find &what:") lineEdit = QLineEdit() label.setBuddy(lineEdit) caseCheckBox = QCheckBox("Match &case") fromStartCheckBox = QCheckBox("Search from &start") fromStartCheckBox.setChecked(True) findButton = QPushButton("&Find") findButton.setDefault(True) moreButton = QPushButton("&More") moreButton.setCheckable(True) moreButton.setAutoDefault(False) extension = QWidget() wholeWordsCheckBox = QCheckBox("&Whole words") backwardCheckBox = QCheckBox("Search &backward") searchSelectionCheckBox = QCheckBox("Search se&lection") buttonBox = QDialogButtonBox(Qt.Orientation.Vertical) buttonBox.addButton(findButton, QDialogButtonBox.ButtonRole.ActionRole) buttonBox.addButton(moreButton, QDialogButtonBox.ButtonRole.ActionRole) moreButton.toggled.connect(extension.setVisible) extensionLayout = QVBoxLayout() extensionLayout.setContentsMargins(0, 0, 0, 0) extensionLayout.addWidget(wholeWordsCheckBox) extensionLayout.addWidget(backwardCheckBox) extensionLayout.addWidget(searchSelectionCheckBox) extension.setLayout(extensionLayout) topLeftLayout = QHBoxLayout() topLeftLayout.addWidget(label) topLeftLayout.addWidget(lineEdit) leftLayout = QVBoxLayout() leftLayout.addLayout(topLeftLayout) leftLayout.addWidget(caseCheckBox) leftLayout.addWidget(fromStartCheckBox) mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SizeConstraint.SetFixedSize) mainLayout.addLayout(leftLayout, 0, 0) mainLayout.addWidget(buttonBox, 0, 1) mainLayout.addWidget(extension, 1, 0, 1, 2) mainLayout.setRowStretch(2, 1) self.setLayout(mainLayout) self.setWindowTitle("Extension") extension.hide() if __name__ == '__main__': import sys app = QApplication(sys.argv) dialog = FindDialog() dialog.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.613791 PyQt6-6.6.1/examples/dialogs/findfiles.py0000644000076500000240000002011014532151332017134 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import (QDir, QIODevice, QFile, QFileInfo, Qt, QTextStream, QUrl) from PyQt6.QtGui import QDesktopServices from PyQt6.QtWidgets import (QAbstractItemView, QApplication, QComboBox, QDialog, QFileDialog, QGridLayout, QHBoxLayout, QHeaderView, QLabel, QProgressDialog, QPushButton, QSizePolicy, QTableWidget, QTableWidgetItem) class Window(QDialog): def __init__(self, parent=None): super().__init__(parent) browseButton = self.createButton("&Browse...", self.browse) findButton = self.createButton("&Find", self.find) self.fileComboBox = self.createComboBox("*") self.textComboBox = self.createComboBox() self.directoryComboBox = self.createComboBox(QDir.currentPath()) fileLabel = QLabel("Named:") textLabel = QLabel("Containing text:") directoryLabel = QLabel("In directory:") self.filesFoundLabel = QLabel() self.createFilesTable() buttonsLayout = QHBoxLayout() buttonsLayout.addStretch() buttonsLayout.addWidget(findButton) mainLayout = QGridLayout() mainLayout.addWidget(fileLabel, 0, 0) mainLayout.addWidget(self.fileComboBox, 0, 1, 1, 2) mainLayout.addWidget(textLabel, 1, 0) mainLayout.addWidget(self.textComboBox, 1, 1, 1, 2) mainLayout.addWidget(directoryLabel, 2, 0) mainLayout.addWidget(self.directoryComboBox, 2, 1) mainLayout.addWidget(browseButton, 2, 2) mainLayout.addWidget(self.filesTable, 3, 0, 1, 3) mainLayout.addWidget(self.filesFoundLabel, 4, 0) mainLayout.addLayout(buttonsLayout, 5, 0, 1, 3) self.setLayout(mainLayout) self.setWindowTitle("Find Files") self.resize(700, 300) def browse(self): directory = QFileDialog.getExistingDirectory(self, "Find Files", QDir.currentPath()) if directory: if self.directoryComboBox.findText(directory) == -1: self.directoryComboBox.addItem(directory) self.directoryComboBox.setCurrentIndex(self.directoryComboBox.findText(directory)) @staticmethod def updateComboBox(comboBox): if comboBox.findText(comboBox.currentText()) == -1: comboBox.addItem(comboBox.currentText()) def find(self): self.filesTable.setRowCount(0) fileName = self.fileComboBox.currentText() text = self.textComboBox.currentText() path = self.directoryComboBox.currentText() self.updateComboBox(self.fileComboBox) self.updateComboBox(self.textComboBox) self.updateComboBox(self.directoryComboBox) self.currentDir = QDir(path) if not fileName: fileName = "*" files = self.currentDir.entryList([fileName], QDir.Filter.Files | QDir.Filter.NoSymLinks) if text: files = self.findFiles(files, text) self.showFiles(files) def findFiles(self, files, text): progressDialog = QProgressDialog(self) progressDialog.setCancelButtonText("&Cancel") progressDialog.setRange(0, files.count()) progressDialog.setWindowTitle("Find Files") foundFiles = [] for i in range(files.count()): progressDialog.setValue(i) progressDialog.setLabelText("Searching file number %d of %d..." % (i, files.count())) QApplication.processEvents() if progressDialog.wasCanceled(): break inFile = QFile(self.currentDir.absoluteFilePath(files[i])) if inFile.open(QIODevice.OpenModeFlag.ReadOnly): stream = QTextStream(inFile) while not stream.atEnd(): if progressDialog.wasCanceled(): break line = stream.readLine() if text in line: foundFiles.append(files[i]) break progressDialog.close() return foundFiles def showFiles(self, files): for fn in files: file = QFile(self.currentDir.absoluteFilePath(fn)) size = QFileInfo(file).size() fileNameItem = QTableWidgetItem(fn) fileNameItem.setFlags( fileNameItem.flags() ^ Qt.ItemFlag.ItemIsEditable) sizeItem = QTableWidgetItem("%d KB" % (int((size + 1023) / 1024))) sizeItem.setTextAlignment( Qt.AlignmentFlags.AlignVCenter | Qt.AlignmentFlags.AlignRight) sizeItem.setFlags(sizeItem.flags() ^ Qt.ItemFlag.ItemIsEditable) row = self.filesTable.rowCount() self.filesTable.insertRow(row) self.filesTable.setItem(row, 0, fileNameItem) self.filesTable.setItem(row, 1, sizeItem) self.filesFoundLabel.setText("%d file(s) found (Double click on a file to open it)" % len(files)) def createButton(self, text, member): button = QPushButton(text) button.clicked.connect(member) return button def createComboBox(self, text=""): comboBox = QComboBox() comboBox.setEditable(True) comboBox.addItem(text) comboBox.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) return comboBox def createFilesTable(self): self.filesTable = QTableWidget(0, 2) self.filesTable.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) self.filesTable.setHorizontalHeaderLabels(("File Name", "Size")) self.filesTable.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) self.filesTable.verticalHeader().hide() self.filesTable.setShowGrid(False) self.filesTable.cellActivated.connect(self.openFileOfItem) def openFileOfItem(self, row, column): item = self.filesTable.item(row, 0) QDesktopServices.openUrl(QUrl(self.currentDir.absoluteFilePath(item.text()))) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.615078 PyQt6-6.6.1/examples/dialogs/standarddialogs.py0000644000076500000240000003325314532151332020350 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import QDir, Qt from PyQt6.QtGui import QFont, QPalette from PyQt6.QtWidgets import (QApplication, QCheckBox, QColorDialog, QDialog, QErrorMessage, QFileDialog, QFontDialog, QFrame, QGridLayout, QInputDialog, QLabel, QLineEdit, QMessageBox, QPushButton) class Dialog(QDialog): MESSAGE = "

Message boxes have a caption, a text, and up to three " \ "buttons, each with standard or custom texts.

" \ "

Click a button to close the message box. Pressing the Esc " \ "button will activate the detected escape button (if any).

" def __init__(self, parent=None): super().__init__(parent) self.openFilesPath = '' self.errorMessageDialog = QErrorMessage(self) frameStyle = QFrame.Shadow.Sunken | QFrame.Shape.Panel self.integerLabel = QLabel() self.integerLabel.setFrameStyle(frameStyle) self.integerButton = QPushButton("QInputDialog.get&Int()") self.doubleLabel = QLabel() self.doubleLabel.setFrameStyle(frameStyle) self.doubleButton = QPushButton("QInputDialog.get&Double()") self.itemLabel = QLabel() self.itemLabel.setFrameStyle(frameStyle) self.itemButton = QPushButton("QInputDialog.getIte&m()") self.textLabel = QLabel() self.textLabel.setFrameStyle(frameStyle) self.textButton = QPushButton("QInputDialog.get&Text()") self.colorLabel = QLabel() self.colorLabel.setFrameStyle(frameStyle) self.colorButton = QPushButton("QColorDialog.get&Color()") self.fontLabel = QLabel() self.fontLabel.setFrameStyle(frameStyle) self.fontButton = QPushButton("QFontDialog.get&Font()") self.directoryLabel = QLabel() self.directoryLabel.setFrameStyle(frameStyle) self.directoryButton = QPushButton("QFileDialog.getE&xistingDirectory()") self.openFileNameLabel = QLabel() self.openFileNameLabel.setFrameStyle(frameStyle) self.openFileNameButton = QPushButton("QFileDialog.get&OpenFileName()") self.openFileNamesLabel = QLabel() self.openFileNamesLabel.setFrameStyle(frameStyle) self.openFileNamesButton = QPushButton("QFileDialog.&getOpenFileNames()") self.saveFileNameLabel = QLabel() self.saveFileNameLabel.setFrameStyle(frameStyle) self.saveFileNameButton = QPushButton("QFileDialog.get&SaveFileName()") self.criticalLabel = QLabel() self.criticalLabel.setFrameStyle(frameStyle) self.criticalButton = QPushButton("QMessageBox.critica&l()") self.informationLabel = QLabel() self.informationLabel.setFrameStyle(frameStyle) self.informationButton = QPushButton("QMessageBox.i&nformation()") self.questionLabel = QLabel() self.questionLabel.setFrameStyle(frameStyle) self.questionButton = QPushButton("QMessageBox.&question()") self.warningLabel = QLabel() self.warningLabel.setFrameStyle(frameStyle) self.warningButton = QPushButton("QMessageBox.&warning()") self.errorLabel = QLabel() self.errorLabel.setFrameStyle(frameStyle) self.errorButton = QPushButton("QErrorMessage.show&M&essage()") self.integerButton.clicked.connect(self.setInteger) self.doubleButton.clicked.connect(self.setDouble) self.itemButton.clicked.connect(self.setItem) self.textButton.clicked.connect(self.setText) self.colorButton.clicked.connect(self.setColor) self.fontButton.clicked.connect(self.setFont) self.directoryButton.clicked.connect(self.setExistingDirectory) self.openFileNameButton.clicked.connect(self.setOpenFileName) self.openFileNamesButton.clicked.connect(self.setOpenFileNames) self.saveFileNameButton.clicked.connect(self.setSaveFileName) self.criticalButton.clicked.connect(self.criticalMessage) self.informationButton.clicked.connect(self.informationMessage) self.questionButton.clicked.connect(self.questionMessage) self.warningButton.clicked.connect(self.warningMessage) self.errorButton.clicked.connect(self.errorMessage) self.native = QCheckBox() self.native.setText("Use native file dialog.") self.native.setChecked(True) if sys.platform not in ("win32", "darwin"): self.native.hide() layout = QGridLayout() layout.setColumnStretch(1, 1) layout.setColumnMinimumWidth(1, 250) layout.addWidget(self.integerButton, 0, 0) layout.addWidget(self.integerLabel, 0, 1) layout.addWidget(self.doubleButton, 1, 0) layout.addWidget(self.doubleLabel, 1, 1) layout.addWidget(self.itemButton, 2, 0) layout.addWidget(self.itemLabel, 2, 1) layout.addWidget(self.textButton, 3, 0) layout.addWidget(self.textLabel, 3, 1) layout.addWidget(self.colorButton, 4, 0) layout.addWidget(self.colorLabel, 4, 1) layout.addWidget(self.fontButton, 5, 0) layout.addWidget(self.fontLabel, 5, 1) layout.addWidget(self.directoryButton, 6, 0) layout.addWidget(self.directoryLabel, 6, 1) layout.addWidget(self.openFileNameButton, 7, 0) layout.addWidget(self.openFileNameLabel, 7, 1) layout.addWidget(self.openFileNamesButton, 8, 0) layout.addWidget(self.openFileNamesLabel, 8, 1) layout.addWidget(self.saveFileNameButton, 9, 0) layout.addWidget(self.saveFileNameLabel, 9, 1) layout.addWidget(self.criticalButton, 10, 0) layout.addWidget(self.criticalLabel, 10, 1) layout.addWidget(self.informationButton, 11, 0) layout.addWidget(self.informationLabel, 11, 1) layout.addWidget(self.questionButton, 12, 0) layout.addWidget(self.questionLabel, 12, 1) layout.addWidget(self.warningButton, 13, 0) layout.addWidget(self.warningLabel, 13, 1) layout.addWidget(self.errorButton, 14, 0) layout.addWidget(self.errorLabel, 14, 1) layout.addWidget(self.native, 15, 0) self.setLayout(layout) self.setWindowTitle("Standard Dialogs") def setInteger(self): i, ok = QInputDialog.getInt(self, "QInputDialog.getInt()", "Percentage:", 25, 0, 100, 1) if ok: self.integerLabel.setText("%d%%" % i) def setDouble(self): d, ok = QInputDialog.getDouble(self, "QInputDialog.getDouble()", "Amount:", 37.56, -10000, 10000, 2) if ok: self.doubleLabel.setText("$%g" % d) def setItem(self): items = ("Spring", "Summer", "Fall", "Winter") item, ok = QInputDialog.getItem(self, "QInputDialog.getItem()", "Season:", items, 0, False) if ok and item: self.itemLabel.setText(item) def setText(self): text, ok = QInputDialog.getText(self, "QInputDialog.getText()", "User name:", QLineEdit.Normal, QDir.home().dirName()) if ok and text != '': self.textLabel.setText(text) def setColor(self): color = QColorDialog.getColor(Qt.GlobalColor.green, self) if color.isValid(): self.colorLabel.setText(color.name()) self.colorLabel.setPalette(QPalette(color)) self.colorLabel.setAutoFillBackground(True) def setFont(self): font, ok = QFontDialog.getFont(QFont(self.fontLabel.text()), self) if ok: self.fontLabel.setText(font.key()) self.fontLabel.setFont(font) def setExistingDirectory(self): options = QFileDialog.DontResolveSymlinks | QFileDialog.ShowDirsOnly directory = QFileDialog.getExistingDirectory(self, "QFileDialog.getExistingDirectory()", self.directoryLabel.text(), options=options) if directory: self.directoryLabel.setText(directory) def setOpenFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", self.openFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.openFileNameLabel.setText(fileName) def setOpenFileNames(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog files, _ = QFileDialog.getOpenFileNames(self, "QFileDialog.getOpenFileNames()", self.openFilesPath, "All Files (*);;Text Files (*.txt)", options=options) if files: self.openFilesPath = files[0] self.openFileNamesLabel.setText("[%s]" % ', '.join(files)) def setSaveFileName(self): options = QFileDialog.Options() if not self.native.isChecked(): options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()", self.saveFileNameLabel.text(), "All Files (*);;Text Files (*.txt)", options=options) if fileName: self.saveFileNameLabel.setText(fileName) def criticalMessage(self): reply = QMessageBox.critical(self, "QMessageBox.critical()", Dialog.MESSAGE, QMessageBox.StandardButton.Abort | QMessageBox.StandardButton.Retry | QMessageBox.StandardButton.Ignore) if reply == QMessageBox.StandardButton.Abort: self.criticalLabel.setText("Abort") elif reply == QMessageBox.StandardButton.Retry: self.criticalLabel.setText("Retry") else: self.criticalLabel.setText("Ignore") def informationMessage(self): reply = QMessageBox.information(self, "QMessageBox.information()", Dialog.MESSAGE) if reply == QMessageBox.StandardButton.Ok: self.informationLabel.setText("OK") else: self.informationLabel.setText("Escape") def questionMessage(self): reply = QMessageBox.question(self, "QMessageBox.question()", Dialog.MESSAGE, QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel) if reply == QMessageBox.StandardButton.Yes: self.questionLabel.setText("Yes") elif reply == QMessageBox.StandardButton.No: self.questionLabel.setText("No") else: self.questionLabel.setText("Cancel") def warningMessage(self): msgBox = QMessageBox(QMessageBox.Icon.Warning, "QMessageBox.warning()", Dialog.MESSAGE, QMessageBox.StandardButton.NoButton, self) msgBox.addButton("Save &Again", QMessageBox.ButtonRole.AcceptRole) msgBox.addButton("&Continue", QMessageBox.ButtonRole.RejectRole) if msgBox.exec() == QMessageBox.ButtonRole.AcceptRole: self.warningLabel.setText("Save Again") else: self.warningLabel.setText("Continue") def errorMessage(self): self.errorMessageDialog.showMessage("This dialog shows and remembers " "error messages. If the checkbox is checked (as it is by " "default), the shown message will be shown again, but if the " "user unchecks the box the message will not appear again if " "QErrorMessage.showMessage() is called with the same message.") self.errorLabel.setText("If the box is unchecked, the message won't " "appear again.") if __name__ == '__main__': app = QApplication(sys.argv) dialog = Dialog() dialog.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.721776 PyQt6-6.6.1/examples/dialogs/tabdialog.py0000644000076500000240000001635114532151332017133 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QFileInfo from PyQt6.QtWidgets import (QApplication, QCheckBox, QDialog, QDialogButtonBox, QFrame, QGroupBox, QLabel, QLineEdit, QListWidget, QTabWidget, QVBoxLayout, QWidget) class TabDialog(QDialog): def __init__(self, fileName, parent=None): super().__init__(parent) fileInfo = QFileInfo(fileName) tabWidget = QTabWidget() tabWidget.addTab(GeneralTab(fileInfo), "General") tabWidget.addTab(PermissionsTab(fileInfo), "Permissions") tabWidget.addTab(ApplicationsTab(fileInfo), "Applications") buttonBox = QDialogButtonBox( QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) mainLayout = QVBoxLayout() mainLayout.addWidget(tabWidget) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Tab Dialog") class GeneralTab(QWidget): def __init__(self, fileInfo, parent=None): super().__init__(parent) fileNameLabel = QLabel("File Name:") fileNameEdit = QLineEdit(fileInfo.fileName()) pathLabel = QLabel("Path:") pathValueLabel = QLabel(fileInfo.absoluteFilePath()) pathValueLabel.setFrameStyle(QFrame.Shape.Panel | QFrame.Shadow.Sunken) sizeLabel = QLabel("Size:") size = fileInfo.size() // 1024 sizeValueLabel = QLabel("%d K" % size) sizeValueLabel.setFrameStyle(QFrame.Shape.Panel | QFrame.Shadow.Sunken) lastReadLabel = QLabel("Last Read:") lastReadValueLabel = QLabel(fileInfo.lastRead().toString()) lastReadValueLabel.setFrameStyle( QFrame.Shape.Panel | QFrame.Shadow.Sunken) lastModLabel = QLabel("Last Modified:") lastModValueLabel = QLabel(fileInfo.lastModified().toString()) lastModValueLabel.setFrameStyle( QFrame.Shape.Panel | QFrame.Shadow.Sunken) mainLayout = QVBoxLayout() mainLayout.addWidget(fileNameLabel) mainLayout.addWidget(fileNameEdit) mainLayout.addWidget(pathLabel) mainLayout.addWidget(pathValueLabel) mainLayout.addWidget(sizeLabel) mainLayout.addWidget(sizeValueLabel) mainLayout.addWidget(lastReadLabel) mainLayout.addWidget(lastReadValueLabel) mainLayout.addWidget(lastModLabel) mainLayout.addWidget(lastModValueLabel) mainLayout.addStretch(1) self.setLayout(mainLayout) class PermissionsTab(QWidget): def __init__(self, fileInfo, parent=None): super().__init__(parent) permissionsGroup = QGroupBox("Permissions") readable = QCheckBox("Readable") if fileInfo.isReadable(): readable.setChecked(True) writable = QCheckBox("Writable") if fileInfo.isWritable(): writable.setChecked(True) executable = QCheckBox("Executable") if fileInfo.isExecutable(): executable.setChecked(True) ownerGroup = QGroupBox("Ownership") ownerLabel = QLabel("Owner") ownerValueLabel = QLabel(fileInfo.owner()) ownerValueLabel.setFrameStyle( QFrame.Shape.Panel | QFrame.Shadow.Sunken) groupLabel = QLabel("Group") groupValueLabel = QLabel(fileInfo.group()) groupValueLabel.setFrameStyle( QFrame.Shape.Panel | QFrame.Shadow.Sunken) permissionsLayout = QVBoxLayout() permissionsLayout.addWidget(readable) permissionsLayout.addWidget(writable) permissionsLayout.addWidget(executable) permissionsGroup.setLayout(permissionsLayout) ownerLayout = QVBoxLayout() ownerLayout.addWidget(ownerLabel) ownerLayout.addWidget(ownerValueLabel) ownerLayout.addWidget(groupLabel) ownerLayout.addWidget(groupValueLabel) ownerGroup.setLayout(ownerLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(permissionsGroup) mainLayout.addWidget(ownerGroup) mainLayout.addStretch(1) self.setLayout(mainLayout) class ApplicationsTab(QWidget): def __init__(self, fileInfo, parent=None): super().__init__(parent) topLabel = QLabel("Open with:") applicationsListBox = QListWidget() applications = [] for i in range(1, 31): applications.append("Application %d" % i) applicationsListBox.insertItems(0, applications) alwaysCheckBox = QCheckBox() if fileInfo.suffix(): alwaysCheckBox = QCheckBox("Always use this application to open " "files with the extension '%s'" % fileInfo.suffix()) else: alwaysCheckBox = QCheckBox("Always use this application to open " "this type of file") layout = QVBoxLayout() layout.addWidget(topLabel) layout.addWidget(applicationsListBox) layout.addWidget(alwaysCheckBox) self.setLayout(layout) if __name__ == '__main__': import sys app = QApplication(sys.argv) if len(sys.argv) >= 2: fileName = sys.argv[1] else: fileName = "." tabdialog = TabDialog(fileName) tabdialog.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.61937 PyQt6-6.6.1/examples/dialogs/trivialwizard.py0000644000076500000240000000702314532151332020074 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtWidgets import (QApplication, QGridLayout, QLabel, QLineEdit, QVBoxLayout, QWizard, QWizardPage) def createIntroPage(): page = QWizardPage() page.setTitle("Introduction") label = QLabel( "This wizard will help you register your copy of Super Product " "Two.") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page def createRegistrationPage(): page = QWizardPage() page.setTitle("Registration") page.setSubTitle("Please fill both fields.") nameLabel = QLabel("Name:") nameLineEdit = QLineEdit() emailLabel = QLabel("Email address:") emailLineEdit = QLineEdit() layout = QGridLayout() layout.addWidget(nameLabel, 0, 0) layout.addWidget(nameLineEdit, 0, 1) layout.addWidget(emailLabel, 1, 0) layout.addWidget(emailLineEdit, 1, 1) page.setLayout(layout) return page def createConclusionPage(): page = QWizardPage() page.setTitle("Conclusion") label = QLabel("You are now successfully registered. Have a nice day!") label.setWordWrap(True) layout = QVBoxLayout() layout.addWidget(label) page.setLayout(layout) return page if __name__ == '__main__': import sys app = QApplication(sys.argv) wizard = QWizard() wizard.addPage(createIntroPage()) wizard.addPage(createRegistrationPage()) wizard.addPage(createConclusionPage()) wizard.setWindowTitle("Trivial Wizard") wizard.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3900065 PyQt6-6.6.1/examples/draganddrop/0000755000076500000240000000000014532160402015466 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372162.38913 PyQt6-6.6.1/examples/draganddrop/delayedencoding/0000755000076500000240000000000014532160402020604 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.616832 PyQt6-6.6.1/examples/draganddrop/delayedencoding/delayedencoding.py0000644000076500000240000001156314532151332024304 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import (pyqtSignal, QBuffer, QByteArray, QFile, QIODevice, QMimeData, Qt) from PyQt6.QtGui import QDrag, QIcon, QImage, QPainter, QPixmap from PyQt6.QtWidgets import (QApplication, QGridLayout, QLabel, QPushButton, QScrollArea, QWidget) from PyQt6.QtSvgWidgets import QSvgWidget class MimeData(QMimeData): dataRequested = pyqtSignal(str) def formats(self): formats = super().formats() formats.append('image/png') return formats def retrieveData(self, mimeType, qvtype): self.dataRequested.emit(mimeType) return super().retrieveData(mimeType, qvtype) class SourceWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.images_dir = os.path.join(os.path.dirname(__file__), 'images') self.mimeData = None imageFile = QFile(os.path.join(self.images_dir, 'example.svg')) imageFile.open(QIODevice.OpenModeFlag.ReadOnly) self.imageData = imageFile.readAll() imageFile.close() imageArea = QScrollArea() self.imageLabel = QSvgWidget() self.imageLabel.renderer().load(self.imageData) imageArea.setWidget(self.imageLabel) instructTopLabel = QLabel("This is an SVG drawing:") instructBottomLabel = QLabel("Drag the icon to copy the drawing as a PNG file:") dragIcon = QPushButton("Export") dragIcon.setIcon(QIcon(os.path.join(self.images_dir, 'drag.png'))) dragIcon.pressed.connect(self.startDrag) layout = QGridLayout() layout.addWidget(instructTopLabel, 0, 0, 1, 2) layout.addWidget(imageArea, 1, 0, 2, 2) layout.addWidget(instructBottomLabel, 3, 0) layout.addWidget(dragIcon, 3, 1) self.setLayout(layout) self.setWindowTitle("Delayed Encoding") def createData(self, mimeType): if mimeType != 'image/png': return image = QImage(self.imageLabel.size(), QImage.Format.Format_RGB32) painter = QPainter() painter.begin(image) self.imageLabel.renderer().render(painter) painter.end() data = QByteArray() buffer = QBuffer(data) buffer.open(QIODevice.OpenModeFlag.WriteOnly) image.save(buffer, 'PNG') buffer.close() self.mimeData.setData('image/png', data) def startDrag(self): self.mimeData = MimeData() self.mimeData.dataRequested.connect(self.createData, Qt.ConnectionType.DirectConnection) drag = QDrag(self) drag.setMimeData(self.mimeData) drag.setPixmap(QPixmap(os.path.join(self.images_dir, 'drag.png'))) drag.exec(Qt.DropAction.CopyAction) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = SourceWidget() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3897095 PyQt6-6.6.1/examples/draganddrop/delayedencoding/images/0000755000076500000240000000000014532160402022051 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.619914 PyQt6-6.6.1/examples/draganddrop/delayedencoding/images/drag.png0000644000076500000240000000172114532151332023477 0ustar00philstaff‰PNG  IHDR szzôgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<cIDATXÃÅ—ÍoUÅwf’‰Ó|Ô­ ÒMUQQ„Ê Ø Ä¢R,*$(k6,úÀ‚ ¨;,Ø‚ªÚEd¡4@…n!µœæÃµÓyï]óìŒÄ¦õTéJi<çÜsλï¨*÷ò ¸ÇWôzÿ5yòæ‘U¤0ÊÆª"QÀL0ë”À:Õ5>{ûs榪ºAï–Aœ}]Î<øÈ ¯:§¡ª}vÜ9T`ª4ï ‚˜­†~ñÞ‰êw‹ÿ¾ûáW|ÔUÕöPÕ¾uö4?ªªª:_¶«œZmµnjµº¤Æ½²ðuòæ‹|ûü£¼ÛMîU3à”,`|9Òû´‹1·X^®†!‡z::ùÆžáå—Žñ0!"rÇ!L½Ö.дàP,ª Íf# Uñðñ“£§ßúø™¹§€C@aÈUE1ž@ēɿmß¾ Ž–Ò §Íß‚Þ^¥Æzûy½ $;äîö\»gΠ위ºësÙÝCóDƒb×ýû. ¢¬óý”hì\—aº:áÇÀ8Pdm%pMZ¹mF;-€ôH9†0R¤VY±•ÅËö§/?J®,þиt•?€U`kHÔ@% S(¨UVíÂü¹ä×o>5åryýï:ËßÿÉoå*eàpX2 Œ¡L=è…è/ר\ªðûÒ þjÀð?†ÕÍ!8B­²læÏïz¸êAëÀ†ÝÒ_> ¬79÷ΩÂôõØŸ+,íºâen‰ÞÆïÀO3)Ç€ÃÀ-8èí¦ýÑÚzi‡Í^ÿùhŽWv$IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618539 PyQt6-6.6.1/examples/draganddrop/delayedencoding/images/example.svg0000644000076500000240000000520114532151332024225 0ustar00philstaff Sphere A gradient filled sphere. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3861167 PyQt6-6.6.1/examples/draganddrop/draggableicons/0000755000076500000240000000000014532160402020432 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.624157 PyQt6-6.6.1/examples/draganddrop/draggableicons/draggableicons.py0000644000076500000240000001352714532151332023762 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import (QByteArray, QDataStream, QIODevice, QMimeData, QPoint, Qt) from PyQt6.QtGui import QColor, QDrag, QPainter, QPixmap from PyQt6.QtWidgets import QApplication, QFrame, QHBoxLayout, QLabel, QWidget class DragWidget(QFrame): def __init__(self, parent=None): super().__init__(parent) images_dir = os.path.join(os.path.dirname(__file__), 'images') self._images_dir = images_dir self.setMinimumSize(200, 200) self.setFrameStyle(QFrame.Shadow.Sunken | QFrame.Shape.StyledPanel) self.setAcceptDrops(True) boatIcon = QLabel(self) boatIcon.setPixmap(QPixmap(os.path.join(images_dir, 'boat.png'))) boatIcon.move(10, 10) boatIcon.show() boatIcon.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) carIcon = QLabel(self) carIcon.setPixmap(QPixmap(os.path.join(images_dir, 'car.png'))) carIcon.move(100, 10) carIcon.show() carIcon.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) houseIcon = QLabel(self) houseIcon.setPixmap(QPixmap(os.path.join(images_dir, 'house.png'))) houseIcon.move(10, 80) houseIcon.show() houseIcon.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): if event.source() is self: event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-dnditemdata'): itemData = event.mimeData().data('application/x-dnditemdata') dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.ReadOnly) pixmap = QPixmap() offset = QPoint() dataStream >> pixmap >> offset newIcon = QLabel(self) newIcon.setPixmap(pixmap) newIcon.move(event.position().toPoint() - offset) newIcon.show() newIcon.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) if event.source() is self: event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() def mousePressEvent(self, event): child = self.childAt(event.position().toPoint()) if not child: return pixmap = child.pixmap() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.WriteOnly) dataStream << pixmap << QPoint(event.position().toPoint() - child.pos()) mimeData = QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.position().toPoint() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec(Qt.DropAction.CopyAction | Qt.DropAction.MoveAction, Qt.DropAction.CopyAction) == Qt.DropAction.MoveAction: child.close() else: child.show() child.setPixmap(pixmap) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWidget = QWidget() horizontalLayout = QHBoxLayout() horizontalLayout.addWidget(DragWidget()) horizontalLayout.addWidget(DragWidget()) mainWidget.setLayout(horizontalLayout) mainWidget.setWindowTitle("Draggable Icons") mainWidget.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3871973 PyQt6-6.6.1/examples/draganddrop/draggableicons/images/0000755000076500000240000000000014532160402021677 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625354 PyQt6-6.6.1/examples/draganddrop/draggableicons/images/boat.png0000644000076500000240000000532414532151332023340 0ustar00philstaff‰PNG  IHDRK6ó¢ ›IDAThÞÝš PT×Ç/Fð(ñ­åÑVfÒÄN3GH4> K€Dƒ„Gë´U[ѱÔ©Ähf’ÎôŸM­²¼ADDy(¢Ž¯Æ”qHíoï‰w¶ Âîra’|óÍÎwÎùÎ÷ýÿ÷œ{νç®ô,ÿýáŠ44iž={Ưr)…!*8 aÕÕÕÕÝÝ­üvvvb_‚Aa84³ôEƒ&˜wÊ"تŽg(‚&GŽ~}Öó¼xxzyzÎ Öj~öYCs3£)˜+l^I`CÁðéÓ§ OùpÛ3³vÄg¦®ñ™ÿú$Iú™ƒ­íO^{Uõé§Í°íîVÆY-TCqŠ1\·>yeW[ý_Újÿ³L#ÙÕ;»0}ϨqáÒ0'I’ll¦Nº|ùòœœœöövµîÌÁCYŒáúÄÿìkúœæ‚¡a~ˤ—ò&þhç‡i˜§$9 îâì¼xñâ-[¶äææ>yòDµY:›„`¤ }gnKÉ'ÍºìØˆ€’ôŠ£ã4—EÍö½{K««;w ÆŠ* *=±r`lÚô[¦aüÊ%Mº¬F]ÖQK(†…k ”Œ–Yã-ä;=K••PÐKLLœ:uŠ·¯_dàü«EÙhD —¯¯Ÿ«‹sRRꮟƒËЄ^rr2Ãu£µuÃÆ_ù½yMÅ x½¥…&pÃùûÁЄÞúõë‡^VV†³&.xñœfý!ƒ"•4á€Ûà‘T“¡ ½uëÖÙÚÚVUU1 ÙÖãÖ&hÜ›ŠrP ŠTÒ„n8Ii––„„;;;Ð?~ü¸µµ•EcMÜ2Ã(E*iÂ7œé¢TqQUg MF/>>~äÈ‘à~ôèÑÍ›7oݺœvìûñš€9ºƒ"•4á€Ît¡£ê#)©>zqqq£Fñǯ_¿~ûöí7ntv>Y³öÝ÷†¢ƒ(E*iÂ7œéBGº«;’’ZôºäèØØØÑ£Gƒµ­­­¥¥E žÖ:n’ŠþO6¼ÐpˆÏÍ ð™UòÏQ Šâ.PåÃñ‡WÌROWÕ?( »×B1ÔbØëÃÉÿá7ÏEp;|ø°‡‡‡·O`à æ÷¼ù ç/ôYèí»`¡Ïo ktþï·ýüœ]_gÿËŸÿÅ H%MÖÅÌð TðP<ÅŒ5¥Œò‘#G¦M›ÎÌǰýÛ×îØþ»Ä÷RSB·¥„¥&‡¦&‡m³TS¶&…¤ÿfõîÍkvü* Å H%M–FK5¨ &%`À$P lÀw=ÿ¨ü•ƒÏw©Û¶9ŽsZä~áLƃº?7é6f7ësšô†#] óUø7ê² ³š±‹bPTš,  À `À$P lcý¬4Øœšø¾µh˜$%DԞͨËËÔM+9ž^vrwé‰]hÙ‰ÝC¦ßf<¹À <@UÌ̾V…¤r¼+ЧNýÃÉåÇS&ŒÙ¿#¡¹øÐùÓ{‹§—ŸÚƒ’Oƒ­J"R€À€'ø(‡È&+e/;¾RÃ%Ë ‡Ó¿ßºmØK¶sßp;ýyjcQNéÉ]Åò`– ò`ÊÁ CG:’’À &ä>þ©ÒÏ“·˜´âÞåüzÙò IŠ {«êôÇó2uGÓôÇÓKN~wñ‰]** ‹A ‘ޤ¤0#ÖE1--~òîõàPÌÜܼn¯Œ7*}sl}avÅ—,øâ#@ˆ_ýñ]dS‚( N ‘ޤ¤€rfΣdésƒá†îêJKße7b䬙®G?ÙLú¢c(üOÓKÓqÕ­ÖciQœ$"IÅß‹,zÞ²ì$ÊxÒÞ»w—÷tv!í ¯â“{ΟÍÈÿûÎs_|¤;–^x4 ŰH•^! KpRˆtfNËy'“–÷Ò×fþÂÁÞnë†HÑJOíÉýëÀ‡æým§0ÌQÅ™î! KpR(Ë»'ߟê÷\i)îËÈmïðªÛ´Ï37^8w B~ ¬:›Qi¶œÏì£#Ý B(V\Çü¯Ïú/3¢—2iù0¶ju 3jù¢ÙÛ7FnJ Ùœº%9ÌLÅ™.t¤;AE@ãiiõ·jI•—þè#ƒ8/òñy{î\OOO/y^fë<ºÐ‘îâ¿òÂÖ9ð×7¾ã›|Š AÅ?I*¾˜™¼‰v[(ª¿yÅ¿ ò?„ç¾áqÁÔIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.631358 PyQt6-6.6.1/examples/draganddrop/draggableicons/images/car.png0000644000076500000240000000562314532151332023162 0ustar00philstaff‰PNG  IHDRK6ó¢ ZIDATx^Ü“A E! ÄZy÷¿±ú‹B6ÿ¾Y qh»3Öaï]‰ƒŸä'øÂ•žD½w±±»óPV‰ƒŸä'øÂ•žD½w±/3 Ëz’ˆÓ+v•ˆKøßûøˆîŒèNÿ«;1e•8øI^q‚/LPéIäÑ{Ñ/3¼—MLTWÇË¼Ç Ì ˜ ÅQ«&,tÑÆš&)0jbcÒÄÆ…M›k“nªMdÇ‚´M£±]¸±‹îœÆúA PHM hÄ&¶ QD‚0ߟ@}'žyÌ … Þܼ9÷ÜsïùŸ{îÜJ½ü ÃÞÒé4©Ÿ% G…sg•É0K2??_%—€g‡ôJ*Mæéô š=3_÷o÷=: ÃH&““““E7¨×ãÉs:#©³.ÃÈŸ› †BÐöB¬[·®©©‰0Ñáph.¬øÆ§¡u5YÎr€£ººzbbâСC‘HŽ)_M¯×û˵k‰lÝJ\î<~üWqñgdzDmb~¿¿¬¬¬»»Û4M8x©×wjÚpð R©TEEÅöíÛºtÊA|yöì§›7Ï:•̘ÇôôéÓª÷ߟ{ø"bû¹–h”””Dc±t*¥¡FæŸpx£Û]ätŠ‘ÙgØ‚ò$YP¸å,³0@°ê>? ¾åñmA…0U ;§§§‰!àËöIS„6mú½«kýúõlˆ j¡©Լɉ‰UU ©TÓÁƒÑdRÞF 0›¦^M}KËOµµ•6p¯9³äç ,™äü<ùöy{;£â‘K å-£¥†2;H¼ë÷ÿ\_¿ÑëM]ôZ XWÄítžíîö½Û·ß,-U#3µTΞ˜·c×._*õm}} KÍÎr®“³³Ië+=žJq ßÞÑ“ È0A_H0E4èóºJ¦r:ÐR 9¨C)ªíLÆP lÀc†HYÊÔR©Â£££ïUW½oêêÆƒA šåÜ%"¶ú¶üû@5Ø€Ç ‘˜Éa¯BŸœ8ñÎÔÔ÷>ßx(d0ÆÂ—ÛtÃåí¼|õØ^`0„¡”sú´…à [¶pö2Ø ¤)‘ÛŠ‹JæL‰üÒbt|!Œ…ÿ- "ši|Pg#ɤ®ç(aÏ@(mšÌ:%]8¹™'³ÊPÉ ­ ºT‘£FŒâb-N™j VÛ å3V…™¡®¢‹ð¢¾×EöY]¢Ú•¯;Ûܤ0hJ«˜°æmÚmUÓìþ¦ÎÚ¼ÈÓ$ë…½ú–õ^G…î‹j,UØÄ¶e½¼>ÁX%:׸\¥O!Ï/Óô:м?¡G÷¥˜' Ù¶À4Q"Ô¡èçŽ(Sœÿÿòf<§Î“N“Ç€•ÐE.×­áá¯_oðû÷]½ê»|ùëÎÎGáðZÞ¥",«VÑDµPlû(<ÓÙ‰"Ô¡ôØmÃÃÀ0-HêwÍy ‘}Åb|&I`?„¬áýÿXkë÷ïo8r¤Ùï¿ØÞ~æÒ¥±;ö·¶žðº\äñ”«UÓ^“‘ã­S¶³DºM“¿Ž§óܽ{´µ¡E¨C)ª Àä[Àºì TW&† RéôÐÔT±õ°ޏÄa•ÙZZfÊËÿ¼xþü‡û÷×TT;|øæ•+¿Þ¼ùãøøwwï: chfÆàƒ)¥K3O+!]L§iYXøÛèh(¾00páÉ6GŠP‡RT€Rž\¼cQÀc†èëßño»f×Åñ&ÉŒ‰¾)o1‘8)‚»0¦xiÁ¤ BèÔ¬ªÎ`d2u“¬UJ@\d‚­+7ÚEÇ–¤BÄDM¨P’!B‰ˆi ©I'íôÇrsyêP]Mz¸‹óî=çþçÝ{߃s/š﾿¯ïÆêêÕ¹¹ƒ¥¥I2·n ¯÷›©©µŠŠ»““ËË)¨H„••ÏNœ˜ï_Xø¨¤ä\*5ùè‘Q\Œ»LŠþó ¹uÉ\Ò+-.þ1>“LÖß=~üÃø8à„£N#Ñ! ÈôNM}àóATÄÚ'‘¥„¼;å–jÏýÙYoII_MÍJ$òKcã|8ükSÓÃpxïηR)©9jìTèÿ:;iš—…p²®.ÿÖÚú"]‹F_Ð"‘ÕÖÖL<~®ºš†Â#ý2„‚1.8âÈ)ÓlŽÅ€œº@€þŸS©=EE÷šš UCò¤ ÒÑÎ-rÂäÐ;ó6ɵ¶¶'ÍÍë±Øà±cåÁ >î3 ÁBy0?oz½/ÛÚ®Ø6s~«¾>ÛÑ‘M$².ÐP²çÏg/^ì8|˜†Â£¢aŒ ޏ€À ¸ûäƒÁàuÛ†$¡*éAJ’ˆØïÐU’÷ff ð ã¿ÿsË zôx IÛï‡0´õôD*ïreee`` š“D"AÕT|q+s¨Û¨©›˜˜ D$4$œÊm£9Ìÿ¦‚XË6pˆÚ{Û{SAÖ¼›ºž^>7ò=?ÔÙ'"ŸYHè1¶ë>û“®D†ò??|n›´üs¯ ¤ðïþ>,üÛ—ÿûkÀ7±ŒIEND®B`‚././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.62705 PyQt6-6.6.1/examples/draganddrop/draggableicons/images/house.png0000644000076500000240000000633414532151332023540 0ustar00philstaff‰PNG  IHDRK6ó¢ £IDATx^ÝZÛ“UÅÕïî}ΙÌ07D./Æ8XÊؤ,5˜ eåB´´ eâÃ÷–¿ yÈ¢F Cˆ¦L‚1&±," ŠÒ’Tåt¸Iødà8ÃÜÁt³ÔÒÙI¯Ô3“9wîìCì‚…#Ê@ OIE|m%ˆÿ¨´ró«¥4ôÀh¢¦¦¦=Ï<Ùݽ@âD(áªSfÖðþuñâºõŸi¼ü½•c“¡”d.„q8hŒ ÛÑ`T²MØSn:§!»ûµ“0Ñ;ÇŽ\·h‘Y=Â’–¢ÿHÛUÁïƒUkÖ¯kÿõŸ'E²#:–¡Åf#dôÞV†ÐhÉ•J©~xàØ•¦}ãºE×>ÈéÍ>Ñ”MÐ\†a6›½øÁ€××>ùÜãùüxdŒrÚE`HŠ,CB`yXª¤×¶»åY‹R>ÿøÀW|°wu?€\tý À‚dE ËÌ2D‚¥÷Á…ó«Ö®_ß^Ø÷íMNBµRd7Ò6¡ä8Œ‘Yñj=´Ò²F«D¾´D¶47|}çÁ7†êNãú³$g”¡˜91¼ ç^ÿíá/w ä‡' ¦/‚Ñs[ I4åoX´Và< ÐV*?©d~xrߎoüì`ïšþÇß¼a1ƒœÞ,Kn£"vWH™àr^8w®wmÿÆŽhò£%Ø€´Ñ°-‘¦M!Cª"0 œ(üYˆÌÅ^ÔÖæÆíO¼ógϼNý‹‡7^Fx4+0íw¡‚³¦ô˜ø³®Äöe;d¡;Y#„©÷>¼ñ›»ß¼¦@.^²„AÎ"Z8xçΞåü\‡Ùó Á“ª,^ÅP¬Á¢”fJKpÀe"Žn‹•õÙE%‚œ|öÁí9Ô»¶Ôµ{ÉRßñT‹Ð—ÞÙ3¯ï®N¹{û&€'„bxÌ4ü8úWLÉ-©£g„dÆÞrHj¹gû¦‡÷ê] .Yš9C<¤äÙÁA€wwgðÌ×6\C×â;®¤Ê¥Œ‡b:TMUÉÓå<'k«Ô‰“±ê dÛœÆG~uø•c¹´§‡f›œ*úðß¿emß=™§Ø042TI<šÔw LzP¨YšGÖWÉ&H´í­ÙëÒKÞ÷Àˆ]€–~þÀ†GŸ?¼jííï?ÚÓ³ÌIrºxÈðÞ¤÷…ÎÜSÛî¼2:)¤õœ2”¿ùLk©!ËÐàÃm÷¤d¯Ê ’Òq'I#Úš¾õÂëü°x@.[îK’}iZzï¿wú–u}›;êŸÜzçÐð¼'x,;†XÆœŒo܆@$äÌ•VÇÊ/æ÷œ”³É¡áɧ¶nØñÛ×K’öâ‘—.üî[o®X¹’€0Bwb‚à½Ó§në»cÛ¦]_Ú04:NÒÓFCk¥RZJ²HÆmÁW2B"é&•$oW éƒAV,Ö%„$IHíÍMýþð —Æß>zdùŠ•§ìi¼¿Ÿ<Ù·q 7o¿ñ¦?ýí”´ªœÍf‚ W(j)Ùâ¢Ï°A̽dUæ³÷ñý¤íO–zzï%obër*Ž‹aYIŠí7öüóÿß^µzÝÑC¯}¶·@)¥$Ó^>Ÿß²eËààà¶#Ki-5 åGG/-^TÅZTü¬Ñ°£.®;-嘇•TÇvk)É2÷Æ2¥ä™@¿øqsóÂööÖ(Š $TÎk¬¿tåjOOÏþýû[[[ki¡X°0uuÚ‹NÐa÷'?}ö¿{è•ý«>¼\‚Êk"¶*mRyL†à²ªû%h¬¬Ã†‘Â8uwo9qßÖ=ßý΃t,Æq?X @P—Ë%ö¥¹l–†‡ csK¯e)Ër•ÖÐ78 Ñ_Ô'u<EÑAjâäçíZ¿Ý½+£ž6Œ ‡ôÔ%*®×h,“{[Õ ˜šs¥L¦fm}l4%¡ÆÈK‰K&ÐÐd2Bk·ðÜ®¥íLò¶4zšl2c.0T¶H'âJBv ôâj>¾gÛ`7ärJkRO/¸ÈdÔ¥K£»~еesËðH¬u—‰hRn‡‚¤áÆÜž™©Šñio„™¦¼re¯B;·b!2bî«޹£O³—KÞUe[[ë]wÝ?4ôV ÚµŽ;1(çt¬©",W´<`"N¸¯Äôio„%:5ÌTBP¥dggÛ‚ÖùZëô¥-9ª††:€Rîn­Õh(d”·é—¼{C¼tÆÖÆ1Ðã1­"23-ó±CZs^OÌð oLÏ$B[…‡YÎXRR fäZÛûrÁW¥dye´¹¬š?W)…¶çtµÆvˆØ—’¯@ÚTê30âpr•À¾”±kÑ2/øóËíxâBwW}ñ £¡ÂSJCm}à7ËÛZ3ÅXHÖRjUÓaÀƒíÜ«öSÒu¸o”‹nínñÿú®ŽTYŽÒ¿sÌfÔ•‘ÂWv)FÔKÓêBO]„Ä£Íäiˆ®2q_JÃÙ@-hÊé³"ø£Ð(¿»áÑjêK«;Ë“ßR)å¿aB ã’†*:¯1Ü™bQ‡aɽ{pk„ZD!Z±M,CšHLëK«÷4ôÓ¾BŽ%²+\{]â“ß0JÅ["£pó Êf¬1—Hû$§c«„gÆ.niMŒ™=Mu2DL & ¸Â‹¢ªÄí±ƒ¥àÍ …ˆ¬)”`¹J`_ÊÄ(ÀV@×6úZJkL 6²ð±Š·Z†õÚÒ(Û3rOêÝÐÜbéM;ÖÒšzƒZŠÊfíPK¡¥’"Àã<§ú3m  £§ÕNëÐÊȈ(ÿéü V Vrr¦–™ZG|Þ—’¹k@•½wó—ês%#$ebçVW—=räø}·7ëY÷7–„$–ÙïH5>m{¬¤"ɶ¦vXZNmܽvêæÆàGß_˜ÏŸ„ÞÈÃ÷Ï[ûWßdåÔ ‘CÁM1ßy³zô † ¨½7š&—¾”š;=3ZŠ,3µEH&¡mŒ%™‘Â*#ê¥hßÌ·9’,ð;-%ŽSž«-÷X´æÙ¹»¨*V)cÇîä÷^¬ 7Lû`WX+¨ÂÍýˆä ab›5‘ŽF'O'í45]çó_ I÷ÒàðhQ‘õ¥è Î{;Kšâ¯kÚˆ¹ÁÛ'G/È}Çÿq­)ÏvÜå äµBtm¼ðò_.´Ì "Ü…S÷ùÍ9` ›½§ño–V,]ÔÔuÛ®Wçº 5ÖSþJËFmÿ›¨Ôlj¿Î²ëV±³[d.°˜òa762+oZ½þÅwŒ÷©T™±¦®.`Œè)<ÍÌß—2‘þ”ˆÿÂ÷¥©÷LTó}iUß&Rÿ†‚ètqÆ?妻§h&*èt•ÿíðTÓýïÉþoçøÃXt:?IEND®B`‚././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3880932 PyQt6-6.6.1/examples/draganddrop/draggabletext/0000755000076500000240000000000014532160402020303 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.616559 PyQt6-6.6.1/examples/draganddrop/draggabletext/draggabletext.py0000644000076500000240000001244614532151332023503 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream from PyQt6.QtGui import QDrag, QPalette, QPixmap from PyQt6.QtWidgets import QApplication, QFrame, QLabel, QWidget class DragLabel(QLabel): def __init__(self, text, parent): super().__init__(text, parent) self.setAutoFillBackground(True) self.setFrameShape(QFrame.Shape.Panel) self.setFrameShadow(QFrame.Shadow.Raised) def mousePressEvent(self, event): hotSpot = event.position().toPoint() mimeData = QMimeData() mimeData.setText(self.text()) mimeData.setData('application/x-hotspot', b'%d %d' % (hotSpot.x(), hotSpot.y())) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(hotSpot) dropAction = drag.exec(Qt.DropAction.CopyAction | Qt.DropAction.MoveAction, Qt.DropAction.CopyAction) if dropAction == Qt.DropAction.MoveAction: self.close() self.update() class DragWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) dictionaryFile = QFile( os.path.join(os.path.dirname(__file__), 'words.txt')) dictionaryFile.open(QIODevice.OpenModeFlag.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 195: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.ColorRole.Window, Qt.GlobalColor.white) self.setPalette(newPalette) self.setAcceptDrops(True) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Draggable Text") def dragEnterEvent(self, event): if event.mimeData().hasText(): if event.source() in self.children(): event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasText(): mime = event.mimeData() pieces = mime.text().split() position = event.position().toPoint() hotSpot = QPoint() hotSpotPos = mime.data('application/x-hotspot').split(b' ') if len(hotSpotPos) == 2: hotSpot.setX(hotSpotPos[0].toInt()[0]) hotSpot.setY(hotSpotPos[1].toInt()[0]) for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position - hotSpot) newLabel.show() position += QPoint(newLabel.width(), 0) if event.source() in self.children(): event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.614955 PyQt6-6.6.1/examples/draganddrop/draggabletext/words.txt0000644000076500000240000000036714532151332022212 0ustar00philstaffQt Quarterly is a paper based newsletter exclusively available to Qt customers Every quarter we mail out an issue that we hope will bring added insight and pleasure to your Qt programming with high quality technical articles written by Qt experts ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.616308 PyQt6-6.6.1/examples/draganddrop/dropsite.py0000644000076500000240000001525214532151332017700 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited ## Copyright (C) 2010 Hans-Peter Jansen . ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtSignal, QMimeData, Qt from PyQt6.QtGui import QPalette, QPixmap from PyQt6.QtWidgets import (QAbstractItemView, QApplication, QDialogButtonBox, QFrame, QLabel, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget) class DropArea(QLabel): changed = pyqtSignal(QMimeData) def __init__(self, parent = None): super().__init__(parent) self.setMinimumSize(200, 200) self.setFrameStyle(QFrame.Shadow.Sunken | QFrame.Shape.StyledPanel) self.setAlignment(Qt.AlignmentFlag.AlignCenter) self.setAcceptDrops(True) self.setAutoFillBackground(True) self.clear() def dragEnterEvent(self, event): self.setText("") self.setBackgroundRole(QPalette.ColorRole.Highlight) event.acceptProposedAction() self.changed.emit(event.mimeData()) def dragMoveEvent(self, event): event.acceptProposedAction() def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasImage(): self.setPixmap(QPixmap(mimeData.imageData())) elif mimeData.hasHtml(): self.setText(mimeData.html()) self.setTextFormat(Qt.TextFormat.RichText) elif mimeData.hasText(): self.setText(mimeData.text()) self.setTextFormat(Qt.TextFormat.PlainText) elif mimeData.hasUrls(): self.setText("\n".join([url.path() for url in mimeData.urls()])) else: self.setText("Cannot display data") self.setBackgroundRole(QPalette.ColorRole.Dark) event.acceptProposedAction() def dragLeaveEvent(self, event): self.clear() event.accept() def clear(self): self.setText("") self.setBackgroundRole(QPalette.ColorRole.Dark) self.changed.emit(None) class DropSiteWindow(QWidget): def __init__(self): super().__init__() self.abstractLabel = QLabel( "This example accepts drags from other applications and " "displays the MIME types provided by the drag object.") self.abstractLabel.setWordWrap(True) self.abstractLabel.adjustSize() self.dropArea = DropArea() self.dropArea.changed.connect(self.updateFormatsTable) self.formatsTable = QTableWidget() self.formatsTable.setColumnCount(2) self.formatsTable.setEditTriggers( QAbstractItemView.EditTrigger.NoEditTriggers) self.formatsTable.setHorizontalHeaderLabels(["Format", "Content"]) self.formatsTable.horizontalHeader().setStretchLastSection(True) self.clearButton = QPushButton("Clear") self.quitButton = QPushButton("Quit") self.buttonBox = QDialogButtonBox() self.buttonBox.addButton(self.clearButton, QDialogButtonBox.ButtonRole.ActionRole) self.buttonBox.addButton(self.quitButton, QDialogButtonBox.ButtonRole.RejectRole) self.quitButton.pressed.connect(self.close) self.clearButton.pressed.connect(self.dropArea.clear) mainLayout = QVBoxLayout() mainLayout.addWidget(self.abstractLabel) mainLayout.addWidget(self.dropArea) mainLayout.addWidget(self.formatsTable) mainLayout.addWidget(self.buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Drop Site") self.setMinimumSize(350, 500) def updateFormatsTable(self, mimeData=None): self.formatsTable.setRowCount(0) if mimeData is None: return for format in mimeData.formats(): formatItem = QTableWidgetItem(format) formatItem.setFlags(Qt.ItemFlag.ItemIsEnabled) formatItem.setTextAlignment( Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft) if format == 'text/plain': text = mimeData.text().strip() elif format == 'text/html': text = mimeData.html().strip() elif format == 'text/uri-list': text = " ".join([url.toString() for url in mimeData.urls()]) else: text = " ".join(["%02X" % ord(datum) for datum in mimeData.data(format)]) row = self.formatsTable.rowCount() self.formatsTable.insertRow(row) self.formatsTable.setItem(row, 0, QTableWidgetItem(format)) self.formatsTable.setItem(row, 1, QTableWidgetItem(text)) self.formatsTable.resizeColumnToContents(0) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DropSiteWindow() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3906991 PyQt6-6.6.1/examples/draganddrop/fridgemagnets/0000755000076500000240000000000014532160402020305 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.723138 PyQt6-6.6.1/examples/draganddrop/fridgemagnets/fridgemagnets.py0000644000076500000240000001536714532151332023514 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import (QByteArray, QDataStream, QFile, QIODevice, QMimeData, QPoint, QRect, QRectF, Qt, QTextStream) from PyQt6.QtGui import (QDrag, QFont, QFontMetrics, QImage, QPainter, QPalette, QPixmap, qRgba) from PyQt6.QtWidgets import QApplication, QLabel, QWidget class DragLabel(QLabel): def __init__(self, text, parent): super().__init__(parent) metric = QFontMetrics(self.font()) size = metric.size(Qt.TextFlag.TextSingleLine, text) image = QImage(size.width() + 12, size.height() + 12, QImage.Format.Format_ARGB32_Premultiplied) image.fill(qRgba(0, 0, 0, 0)) font = QFont() font.setStyleStrategy(QFont.StyleStrategy.ForceOutline) painter = QPainter() painter.begin(image) painter.setRenderHint(QPainter.RenderHint.Antialiasing) painter.setBrush(Qt.GlobalColor.white) painter.drawRoundedRect( QRectF(0.5, 0.5, image.width()-1, image.height()-1), 25, 25, Qt.SizeMode.RelativeSize) painter.setFont(font) painter.setBrush(Qt.GlobalColor.black) painter.drawText(QRect(QPoint(6, 6), size), Qt.AlignmentFlag.AlignCenter, text) painter.end() self.setPixmap(QPixmap.fromImage(image)) self.labelText = text def mousePressEvent(self, event): itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.WriteOnly) dataStream << QByteArray(self.labelText.encode('utf8')) << QPoint(event.position().toPoint() - self.rect().topLeft()) mimeData = QMimeData() mimeData.setData('application/x-fridgemagnet', itemData) mimeData.setText(self.labelText) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.position().toPoint() - self.rect().topLeft()) drag.setPixmap(self.pixmap()) self.hide() if drag.exec(Qt.DropAction.MoveAction | Qt.DropAction.CopyAction, Qt.DropAction.CopyAction) == Qt.DropAction.MoveAction: self.close() else: self.show() class DragWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) dictionaryFile = QFile( os.path.join(os.path.dirname(__file__), 'words.txt')) dictionaryFile.open(QFile.OpenModeFlag.ReadOnly) x = 5 y = 5 for word in QTextStream(dictionaryFile).readAll().split(): wordLabel = DragLabel(word, self) wordLabel.move(x, y) wordLabel.show() x += wordLabel.width() + 2 if x >= 245: x = 5 y += wordLabel.height() + 2 newPalette = self.palette() newPalette.setColor(QPalette.ColorRole.Window, Qt.GlobalColor.white) self.setPalette(newPalette) self.setMinimumSize(400, max(200, y)) self.setWindowTitle("Fridge Magnets") self.setAcceptDrops(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): if event.source() in self.children(): event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): event.acceptProposedAction() else: event.ignore() dragMoveEvent = dragEnterEvent def dropEvent(self, event): if event.mimeData().hasFormat('application/x-fridgemagnet'): mime = event.mimeData() itemData = mime.data('application/x-fridgemagnet') dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.ReadOnly) text = QByteArray() offset = QPoint() dataStream >> text >> offset text = str(text, encoding='utf8') newLabel = DragLabel(text, self) newLabel.move(event.position().toPoint() - offset) newLabel.show() if event.source() in self.children(): event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.acceptProposedAction() elif event.mimeData().hasText(): pieces = event.mimeData().text().split() position = event.position().toPoint() for piece in pieces: newLabel = DragLabel(piece, self) newLabel.move(position) newLabel.show() position += QPoint(newLabel.width(), 0) event.acceptProposedAction() else: event.ignore() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = DragWidget() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.620519 PyQt6-6.6.1/examples/draganddrop/fridgemagnets/words.txt0000644000076500000240000000042614532151332022210 0ustar00philstaffColorless green ideas sleep furiously A colorless green idea is a new untried idea that is without vividness dull and unexciting To sleep furiously may seem a puzzling turn of phrase but the mind in sleep often indeed moves furiously with ideas and images flickering in and out ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3851964 PyQt6-6.6.1/examples/draganddrop/puzzle/0000755000076500000240000000000014532160402017017 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618558 PyQt6-6.6.1/examples/draganddrop/puzzle/example.jpg0000644000076500000240000012323614532151332021165 0ustar00philstaffÿØÿàJFIFHHÿáExifMM*ÿÛC  !"$"$ÿÛCÿÀ¨¨"ÿÄ ÿÄT !1"AQaq2‘#B¡±3RbÁÑð$47Ccrtu‚’³´áñ6Ss”¢²%“ Dƒ£ÂÒâÿÄÿÄ5!1A"Qaq¡ð2‘ÁÑá#±ñBRbc$ÿÚ ?ìº(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +-)îi3óÙhr±PÚ[€®Šb¨âENçBî¥?2Ëê6ŸýeêÜ“œcí8þ4§ˆ¦¹ö&ôU|z§¥‡}Alþpšß©ZnI jûlR‰ÆÑ%þt{D 'TS4[ìgÒIAÈ?/fk.vX«Æ¤g³"âª+­*ìk*¹!EPEPEPEPEPEPEPEPEs†²ë¨¸õ6ï§4Ķí6»ª!ï½!䨥CÎ Rœ…p3žFÅê~²e{œ¸5 eÈÈÿ´\¼OKáðõ8r½ûŒ2é JMjt%KAëÙûm¢ÿü¥©¿çºŸ õŠÊàe²{þ,¥À?ˆþU4úc?ó·ËÇF\Ë.ЉAê>—€.Á…Ýy¥£øãÆ¥1ÞjDvä0â]eÔ¡i9 IlVêUéU÷$Ÿƒ4F¤'î»›(¢Šip¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‚@¤²¥!¤’To[‰HäÓeÆï+jRÜJBFI'T¨½J´i˜«T™).ØW?µrþ¼ê†¡ÖKZ#Èû%´(‚½Ûÿ±¬µq +A´¨N«Óbü×ýsÓ:}·R%‰'#Ãa\gþWùW=k?Ò;V]^r=…±£<$î_çÉþUýY NøÓœ/©GqyÂJJ}Ђ¯ÇíÎl}0íøéQHRŠ› Ç >ÞüÖGZúÚþ'B8Grr½uøã’%IœB¹%ÅyúóL2àêIrD…¸9PÝŒU¡s-Ì”á—6DÅ’0–µ”( `¨wüh• µ¡–[`xŽx~2Ò; »¼¹øÂªcŠ×„‹\ýy"¢_Ò²‚·÷à+8­N‹Ë.Kq²9óVË\±Å8Û¥¦ˆ#ík(*ú%8¡÷$ÊHR£Ú›q ÉñkyüIÍi…w>fZ˜eq^˜ê>±ÓR¶ë̦¶ŽR—Ôv5sh_Ò–ëHgQÃD”¯"þ§ÐþUΫD§?uŃè@àüZ<(” ”œ)%8P>Æ™(B{™{¤})êîžÖ‘<[]Å+q#ÏÓµÔ~£äU£æÄ„«òbÓ2éj}3m;ÖÕÈYII5{ô·ô•¾Y\jߪ[Tøã?œ:‘õìΡg†Ú¯2Ž lwúV85•Uý8êuƒVÄCÖ›‹R8Ê›'#êžõbŘ۩(ÓaQOb‚º+ĨÕí\¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ˆ¡¿'Q?é©?ø‡jg¢¬—-e«\°ÚVÔv¡´—®3]AZXJ³± H#rÕ‚FHyíPÈ_ïÉÔ_újOþ!Ú¾¿E8[Q\ÖÛÌ¿>‚²9-´”!#è0¯ÌטŽž‘š¨®—àó˜jJ­l¯mO ô;·w4´=Q'úBÛ%ß â“¸qŸ(H ŒóUÅÎÕ:ݬàiY btË‚!¤ƒ”¤(xŸ) ¨DÉ êþ–» «íj ÒÕŸÜx-+ˆ5n_WÁý"´ø‘lnc÷k[¢3ë_û‰Èá§’T´8H#„Žõ4°Xll#R1Ë­š\Ñ¡S§]]+YÛàTú–ÒíŽù*Ôó¨uqÔV€@9ÿt†ŠÿÜÛ'ýþí5Nõ–ço‘¨%[š³5dw’\š—2§ÆÎÅ8î=Oj¸´WþæÙ?èøÿ÷i«ôM(ÒÅÕ„Òûì? ÓŠ袊ôgP(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+¨$Pµ„ŒÓ ½G·Äu÷ÞKm¶’¥©G zšI]€¢ïuf*[Ž%!#$“€sïXzçÔӬΙ2Ôv%Hä§ùÕgמ¶½z}û=…å&0%%@à¸}ÏÇÇç\ÿ&âì¥øM-KZÁºO'ñô¿JÇRr“±²Ž{Õ>Dšó¨¯Úšö¥¼£1â²PÒ•–Ò=IôÀõ9¥¶¶ÜrK^ÎCjðüWû•ý†›ø|œj+ky ?fŽNÁÊÔ@^=Èùöü9æŸXšµ%!•ã²Hqô€ «MŽÀzŸOUkHë©Õ¤ô´Gù ¶Ã˜‘!r\;œwhò¤u½ôsÚš§ÜÒ…ܿŷ0¬©M¯—ãÈO {1ñOš[§Úã_¥Ûcu óöù -¥Ìq”æW×㌠·´o@t•­œÞEâj€R䤟zêÛ^š¶[ã°b°Ë !-¥9ø$ ^Íž2T” åá?AÚ¬¤ÿÅ[ÌS©ò×Ézøœÿ±ÝJ”‡\˜êÉ^IYDz’sÁÇ¿©Þ–ê£5KÈD„ŒP<0¼z«ääŽ{â»Em.§€"¼\( ªm£žÙ‘¢õ?ØZéüœ‡£wéJSm†üPwí£'‘ßÞ›µL/Ñæ»T4ø!J%\(c?À×e}‘¶PRÞÜ|Ô–e¾ß)Y“6’G|Õ3Ô_äK©NZ8èp”½32$w·6µ-’ŸN2>yíL-Ž$©!¢6ò°psë]ésÑö)¹XކÜÁ󄌂}sQ{×ItýÂ!oà Ÿí6~¿ë½28Ê‘Ý\T°ô'³hã]1}½é©­ÜíSŒëjà¡D]AÑÿÒYÉOǴꆛiÕ”ÊO”(ÿxvü±P Ñ[­—µ„½‚¯ä¯ã8ªfãmµJjS*e{°ž1ÛæµÆ´+­7ó1UÂ8jõ]§Ôý-¨cÜã!hq*Ü20sš’¶­Â¹ôVÖ.K°C‡)õ, @žàv?•umª@u”œç"Ÿ†¨ç¥º0´âÜX¾Š(§€QEQEQEQEQEÄP¿ß“¨¿ôÔŸüCµ}þŠr·éAjý¬MA$í>ˆq(q'ñÜ#T$/÷äê/ý5'ÿíMô£—¡ut›Ûœ›m¸2–îqPŒìu¼àH)$dùæiâ¡C¤§Ù?ÁçpµU*ùžÚ‰Ìw“Õ+9ñ‘©[*O÷[ÞUùb­]fúúLèã›¶Ü®´ßÿóNp¡hy…Ž°Û¡Kœâ¢©ØÞ>]þU¨7À <…Øfªkž¢¸¿ÔØ:å BfAua1œÉB™Z<57žàíÆî3ƒÚŸ”ú60¥Qîïð4醊MÞí?€¿ªÿï…vÿæ'ÿÁ5|è¯ýͲÑñÿîÓTFºÕíJ´ÉcNÆ·ÍZ’¹BÂÜs ÀNí íáÚ¯}ÿ¹¶Oú>?ýÚi}á,]YBWO_›ƒqu¦âî˜ïEW£:EPEPEPEPEPEPX¸ ‘šÈœ Ó]ÞbXiDšC©oq­^“%ô2ÓH*ZÔp­pï_úÕ7S\Ý´ÙÞ[vÖ×´ÿZ}Ï¿øT‹ô»ê{ÏËþ‰Zeˆ9˜¤ÞþÉøÌüW-8á^HY(ïžê?åJmËQ”Ò]f.%Nº´©ÎÿÖc“ô¤eâñØïVq‘ò}¿'*[žDySëJíÑ_˜ûPá²ã®º°”¡ Ü¥«éQ•A]R•YYzî`¸†˜SIqa£€ „ùÝ>€{{]Ñ~ŒIuµµŽ”$%*…hq>T'ºK£øìüM;ô£´Äx·ÝG2ïe!ÆX õÇï/äöô«±[Î嬨ä“ë\ºµTÞ›ˆ^”r­ÿƒØí'i8Ç H`=¥qØ ã—àà Ö)B6opa¿ãKY\‚­ 2ŸãUŠ&*bŠ|éCiþ5ꛂŽàQ­haÇUæZ–G¹í[[€ÉÁûÓ’ìBvݘ BÇ+ðÍju‹zÿáÎñ§ã6Œ'Ç|÷¬„frAŒT¸¶‚ãB™†ÜûóZ]m¢ѺžÜ‹a>QŽ{ÒeGaíRGãK”K) Ëe¬¦ŸB8¤«Ž‚½¬­HW8 âŸÖÃ}‚ÂI瓚E.9Ør yÆ)r€Å!–CD ¶êv¨ŒŽª»«=5µjH¸ÓI‹=) ¥[*Rš² ÛþÊ?¤èuNG;Oª~ !èô›[ÁÑ·¥õ“¶{’Œy(! ©G td‘ø×l苈“£»œs\§×(¹Pw„‰q2IG|Æ}ñÍM¿EΠ¿}´ˆ—'ó:.á=Ö=],5Hï۹ÉÅÓ´³L…e5•"·È´9È¥µÒ3Q@Q@Q@Q@Q@Kµ·Ön¢%Ä)Þd( p_tƒø‚ãR*é{¾ˆÒ·kÚ¯W +\ÚZ[Û”’´§;B€ +îsǺž±AÇØìð#÷’Âw~xÍyÌ_BÔÄW•LÉ&qÿL›“ëhP-¼ê½- vÍ? ë­n­Öâ.2Ü )D•Ôœ’£œŒ“Œf· ¬ïßš«*˜2S‹ñ–ÂJ‰'…ãšè|QZ_Cñ"£Z«’^ îhXâ£96‘JYúAwrCjºÏˆÃIJ¢·1ê@üóWÿ(3džÂ¸côÃÖK™~jÆÂÎØƒ+à­\ÿŠ]W´IŒsJÌ¡¯÷îWß}Õ-n(­å©Y*$çÕˇ¾ÔZÏb¨ûš_h´Mº]"ÛØl‡RR9JTG›C𛍫²îóz­0$Üç5 y甆Ð9Q®»è/L-ÚF wk“-ɾ8Œî#rc;'çæ«~”idÛ.iðÚX%âÊ%HÉÏ÷±É™Åt½)m A (vÓæ¸ø¬C©S"Ù¼=,ßäüé{~oÞ#r³ïJÛÜ£¸Ž}µh'ÝØžõ¥1°R7wìqTH«b–“€ ³øsJÙQ$€3ÜÖ⌓ŒX?qƒÈã©+$g·Ö˜¢)ß°qh©YÅvç·8”ð·0=ÕLɽÆCIwzXJòV¤§wÓ>Ÿ5›wHOc¸GwqÁ(>Ü~•tC„»-G•’k,+’GãZTµµ) )ôù­˜ã¸>ø©Ô‹›J¹Ãæ«ûÇZ4UºwØî3®ƒÍ«-œwç±?LÒe$˜ØÓ”¶DùõåqüŠoy;£ò=é¶&µ²NKe¹ ©.c mÀâN{d§±úÓ©SKHR0¡À¾Ô§il]ÆQÝ wÈ-ÊŠâ@)Zp}ù®lLù=.êK®­ 0^{z¶v)'ŸÇºðRèAû§<Õ×Û+ReÆuMxŠ(sŸ»Ç¯"™N¦Mö* ­âΤÐ7è÷+s2ò\mÄ¡`ð¤‘jrÊ·$W$~‹Z­ßÔâÃ5dI¶¯Áñ½²r“á]Qha$Jìáæå=ѳ‹qc•QN$(¢Š(¢Š(­Rä±3’dº–™lekQà ¬u–»¾9oyë#H¶C"d„n[Ÿ)Ià~9«Ó§*ŽÈUZѤ¯"Ó¢¹×OYv.J›¬/Á° ËRÔÐ? 1M79Ú¡‰kB5V¤ðÒx?¬œÉiö)ö™=½©ÔW4éÙ÷©—†X‘¬5Y*Á?¬\çßؚ֮y*ˆ‡£Ô rLÜÿ….®TÒlu,W´‘)¢ª‹ƒSD÷<-I}Ki8À˜ª~ÒöI’b—äêꂾîfñ3ÃJÌÙXbóË*D技jˆ—Ýöô” wûYÿ*®ž»^þÒBu%äöÕãùÕ¡ƒœ•È–61v±Ð”Ua¥Þ—.3k~÷vR‡ ÿj<þu,›hqP‹¬Þ.Á[r1+ÿ*\ðòƒIó/ Jšm-‰Yæâ‡ Uyº§Ÿö¥v©m¶Ú!‡ÒãœsþÑÿ•M\4©«°¥ŠU’誣SÝ'1pZb].ICg2T?•7E»]^ ®õqGÇÚWÏñ¦,ÚñÑOb被XóäH‹á¦ï<:rú»þt§JÜ›ƒŒÉŸ,´“Á/¨ÿ:‰`åvÉŽ22vH°h¤)…µ$ªd³óâšM8!¨î-¤ÛŬñƒ“²4ÊyUØïEBݹ¼Ã"åÈ#üCM’o·B?dó €K‡üëO±LÍí°ì,zÅÄP+Uús‹ðßyÍÞ‡yÿ:XýåöšYq×1Ž<Æb™+'×’ÔÜE„žOók«×sz××i{÷!IJ» ã?ʺ÷¯šåÛV‘¹KL…%ß ²ÈÜr\_×Ðdþ KÛ½¨€IÈϨ?5Ž­,•lÓB§6ŒR!Å$+aÂ{îja¡®,ZE»™=µ+*K¾­§ƒœð=“óQ4¶Ëî¡ô2”޹‘ÿ:ÉiXm~e„í;‰ôÀÇriSŽecM9ä•΃é¸ÔÛõÂZ!Z­Šn4rò‚@QȼHÎqîjıõ‹¦qb©RõŒd:´lŒò¼¸øOÖ¹ó©Z}ûIíLȈb¾.)S¬÷SAM(¤,ÿhá\zWHi)¦btkNj½(ÑÓß~ÕŽ6Œ\Z°’µsÉäýk›C N½ê§¥ß‘՝Д§eËÌÍ]yé HIÕÎ=E¶Aÿü+yëÿHiE­Xµ«õt€N>¨¥kÓ75F/Úô'MYi •<4ãMGN?ã\àþ†—ÐÚŸS;#h誛ŠR™(‰ajbš*ä„§<ÄÓaJ“÷[~¼ÊSJò²!Óúõ¦îa_e¼FŒŽK-©E vÜHÀÏãPÍMÖìÄj¯ìòd-²âfVRÚ`UÎO®3ùWLµÐ-,üOÿTµi)/žê¦Xa9ú$çøÔ#Xþ½=[n—cÛ­ÎðâaHa¼ü¼¤çð¡a#{ÊþE½¾Ë,-ð¿ÔåèSµêC’%Ýæ¼óÊ *[™ó„þ5%Ò6ºVµéççµ! S®4BÞJxV{ýG ÷6—ú99n|HÒº¹´8Ÿ0L[¸m`ü%ħ?ö«(íõB8]š!ßÛS›Û8%.îÛì’w{’>*³„oÕ’þ tqm%x¶þ’æèû×5ØvÈšô¦Ò”­’øÂÛ¼ =ûv÷Áõ©ô7pò Àùª?Dõ·J91¶ur¿dóÒq"…YP<ŠÏ>dŽÃ5zé²Ì¶6ü£Mˆ´å§âº—Z#áI$¼i¸¤™’µE)9ÛYÎÑȃí^8HŽ¢‘ÂGb)|¸®‚ “Ç$rÀ¦¼¶í0_™s•V¼Ï?-Ô´ÚG®T£UšH\zÅ+ÖH³îW“…¸Ôynb[ÉW™-€0óïõª¦ó¦¢ÛRãQ ‚†ÃiñÈT•û {“Ž1ë“VN²ëf–ýdä ¦®æä®¦[SQs“’ž Üú€ÍVÚšG\uZ˲ ÄÓ±TBD;{hC‰Çlò§çÔ¥'„ã«ixâ"â¢à߯‘MÖ~•»®e†j­«%GìÎ…-—’Hò©8À>¹øâ¬­Öpc¨Ê— Y)!—ß‚½R ûÈùïþ0áÑM[1Ã"å2*QÊ—6~åçä$M×n™Â´ƒöý[§™P$cÁ±Ç±æ¯%†¨¬å¯pˆûLdòÂñìz3«]=Ÿ?«­1_HÆÞ{8ô Ô'ª:ÛDL™Ëv§´ÏWçKnçË‚9lüÕÞšˆæ…Ò³ÊÕµå4¿¦H¥ô[±Tò¢0éNv<ÒÛè¼þ9«ÇNoÞfhœuÑ_Ç™/éî©fÁÔ†rs3ùaçŸ x‘ЗWµ[°‚BB›ˆˆ«ôivg_Ȇ‹¼øÑÕŬ2ú“œãøÖ§ÁçƒÐæâa8§7ÈúNÃis[jœÓ‘åIŒŒê[ø?ùTÚž[ÑÒâµ¢Î9Äß_Ê·Ê‹ŒT»LñëKõçQêeh«\ék´ÛRV•¾¥—¸•£ýåqŽIø® ýôl=-¦î¢<Ç%}½Öœt«Ü”‘ÁDZ=¾j§èƆ\{ÅÒçu(VûƒªiÁ'qäû×FX¥·lmÝŒ¥HY[NÜ`U¨TÕöÆÅeÊ·&! $ Ø a×6¿Öv%Ç%”¥[ʉõì?-µÞí×þÏ!%INT’~ï¿4Ë­õ~›´ZÈŸrˆCŽ”8'8JÙ+8œÈ)FjËR«ºèp°µ&{N 8"£²­÷Û6ôµ9Ô²¡…´èñYXö)­gººïC -©:Š5úîÓNÚ nßhq¶Ûuµ#ÄR*a Ø¢•eHûÀá&õ £ZƒOk½)/J[-WÆÛ¬mB“!¥,nRAoÃÊr=Í;_‘ôÌŒÙJã¼µ3·Èûdù’¡Ø‚2?„̵jKçVѶÝG1¸:n(…×ÝPTDŒ-M‚í ryÚ„ÚŸCÁ¤ãmyS *õÔÔì¬ï~IxkÌ×úXh{ÜX,j™v ˜Cm¥µµl”¤žI $Õ'c–-¡k¾Y¿X!lå¥Kt¸Ú7BðI²A®À™Ó[ÅæÔ"ê¨j‹‹J©•)*hãÜ+9úÔHô¾ÕwÖ—>žÝç•Ö.LÈn0Y¸BBWc8A ØB‡#rÇ àh†*NiIhü þÏS”£Ríodö¾ú’?ÑãGÜ¥ôew™°oûRÞu•8€“!’¬¶¼ (Œda\` sI’û6Ie«ÃôKcjSøÕÒZ© 3¥¥ÅŽ C)i m vT½t²Y£xw;¤XaGþÀÐ$Ÿ®{ÕqXX;_â'©yI+öFúq1ä•É–>˜"‘]:WLU°·ƒƒœîOÿ…J\Ôvi3•Ýw€ó¡9)jX N1Üó[X½.:ƒr-“ŽGùŠçº4àΗµâš½üŽKê—J.:js’#£ívâÜWºnðÔ½7 2^TypR¦èQ$"¾£ ñ]w|íqÝi¶¶”‹$`ãÚ¸³_é§´ÕÎånm.Û|© ';¬ùŠÙN¬§h7àÌU5ª£â¾¦û«ê¿Ù¥ÝC?l„èfaa!(w#‡³Œî3ëJº‰ÓI×Û&;PËJ_¦õ¨mOÔàŸÂ™úz^‹ÓýqtJr˜©ƒ‚´·JqùVFmB8öĺêÜûDŒˆOà8üëªãFœwØàbk~ËO™Ôº%pšN’?!V¬sà°G'ÈWú)e†Ü ´v7æÂ”/õÍuk¬©C°æa£epb#M,¬ žçÞ·n à¨r84!µ“ÊŠSÀ<÷¬CIÿã' }xúVVï»4¥m:àJ¸àzû®h¤ò­Ëí`>dƒœÑM‡Ú±râ_DVý!` ?k‡ Apr¾ª˜»ºjÊÜÉ@å)Ï£];JS¢à``#ý⹩KL¼ò³»Ãl{b¶;%sŸJùTLm¡´ä{VĸÊRµx‰HùôïXº«[>GVsÏ›šÌ.Í' …mÜ1Ÿo¥U¾æ5+sG?ß/ºšå¥î>Ût”åüj9#Hñ ž #2¬ç?տŸí©÷XÖ¹¶çʃzEË”¦„…2yݨ@R’ INÇÈ EI-ý8™iêÜÝgCZ]–XI>"d”!µ8F1ˆÇœ¨ö¤:3G?¤-:±'Å|Ü–ëvíªQðbåÅ6…ä §WÀÎ= ¥Ü•£±›‡8¾·®Á•½i¨ÛGMÛ¶ÿdºZymΘ·Zši89°“à‚9'9a²õ]æ×[Ý„4ηBºøŽ%©+J ”¶¤p9ä§½:?a¿">Šû3–÷ŸÓŠâò‡|FЂR ‚x(Ï#œúV‹†¸½aÖp’ô0íîAr1RÔ”ìJp¿/)=³LŒ$—®ÂÉïëA˨××ì:áz„Au¦’Y*­IJN=pT Dã]5—¹h‰R5ë›:‡k3X” ¤¬#j›ÀpWÃäÔþ~˜F¤ÒRìsÄH`4HÎÅŒ«ÁÔ/NX¯·> Ytö¬ a:E ¸e¨îm¸`$%Ï£nÔdg9ç©|Ȭ¯qOOﺦï¯u+7ñÌ(²’ÉKäý˜„¨´n )É'YŒ‚•¥Ä+j‡b;æ îiÍQ£.šÂÿ Û„Š—5¦€qR|@•ì@@N+Pîíš™ZŒ³nŽg¥‘7ÃOჷÄÇ›o'Œçö«S½¬ËG¼™ØnÈy aå¿BN)ý+VÒÓ©ÞƒÆHÍVøP!Ä(v#Þ¤–;èJC2ð>sU©Nú£M*¶ÑŽ2íêaá2"ü òŠrƒ)ÇÛ±P={ ´<¿´†‡ñ¬ßž„±ÚϹ"³ÊN][]ŒTzײ6‚þ?« c'šõ. ùÒG8äw¤ÉŸ(cŽâ”75 ;@N}©n\†Æq|̾è(îÙÉwˆ¤6´ãÊ®E?©±È9B»Ö—š¶R{zšU2»‘Vžeb`ì8àò+9(zýktèë(ûÍ`ñÂ2?Zè§sšÕ·5 ío?ÔwP$­—\#“À§ñ’`÷õ¦­T͹~åë!+ÈShÜHïáÆ”j …Âý}žl¡+Yj3 4€xHüù¤¬:˜Xy¦Ð¥ç.Fíü¹§½òÕdÈa ->"N'>€÷'Žj*Z7©m‘4œ£E½Ùgh>^n-%éËn"1ÈW*Éø©.žÑ×= ÔËâ*Táƒ)22„VŒáiãÝ$Æ®½2#ÈŽÛñÛ eM „íÇÓ?8ÅH’Ã.) -$¨ú‘Ú¸²sžªZž‡Ú²u2¬¦ùøö뛫·€cËý³*‚• Œ~ÈÖw™F·Ÿ Z‚ ?ÚÇä ­ø_«ÝZC¨ýJýÕ÷°=DZúÖm  àƒ‘ƒZ“Nís9–iÙò+ 'vÕ¦û-WHβÙe•à žT}ÅEçÙõKÛLاìQçL‡ÞˆÜ–ÜmiRSû%ðHÈÀ÷íÍ^‚Î~ûo#̓… Òô°êÛm6Ë©iaÄsÈìi´ªN*Ì+ðª;Ú×*ˆÚVåqUÞ5Íõ¦0ŒòÌr•HX9I-ç òœþ4©V_¸"V“³¿jRä‘!¤ûåHÎÓ“íƒV”ø«zBžRJ”0¬'q8íñI×I¼ÉÇ5YC2´†P®¨¼ÔÖ¯·aìRåÆL)®2üÉJCnèÂôHÏzǰ³_þ¿b|Ik»L”îØêß±ÀIRûgnÀR;–êë‹ÚrÐÒâ%³{¸nidœò<òUì”'$ëPþé¶,‚Rc-N0Û¥ (¯ ‚µèTBsô®~&Τ!ÛúõØoé*SªÝ®š·ooÁ;xÙö‹ )À)ÀÊ»OµDcZÆÔNº¸î."í¼…µ§ü‰YǪ]-þ⤶²<2—'c9¨·T­îIÓ2Xmo%;‡„¢•V2=ð8úSª6¢¤¹jd¤¯<—²z|㲯OË•UöLÈ))ØÛ©ò %Dädr03žõ\õGM?p¼F™¦ô²Ð˜ˆoÃûk!ÖTétø¼•”8£#Œ0– \e VT”Œ’sOzÙëÖ“Õ.9¤-š…zQ!)1'(¾B@ œ¨\ë]-ùkeI“(«¶½9¼ö¤RÐô¤¶ö€rJ]f庇©JÊïãøô íCb‹"Êд ¨¤§n@ªËô€°m׋‚Ú Xeý•Ž>¸5kÛmI²>W„°µï-`{ãÛéM}Fëf— bœCá—¢AÜãðïéYZËgØÃ2ÎòìÎN·([ºBÝä7TÝØ|¤ðS¢ mÇŒúf¬Ž…Æz\¶.©!L¼â÷s€@ÍDºe›|êy·H‘eÿ²ÅJ~ãm¥¾žÝ½Ïç5&Ñ¥)¨`Ú­òZR‡ì^ É óÏbAõü«³CÎ2íÔãc::£ ä¹ ¥ðF;þî=ê\…¡”ÉW§Ç^èiaPPT°\úzÔâ7 -G'¾+¹Uª‹7#‡FZºëÎgz¶€{V)oîQV;úÖÒH9çØW€ùÏ'Ž'æ—{-ZïS¸ë ÞÚŠ‡n{š+5á8!Gð}(¢Éî‰M­™ é°Cz6 ïçb|Lÿ¨ªp›5é‰)mE¶Àãæ£ÚÕÈÒ[ó%¶üL=|E?!)Ç9Éúq[¡dÙÍSê¤:AGq=ùí[Ô„*>}«Ôî#¸­¨RJ{gÔ~=é¥E6yêj@Šó‰(sî'ýw¨†²+MÙIL¦–´¤(b=Á¨÷KãÀw¿].LF‘¨¾ÈiN<€§˜BU†’‚yJ6`Œpr}ê³T1ú+¥.½†ã*+7‰JR·®*dmR»„„§)´³%¸q[ŠLµšm‚ÚI>\zþT'öÁ(B· íQ#Ž V³­1äjmO§lR[µA•gcÆû8 m™JqA>Q€7 qŒƒJ,öWu¦uŽ=¾Çi¼Y®L.C-#0.Ü”/’)9 ¤gÚ¯öÌ]VˆÂ6–ñœ‚îÕ²R›ûS›–Œ•mÆ{Ç×â¢zíxºé»|#eÓöˆá÷šŸཡŵE’Ð P$(äŽI¨>£hz·p¸´ÒäÅXûŽr¦^û:Ke³Ý*+ä`œjŽ'0rÑ4[ ÞãËÕtÒ"¬? RÔîFÕ©I ¾FÓùÒ)ë .Ëyô"3 —UÂ1ß>ݪ oBÉ|ÔWký½SË:6Û"‘ýjŠ–•!YÏ’AÀÍ5ȆÚu>«·ý†É3Ú?íõŒÇ…/bˆÀ`óÆÓPª=ˆÎLnºÆÕÅlºÅÿlGYfM­(+SƒrrTFÐ'=½©þ\”Æ/5öwÝsJXQIõýÅTÓ,ö”h^—Õ°OÚ.6âé  ïß[¸ç%#9ïžÕ®ôÕ½zo_].)i7ØWGQ òpüpŸeKGºAco|š8nFftÓï"4"¥Ô¥D$žyíZØSg JТFxVr3ÏþµXXíì^zÓq•zŒ™`ÚmÒJŽPÌ‚¹a=·yqžàgÍAãYíÒ4>œ¸=*›+\oHçÅTuIqµ3¿¿†PHÛœsۚΥdi•W{ÛÒ:1 BÒÚ’¤žÅ'"¶‚€HíUÇLâ1oê7P­n,òá8ÌfRÓjr*JÊR8<œUŽr>joqÐy‘œwTÉÇtàÒ³ƒ…Œyö¤¡*PÁæ½Ü¦þ÷#ùRä®ÇEÙjh½Ä3â$ŽõÊRGcRæv¼Ê“ƨÅͯ³HRHàžkFâùñ0ÿ%ÌÂÞÉuÃǵEúŠéLgâ§–¦6ÃS§ÛÖ«^¦¼¤°àO±«NWR·"™mûJ«H[™~EÂäûIqmìÜ2Q*&uw¤ÍÝáÅ»$¼Ä ‚¢ãJÞ­¾ÀÿO©©?Mÿoi¼²µÏ³%cà¤í5hÙYUÂÇÅ6 öħ>U'øòXºmÖÍgÈ÷¸J¼<$SÖ<×ÃîpUÇHu¶RÖ–7•ã…òœzc·Ö™,ðd±qiï3a²{0qõí])ÔÛEu!vØ1>ÉÈgs«%ׂ²8ù¿!TôØ­‰ †Äs³Åý©ÚF¸‚Ÿ§±ßº©Êñ–£±x +%Jj×ÖßÁÕÝ/mæô¹ùa^3È óýàŸLý{ÔÒ;™9#¿™-í&-®,tðÛ,6„sÀJRü±N¶ÎR’R@>n{­g‹×A^fÙåÆò©Ì£{‰['þ{V»n¢†ãâ,§DwóýSÇjÓñÏÞòâ ’N{L}h‘j·Íc› ™ œâÅ1A§x²Šp’´×È{¶*3­¥KB’0<ÛrƒÿX>Ch)q“ô"«ætœ,ª#÷kj»ƒàâ~™Å.kFIHÊu–­Ø=>Þñ)­E¼|ÄNµKx¯³dÊLdJ1„òH©íP‹¾«€‰FžŒ5Ý'hj9ÌföŸty@÷A&”=¢ì`x“v½`ýÛ…ÁÇPOÊ þéèÖØ>H±âFi9e°„lQ'7½—›û/2i”5Ö^Kùmùx‘HjJ%J½_e~²¼ÍG‡!ò0†›ÿá4?q?ÄÒo²D¶Ãa 6Ê ÚI9úžI§ió¦\ÞÚÒŠ=Ç•6ðÞV¼¯“’7ê£S«9{ÏáË»åÈÝ-´ù0 9çšWu‚§¢-<ŽÄR«#q֦еs‚®ôór¡hm;©ª’”ng•L²H¦íúrä«õ`fÙvŒâ”ÛÈO•à{¡Áê“òæ¤ð5Cˆ·ß™U¾qmYÎÿ”žÎ‘æ÷O­!¿á@Qo;ræ úT¢Æä;í©pnq™”÷ÐëaI?P}k-4Ó´^¾FªÒRŠuךû®ï•µîb3åcœÒñœíXúƒÚÉ“#y:+TãéHþtºãÓË’¤4äøÍ«€„=¹ úçݧqmà·Lö[Zÿ2š¼•[ë“ûجU{ÿ4þ—\Ô(T‹,go*ΈÊ# ÿyÒ1윚ñ›{¬¸©×I™p)ÂV„á¦u¤úuM=ÎÓÓI vÿ1ƒÚüíIZ‹%Zy.ŒyNÜgéŠÏ%-š%Ê Ýg>k»q={Š[sÀß²[%GÊVÎ=ÉÀòžoZk¶ÇY¿Ûßq¶›ÉSÛÍÃñô§~´º•ožÁÊá»A) G*ùôÁ¦},¿´ÜÕ)J+lË'° w5ziÎP^·7æ.ÄT}–ù¤Ž›é«åÈͬÇlU­@4•,Œc¶j¤é¸Ra´„Ú­›t@[Üá*$ÕíT)E3ço²7xÈÈ9üŠÉ8<ƒ€yàf”Œ­?sà Jücîlá9ä{RT¢Ý‘¥ÆKVf¾Sß}(¤W ƒ1⓸nô”S¡JMX'©Ð*m­#'+ì}7«šy2T¢64Oíšm镽OéHO>¯)ñ8Ïübªh˜ÈO´‚?hâÆ)#-:R”S# ’ ¿Ú$ d`‘ÇúïJRêUÊ3‚08þTó&#4B’®=*)pœ‹;êaÁœŸ/5xMOb'd»}Œ]™»È¶ÀUÁ B%)”SÆ0ŒŽ>j7ujÜL(pb±´–ѦR–‚y$´IãYõ?U_µ•¼Ê¶À-ÚâOj¦ %öˆHN6îòýìòN1RK¶¤›g‘|q–%1aCj¸%†œ;Ó»kIÚw¤…‘Üñ☬ȒZ4µ¤BTuZ "‡râ¦:j?)Æ zz u:kO›b-£OÚ— ܘæ" I8îŒgµ‘¯Ìšr`»;L» ^>Ö—›ËG·^SëÚê¥N€åÓìÖÖnÎÓK¸“3b·);”††Ó»jNNHöïSš!tYöeÆ1#Çi” mBH ØÀü)¦É¡¬Ñµ×Pʉlû„„ÈJߌ….1JRœ!X$´­VnêW,š×Uß$ºó°¢Ú"HJ²wãhì ¸•K"uéoš‹uþÊÌI2`=2jQu*-VÒÉBp FG~j­Å’¤žäØÁ€Ì™»mˆã²ð^uL¤©ÆÆp…2SÉàñÉ­‹%¢*·Z`Cl%Hb:U‚¡ÀàGÅWöž ÝnÏé÷fZ‹þJb-2ŠÜC› €Zv€€8Á?=øF×Qo‰·Cº7§Òä9WCjl ¸pÈܤ¤í)ÆÂ¤ã9ÈÎqÇ3š;‘™#zwO´Ãq˜²[Xi·þÒÒZˆ„„:2€Âù>nüšO6ÇmUʲmpž”Þ<9GJœGÑDdzTeEr$-D›Í± ϲ<Ë*f<è}O–¶©IN2TÈã½.:¾th¡7Kl1:ÃoMÇÃ3Æiö”Œ(¡$RAÈö>´9Án ÄÆÜäd®X‰JPä”¶ã‰Nv‚¬d“€{dÓ¤{5‰Qa»M¸Gf@”ÓB26¶þâ¯# ÜIÜ9ÉÎj¿…t¼9ƒg“i‹Ûµ±Ë…°ý´¸ͧcÞA°ùÒ|»‡qÏrtZû©îÚ Þò#º‰iRÚq¥²ÔìÛ¨J7’~® ÊÐíhVâSŒqJ_|6ÑPâ›"8’’¯Å#½L-„¶ÐÜéá)´þ"ŠÃÍ+K– #$¬öH¬.L-ûkÑããÅ)Êr{šÓ´ÃAyõÈ_*#Óà{R)“вZR”S÷³ÈUÖÕKU—ËQB޵D’’Ü–øqµp }±UoZug]¡ÏBt–šD+R‡ìžDtÈußùDä'鯭–'6‚üD, €’¡• vç¾iΕøÿdÛ,on¥ªRO} צ¯ÕõÝý2¦èŸRµ§ë˜¶^¢ØÓn™4‘ ci؇Ö|5¤¢ÁÏlUÍ«uKNœŸx–ï‡ yâNÔŒ>OaóLºMµ1´ÊŒ†q [x!@ðR}ꪠޮP•c“ CÍÈP.d„ž~8íT©9Âú¨Ñ¯(¸»[{úD§zÖù~•7R\åE…iyÓ–!3~‡yïóî{UÅÓMëtûy.CKþ) 9ÉN{ŠˆA°[¢CLyÖ¦%'bã#ÃìF?:”Øî1#²ÌVØi¡ýZ[B@I#Û¿ò¤R¤ã,Í۸ו‘´#ÙëIJ¡ÊjBO­j•“ʶ}i–Ÿ0R8ãÔSºJ›îI'·µmRº³8N]Ä’›Üœ>†¢w„¡“½CjB‡sSPRЉ<üTGT©(ŒéÂ1&ïcYëi—…ïcúÊÏ룻Äl"x™ + Þ• \ÿèEE-7/^ÚôØð‹lGWŠP€2ò““œœŒñÎjouûï]Èý§ˆD§Cxó•¡ 2;ŒŒßФ-iu4MR›BÓ9YÁãïôªàäßa«¿øø_íôGqt¸§ì“Éã½[°6çTONç¥-`»Èæ¬+f£ðç¶­­«ŽüW²Qu©)efO³ŒgùV2Fæ“ÜÍijc HXp$}k\¹IR|6°ªÊ¡,Ûœã—q‰›X[¥ÉNe!^PsE<¶ÐCxîsEju[{™¥±éó­1¢ ­Â¿´ãñª© CÍ…!GÏ«X“oC[£4¬)[ý{~ÑTã§õ"â6#¾R9 5xѼ.·Ö²{²Óœ­Cµ Xò¯­­ÛyÇÍ.¹gŠ PàÑ¥)eÅâ+¹Å2”uejÍKDU·]©W§/zbØý¡«…ÏõƒN¾V—šË©xµ´$‚7§…nȱ§ù:^l]gx½±dÓW¦nþŽ"êŒ.;ˆFÂR¯ {’@IÛåç<úTÕjm¼…:ÚHà«{ý+Ò¤…¡*R|ü’9Àü*](½Ä%b5­ºr­]¬l׋s°"Ú›e¶n‘Õ¹+u,¹â±°$`áy$qïÚ¡7Í.Ϭ.ó"ÙìWV®µ©7$¶”í%'b÷$€8ãœóVå§PÛ-ú¢-ŠDÔ·.[Ku¦”q” ¤OaÊÓŒ÷ç©F°D4ÌWޤ#)Ê”®1óšLZŽ·8Fpâ-ï©PÜôН/ê”Iv;0ï6¸Ðãøi%l­¢¢S€6‚SÀ>‡µ!»Xo“&·zÔ@Ýn¶Hf3Q¥xŽ8á%#o HÏ~õe&ÚñìËB›<‚ZÅ0C¨ñÖóeÀ^ñŒçÐýkFH™ò•ÇLl·Yv}*îÌX°¬ÌÙeµ­O<ï…±%ÀRŸhRŽÑ»$kÖ4mõ:~ÓkCSµ"nεm-Ôæ—ïa]Ž}jo¬î(ÒºjMæBTøŽZ a gÄu-ϦUü*E 1#n>*V°vðsƒíP¡ElD›éD»ãZÖLÙÙMíÈ/ÛÔ \𜎄ÿZ’ÚTœ ÊIìiÊó¦nW=¨¬ŒØt¥Ž\ø*ŠÓ–â­‹$(áð’Bs´…cžOse0ëfÐKJsƒþD´£ªtl HÌuEfbT´¡ÕS…”àŸÂ±+JM³l©Â Es^¿‘©Jâ5Ž–¼ªDoÓkzéÞ­êZÃ` ¸)òäzqXôÇOÝôމfÃv0]fÚ…$EqkS¨+R‰R Ó‚8Yæ¦é'=©“Bê8Ú¯IÇÔ 0äV^SÉØê)ðÜ[d“ÛA?2öw+Ãûÿ¢¼µé¹ºÆ½Vb}¶÷]¶D¦V†žTt4y’œò3ŠšÛ4æ«kXݵtÁc2§[†Ü$¾êšl¶²Nç `¨¥íàcÖõÚÛ`¶*çq–˜ÑÂØQç*Z‚RõÉPþuµ™¯:“±ä­'!%*È5NwtÉ‹=ÿßÝ•µË§W'tGU¢ÐåþLIíñµÃˆ¶…“»bN\(óØqW¥s]·4»›˜– |Fã¼]m<œ¥%$ñÝÄA''“ëOÖÅ—#\TV¤¡Ñ|3YŸ¯[‰¥$µ!$zö§xç,§Ö‘ÍkÄo=ˆõ¥Q §éI©,ÑFºk,ØÓ©ä¢4R·„Þ«O{†¨%@­°àòø¨(Ýÿkdjx¯¡+ûƒš«º³á®Øê@h¨$í NàHôÅl¥%N•Ù†¾µÍÚ¶ûÝÕËÖB‡Bs‚ÞòA'à“ô®®±Û›Šœ†ãŒ¡Öó-´«Ê²{{+çö¶¹?2ìü+‚Ôp¢ƒê¤ðõ5Ô_¢—X-·È éE1˜·è©KqÔó›DÖÒ6ŒÝ`ÝÏÏ5ç«k<ÜWƒƒ†SO_^¿¢Þë.—{Wh§íL-Jm ¯j•„äOžk’“»sï[ä´K(T„/ÊZR'8çhÉù'Ö»ˆ£Å^âFHÚww®Hë5…zc_ÏC©W…1*SJ$¨9œsϹÜôçâ¹Ø˜8¼Ë™Óèê—ƒ¢ÞÚ¯©$ÐòWö1]Y@üE!Dän'ʯœr@Ç5eéÒ E uÅ£v}‰åU&ˆœ©SÜ^ÆÂnM&B€Våø ;ßûÙâ­›-$-@') dûûÖZk¬„Iã$6…%8ÊŽN9Í(Œ ÛJ‚F;ΑÅä¹XNU»8"œ`’´Ž=ûÖ´`½…«¦³÷3Lìº#•ÍwÏ%ÂCiþÀÇoƒóO²ÑºSÉ PÜ=Å1¾”ø†CÛœ©'ßÐ}9ïS-ïØwB7\~yK‰;Óǹõ“6ô…y€ØWÉ*õ¾¼ÔW]õ3OiGK2d¥RÖ*çúJhÒWM_­®ómP£ªÐ˜­6ò•5¥Bó´¡9Ô:°†²zù(`+:\YuaÚË-† !ÂÑÒUŒ•wÏ4©•ÁS¡–å3Æ{þ5²tÃ\ɺʃZ.*õb áÄŸ^GNiÎÑÒ½Gúîku³‹†ØIŽDT•œç;û8íZ!Y=_¯ˆº”°‘½ë§eØþÄ•¦|UŸ æÖ—3ÆsšEqˆÚT—×!¸¤üéžgLu_ëvX¨`;m«ÅqØÊK‰Ç`6«œÖ© ¿¦L³j´–”²—RZQPIîä‘ßÞ‡4׺þ_’±öDîë/“má”%·›-ž0U¸÷÷ù¦÷íŒxaèê '(÷ÿ<Ódþšëço/Ç©ZT6šÆu”ò²xNÐ;bªˆ}@¼XïŽZ¯©¥¶áH 'jûã‘YåVylÓïGF†8„Þ¢“ìññ±wØåºÛéC™ÀY öíS sž+gýˆî*¤]]î:JQâ-¶=¿–éT8êÉB‰ðÏ#Üÿ ¤Z3—ˆ†Y4÷B©jHVÕpsœ …ê¹ Et« I%GÓ/¼-¤)Ò´à¤wWcš¬z“4CÓZÂVRKdŸUpô<šN"NÖ+E^H«ºlüKýSü5–¢%Û£©9IXÝNxÈü+›-«K—õ¯yý£ŠpÝÎE\«W¶i9ÚwJ/íËŒwÿYºÚ¼6Xd'{»r~ùHÆÑÛÓ’*—io·áÉy•á( PÂ{p?.kn‹P“í'¤+ÅÕ‚ÿ]ΫÑ:£ìö˜/:°%¤íÁûØ‘RÉúµ”N²AedÈ( %=ÃiåK#ÛÒ¹>Í­·[|6ÒeÍj^JPŒð”AœñÇ>õbôžá$ÜWt’—n7Ù>Dr#¶aèŸÆ·UÅU¥EAzübxyTÞ(ëëTå>†ØJÎN3ϦvôšNrN9&ª¾oÔ­Îçoaô«>+©ÆIôù®ì3JŒnréhõI’–Z <š)9GÚœ9¥#‘ïE4ºÃܪ7x•=¡Å9h‚3„ /þâ©D¾c·}OúïItð&ÏøsÓþ1TªPÜ„ŒäŸãZ¡î£ ØiH¡¸ÅÍ™*ïNï¹á4¥œ€;|Ö«3ay)¬$aÉ)c;ž;U‰9ëR=o“£u]Æíà F5„‡GŽ”øèJ[IûÞœÄf¦·ˆöYú‹¨îj”Ç[Ð"4a*GxÑü ¶‰û¤¹’Tžw=Hõ/MÛÔU)ùêy¥<—i1YBÖ ¤¶]ÜP‘ÆsÇz•KÒÑf¸Ô›Ýª §å§Ž•©¿ù$Ž;úV|ºêQR“ÖÅo¡a³sêV†•©aD~cºMNÉT–’T·SáaJÈåc“ñÍHúÏt‡*õf³¹h·ÜŸ¸JR#ý¿geHmJ+<62$žâ¤7´Ú'¡†äZ`Lr2ŠÙrDt8ZQîPTÓò)ûl ¤oé,Öwnðä4—¸v8P#51¤Ôœ†7hdD/¡Ò%3§.ì´ëJù1–Ê‚†Âòß÷9ãàÔfçËŒ+·N¢©Ä=m¸Ï¼2')oÁÇüàsI§ìfÆl¦Íný\’OÙ>Ì$•³y$“ÇrM/4_ºÇË-/¥¿ ©cC:7VÄa˜îØ`눷‚¦ØÊÙñÞxJ”¡ÀÉz¦H(mˆ,1:Je(O<€šÛÑiU˜ÙÕl‚mÅ; BÂ<3œlÆÜgâ²r H™‰+#46¶Ó-„!Ø$p*Ôú³!R²¹ŽÔ‘NVs„(zSzSå§BxUMgÔc¨®ºÊ!-ük|p|çëšM0ùB}Í+J`8â±KÝFØû̈ëF®ÓáZäG‡Îû¨+Ú?º=þµQõ6Ø÷êw#®L©êÚw+! _À `Uíud®1m#äš„jkb†¡³¦™k«•ƒq‘FN鵂ݯSµ:éç^$e´K©sŠtT]ù\ßN4q5#Ç“I|¿+«‡^:Ô»¼ûí“BÚÍŽBRÔ’›[޵Œád ¤’¬ò1Ž;aŒ~’ÝuÒ²§N¿Ù-ó˜PDËrÚn6Üù[ØRH9çqQàsït[l––Òëè*‡ŽC|àxÅ.Ÿf»†Ê'À·Ý[ (‡Ù*B»úÆ1O$µ^¼ÍŒ ¼°Ñø¯ªú”¥GZ.öo1-C3+J¡" ……¥Xó¬ïß‘ŽPžkF½ý!ú¹¯ôÓºa›U¬Éy¥ý¢Ø—Û’……¤!E÷̑È«Ù6{’˜q¨¬Á´C<-¨Q@}Ù¦÷ôÄ%[3âp NO¸ pj\]½}ËQè¼%ºíß¹¯¶Ÿ2´ÑŸ¥ºÓÓƒZÛ_¹Ì[imÕ´Êá@yTxY#öæ¥ÓàZú™z‡vM–|l8•~Ý’ÊÊ„¥^ÅX*øÈ©•Ñ­·r3„Ò•y_qO-?Ù*>aïíSø­¡ %–[(·zŒzÖL°„®¾ëáÙü¸xJ­Ów|šÓçmßËSVœ´¦Ð\C(û6æÃm +w·>õ*³0ÜVÞSyJIÎ~idîqhŽ{j_=Ôµ¡…c'>”·kÜåÖ©)½wdgT>§@., };ðj£ëìÈÈÒïÄS… BTžO ÜOÀÀ?•Ye¥Én( )¶¢”÷É÷‡¥P_¤­×ÂêRùRÔ9߈5†]y¤¹³M•Ýò)=Qµj+»a„É– H@>Bò­¾Ù8ǺjQÞä­4œ‡§çJRáø€¹ FÕú”§žÄðj.ܦä35ô¥h.¹GªÂ=¿•H'ÜwõTd¹iBÛ÷J‚H*PŽ~A®ƒI¤¿ÖÂæéSMÚ÷OîW–ÉBÕ9ø×rd–mD¡Ä(ÝPìAúqV}‡¨qÙe˜Ñn C(@NÇá¥'êÙúâ£×.»ê•$,µ9]ԮΟ“ïóëëZlZæfÎ+ŠØýå#?…mÅÒ§ž[œœ<•xpåkÞ„êM¾j‘&xSh‡øj̳õjË7ÃiR·Àe†’\u~ÞTçhùV*‘ÑÝ?Ór\LkƒÒf6OÜkö@Ÿ’95ÐZNY,PPÍ’Ï UŒ©´ êú¨ò:¬1x§hÓ‹9ªXX6¡&Éö—“*L`ó­–¹ =è§ŽÊùÑ]¼ÎË>âéÁ¨•‘°Õ’„g!Ãÿ÷[¤ î@à€ri|¥ZÛ)Ÿ8ñЦ÷TV”¬€0sÀ­ÔÝàŒ X™ÛIL&É'„ñǪÝ1dzœqÈäW–—íÉ;Ž@äf‹w w>l|Õ€Š3Ô›…²ß¨5Ó•k±]ÿVËX›µå¨¸”4˜Wõ“¹Iî}³OWÞ¢I‚½KmÔv– ?g¶¢äUY}´½ÃnJ……'olƒÅ7½Ó‹Ü®›ë+#r­É•~Ô)ºERœXBÇVÕ¹ Ã*à9÷Â]¡ß¾j-S>d¦[·^lMÛØIu·µ«yIÀÜçœzW6ò•L݆ŸÝ…;v¯¿àZµ5Àß­–›å™¸+»0·¡©™^6 R›s(N´ç# óϦû7Q&IÑÌji6ãÇš¦#ÀlÌäHq{'n€¬ùŽN8ô§–4^¥“³^¯’-‰Mš;ˆ`DRÔ_qÄ‘°mÊ7}ãÍ1@éÅÙ}+´iy.ÁTû[è’ÚÔ’äu­„¨ A ñëëëºò{Ú‘'Òº™wi×k\¸ñã϶8Ú]Ly3N!ÄîBÒ­©<ò0GôÍW=¥îC¹M‚óߪSowÃLÕ- iÍɤ€Ú¶ò@È'×Ö¥Ú'M½Hve–ÉlRÊp‹j·žT|4vÉÇdÔYè Íçú~ˆOÀHÔ1 5ÅZdžXÎòæpxÆ~qT¨ÛŽ…­$“^´b§õEéQ6Çp²C‰pýTnqvLS­”…l(pøi)PQ•º¶’Ú“Šz„ððÊ{S}ÛjBˆ#µh¢²ÊÂ*Jë2(~¬[Ùð\uÍ¡#9ÉÀ#ÔW]íLÅ:‹IJ„,‚;¤ÿÚ»¨í2üWRF1œ×!õM‹{w"Ûj@ÂŽPÊ•'œ(\úRzFêIèÙ®#i[Ë´Á.6Ú³»wf«$ü=©DÂ’¬““ê~}©2sœþ5–;*{Ö,>†^UP.Þ©uôŸjì’Ïæ?>+±ôÜÅJ‰xJ–Ëa‚x*ÆOoõÅpµ×ã]£É†¥%Р¦Ïc»¾+®úg©ÄËL Œd¼ÿŠ Ž‚™iIÏÐžØø®F:žJªkfuðSâPÉÎ%ÍRRPè !Ð Iõîǧ"œ–âPÆæÅ(…y½*1m}d;[+J ǘ÷àqOJy)K™AS‰O ÎHWö¾žÿ¨Ë@šÔuƒ(!ä©K@'¶}…;¯.4WIÁ*ËàÔ.DÂá@7€µ…qßÛçéO‘día»Ÿ¾SÇp;S ò)(µ¨à¤+‘» …$ò3ŽN;f” •%!^SŽÁ@î¬xócõÅ5;0N榜k*RÆÐ‘æÜ=>+ȆÙHRAãžr>Mlu-¥%nÞ˜é¾Ae*ËM•‚œ}ãZ#'ÈºÔØãÑ w¸ÀÎýªÞõŠ&GR@eŸ.NqíîkJvç†Äóº°+G*ØœçƒÀÍD™tfBKêJRÇzõ´¡-Ø“éé^‡Ôp<ÇœúVÄáŸLšÍ23޲ÛiNHãÚ‘j{ˆð‘;”H׿çÞ’»tGˆ —0ÚJGbxäóíQ¸sEÁó&Få6‰ldƒžG"³T©¦TLawwÈÛs’ˆPœ8Øáܵ‚?ô®Eý#îÎMê PPêÌxèRƒ•«$ƒø`þ"º+YêÐb¿&D¥3´\X ŽcñÛS\ct¸®é~™vxï\© pƒÇð?ÇáLÀC=W>Kù#,”ÔyËø&:E˜2­¯Ç}aµ’ŒöW‚}xÏÍ*±¹n‹Sø2c¨–R±É ÛÎ}qƒùša°-Å5M,î[Ÿg)ǺOãŒTïJZ­÷™©DæT•Çå2­«I<Ç|V¨Ú2•ûneÇUjœoîØ°ô–›jdT‚TE?§F¾ÄŒ‚ ƒK´ ³srR0— Pàdw«v%—ípÀYNà;צÃÊ–.š”ã±å%&¥dî@4Æžf+èP@ïÍZp¡%1RR¤0-m´TÙ(v8© ¤¤´¦W÷½kšŒUƒ»³í©NZ8?¢½†vmIýÓÍ̪›‘Ñ¥+"#Óô¢O¢0  °æ}ÿ¬UGäG\i Œ³Œ)çNª.•„èå*ß‘ŸøÅSÆ¡„ÔÈâTp ÁÎ9ù®5—Àåß4æ†Ý6öP¶{)Â)}Ä’xø¨û©§¼@)àŒ÷§¦Þ)$䑃Í4¡6aYµ¤÷òúSUÄä!òšSj} ‚¶óØR9O!‡w¤(ŒƒžAÇð9¬Tâã6n«%(# kB#ìøô¤ñQâ­ ©[sߊÁŇe~Óî'Þ†ä6»€e—§P7)°¡¸$ž=¾kRVFVîÅ4ä2zßÀÃAk*=«%¶´¬,¤ŽExRXã¤9fZŽK+Ð+ Ilgulû2 ¥,î¯Q¸7°GlÖKmi„Ê5Fù K˜‘YàÒ¼¥mŒR(râÉmiaö¤m% -¬(;ŒZQy€B¶úf¦Z¢±£ÁZÙ=CÊ;Ö¨áHÚœzÖ©o…8@?•Fò5¹Z´•+Ò´çrʈ¯^Äãæ·Ä`¬ó÷E?H«³>²vFû{=ÜWá[ÝVåcÐw¯°Äp+ăžæ³»·viJÊÈØ•š*=éO޲µv­³I+ ÅhyA†O"­e~l¬Ý¹!®ñ1»x.)a)¤Õmªº³¦¡´â\¹³â à¶Ùúf›:÷¼x¶Y‡CÇ+‘%Í¡¤ûêO5ÌêÓ/´©’ï¦<Ð|Æ4b¢P< €sXñXþ”VäPÃ*×r•‘3êVpmØÖDKÚx\Á|gŠ¡.ÓŸxå÷Ã;•“€NŽü÷'Þ¬‹œ;+p¶\%"|$º’¢HŸð¼OÓ 3%ØT×Ö[ujRÔžsœœùͳ®óIZ1¡Ad§{½ÙR¶‹«%?ÙÏuíX œ~ím“%Éø‹;q©OaZR¢„(ûŠÒ¯mLóµô°|)L>Gïãñ«¿¦Wg¼¢Î@ð]t?Yò炤ýxÏþ•Vêël+eÅ›ZV ò-ì—T¥d‡Š”žOžÞ˜«Eˆj¸è{UÕµ”;á´Tâ@Ü•§Œãçük™•áÉúGo¢bœ§~®_v{Ë)uå­Ð¶øJAãÞÞÙõ©#RÛVw'j U´ßhÁÜ~=+ž´–£uI\I ð%íx+¶3œƒíM[ºrúĈÏÄZÒâŽINAQH''ñàñ\ØÏ+Ê͵°í+¢b·û9[Û|@7£•ëôãùÖ6’RBYd¬ç'q88>™ô¦¶n-)…H>d «*ããßéñMÎb%â8j>^q{|$¯ +ÆFï| ~ulöi£&KèË6CËKÈpá¦i ¬’ŸSÇÏàÜê!8=ñéõ¨žïâºÒšN[˘åH×ð<ÓÛo#xÈ*y„$àg?>Õ®:êŒí[F,uǤ«+=Åhb0t‚§•ŽHÏ5µ—ѱº´¯jÊJGt‘Ç>õ¾*Úh ¹…gÌ0Gµ>©é¡Šboó¥;гøãùM"*ZR„§¹9'š[ÀB––Ôwɽ'}ckj ”úp{¯ÅYØœÍ1³†Þp$þÍ'p<xÿCæ´È¹%¦}KF[É Qî+uÙôÆaÙ-ÈJä“ßÓÓéQk¼ïm©M-•+—Á§!Cß·ñ¬u^Q«¬7jë«¿©Ô¶Õ—TæÖO‹œÿÏùÖ¶f¥¸>GGŠ”à `déèxÅC/w.7VŽ„©¶Nõ­ûùþŸÆ‘ëL»D3.OSHC ¶9Vâì09>•Ï“nZ#KDŠÓô‹Õqãé¸ÉB\} vVÕy‘…$þ@Õ.ÇÜòžAɬ®ÓäÝ.’.SV~C…kPíŸað+Ô6´FSÛxHÇÿJôXz …%Sƒˆ¯ÇªåÉmà=ÚV¡fy¦É;ÜmH)î¤ò>@?ƧZTEûS(œÿÙ¤?y?¶ >‡[EVØÙo%%Yq?ÙHç#ùVk*¸Ea)p…ë Üžß½íõªºiO0Ê–­G†ýz¹ÛúJìÓq˜t¤- …$ä‘GÖñ\¿±`¶¼™7[-Þ ~«YwàI"¸¿Né­c," ¿¢e•®_L$“ŸŠé®„X,úVØaÛÝ%¾wK˜¯¼ò½ÂGµ=cêM¨Rwð8œÃß;×°¿Zi©QR¶Ô€sžæ’Ÿ‡r RSßæ·ZÂVØR È—¸¤myñÁ®ìe(«HË“2¹©‰ˆQ äñŲÉjm· …dƒØ+5ZÐŒ¬‘ª•Ê7lƒh&öixm9÷ráçÔxЧ’UYFPµhØEîŸ[$#Ì´‡ ×öŠ¥)Väù»ŽüÖÊSS‰†PpHA2yaN0Bƒ”ÓLfç7,DCj;½»T‰L$€´ùqëNš^[…÷FìsV©5¹0„䢊«£v;díWª—r²¿.àÆ¥’#ÜÄj9Cm­ «#VHêõ––ÔWK&‰´µkƒeDˆµ‘eyB:ÒÉÜ^ËÛ7•gzR¢Ü€RÎE­¡ô¿ôezbwÚ¿\^^ºàìð|D¡>s»>÷ÏjŽÆé‡ƒnµÄ7ÌýƒU/Pîû'õ›‹‡ÁûüY÷ùí÷y®Dª9;›#†”"¬µ×ùC×[Ý­,êËTè¶É׋MÊ /4ÊÙeó1(-•§rˆØs…sLæ¼ÑÖˤ.»ê.raÌy6(ªK±ØS)R ®wIZ°s‘÷§Ò¤·¾™1vŸ«e=xu¥ß¤A•M2 ½ J $/% àÁ#æœt¾ŸoÖsõ]Úú‹”é°›†´5ìí!-¨©%#z©ÎIäú(Ud¹“ìòsM®~ZþÝÚõ¨çëùš_N=oˆmЗ!ù¬-зR‚ JÓ„á*É<àZC§µôëÜþŸ)¨ŒGcPǸ™Íœ©M»jp…{oÝèr1RÝO¢æ?©ßÔúzö-W “Pv }§•!a;’C‰ÜprF Ó+8n,-*Õ‚î¨s4Èy =&?Úú_=â$)¨Ù`ûö¦ñ•ÅÊ•Hɯ[¯¥Èn¨Ôú¢ífeQ®L[”ÏPÅ”˜>fQ ÷y†{y‡eŽ*{ÔFîѺE¨Ö‹Š?X1fâå! ”´¢¢”îò’äàyÆ)­}0_êZãê Á¨“¨[–ô@ $…%D)CrJ‚<=2g—ë÷ sÓ²f¶‰{ÐÜ”†0”©ÆÊ ÃeYÀÎvîüj®n+^e©Ñœ¯~³éû—XˆÓz2ÁúŠ$·tãW‰“\·¾¶¶ÒHZw+ îYWaÛ&”·Ô}Ipµé–mpmq¯K¤ËD°øZØeæ7eÄà…)8FàœŒçêOý•U’çd¾ˆW[m6‡zŒÌ–Ò ›Þ’À…q’Eh·ôÎ,¥{»ª6)ò'¾ãÌ….k¯%{É €žVOcÀæ’äÞã#J¤t^¶ü“˜H}0˜DŶ섶òÛFÔ©xó2p Ï5¦t â ›áXïK~†Dfâî’‚’³cGÚIy\JX #hMl”ØKÁ^õà­.yµ3Ft=JvŠÚÈÆV®Õ­ +PÒ•:)™>C¢¹³°· “ÏÔrÝâ¹{NÑîj@¥“Jê%¥SZ2ÉÆÑ2ÔwÕ=µýÏ]ë­a$9\‡‘“öv’ †0@ö<}i².Õ‰l»q¶>ÓAa8ÝÁ'ñ®ë F´â_¼Çm¶d~Ñ@—rG”ŸsTÍòú‹öyøJRd2âV¦Ö¬-$oQô®5IÎíMXèaj·—$tØoÕöin†£·f|Éw!'+Q$wô¨3Újóâa§ÎNÐ<ŸƒW%ÕqË–ìÆZia/6âÝ ÚHÎFO±ªÏPjuí¶%Iݽîã$‘ø­6Œ§šû¯2Ë*ÍEÇb+‚ä¶b¯ SŽ%ÏlœrkÉQœjCŒã[Qú]§/‘ÈR›l—]$œàsÉù8o½6|W$8p\<$zãÖ›Û}Á'ØÑy”åÞîô§7;5×P€Ó e*! qùp=k¡z 3ú|ê[kÅØ¢6w%¼ä?x {W>Û.&Ý5¹m6‘"0C­¨~ê’ ¡üÖºôj’㨻¬µàfŒ@ÆÄ¸7=¾{W?Ö§gÊßc§ÑíÆnHd×ÚjL)Iz:Ñ”(-§32p}é«Oê),ø^VBJiKÚR¬…“ߟÊè­Qd‹&#¥–ßR ”ã `ï§ü@öâ¨mq¢Wh–e°è*O)RFJÒqÀçßø×&*ÝY|A ÜN²ß™7´k•ñ¼D«…yQŒö=óéØ`jMöæä#([{Ùˉڳ• ˆ=óéÏ5EÛ „,¡â*tà ÇáR]™ ø»›dìX+ó,wôÏÍ.I§dÉ–ÕhXÌ]d¸C‹iÉ)R€HÇÉ$‘ùT¦Õ¬ZŒÚyÓÄå§@G§—Ÿ1ÂH8õÍRÓ®JZTc‰ ©h@n:ŽÕgƒ’£û½±ë[g\Q(Åjj2äpTÒ7©`zŒóߟ­Z%3ÂFEÿmÕpÒC‰~¸B–p+zIÀ'Ø÷ç⤺%N6c¾Ó­(¼«žÙ>¼GÅrãÖÈÒÚS±$OKÅd-²6ì à©@3Šw¶Á¾ÓѵÒÊR Œ4U´¥8Nùþtèⲫ12èôõLé(÷XªR’âÐÚJJ‰žÿáZß½AФ“! Q÷Ýc#àòEs«‚øÓ súE!‡VCÍ´ö·8ø&š.—=E!öa¢BŒ åvQÁ!XìqœU–1²Gw–Ö¯Ö±æ¿%¨ÏöV›YÜxÞJ»Ÿs´þu^ê}i.å0Á·(¾–ò£œÉû`T0E»Ë¹¦*¥‰#±’¶Õ“¹GÔŽ2¯Îœ-öw#<©.ÉXe¼’qG'rVGÔÒgUnÙ¦ž.B¸2LVK]7IÇ—•ØsÆ}xâ¼vÖYµÉ»\·'†)IÂAPÆýÐ~¹Ïém¶&B¶2ØnûéVxWsë‚r{|Òý|ÃÍé9ëHQeQ =Ò'…Ô¼’\Íq´YÊW(Â=Ál©%IÝ\ŸåNZ…"8S © )³‘€Ú}~ Wãšu×v—”Ô Ó <¨×ÿÙÖ£’¢È#Ødô¦?ɹ´¥—9û©á?Èõ”ªªR<}Z\:’‡kÓÁž´–ši˜›†÷ˆRÈ?wžãßò§TXä}‘™hCûâàIÁàöø¬dZ$8( ]ý³‹GNp3íÀþUc@·É”ÄYl¾ã;R’;¥D ¯b@=¹¬¸ŒFDœMøL*“j¢Ûb/£Xš™Àþ¯jhPáRÞá÷T9üë¨zRËÏ6•:ÚBÆ20Óâ©X¯:™hLhÊŒ‡奷Ò£ê}+¡:>…8ÛA(ÊOsŠßÑ ‹.&ÇŸé—ûÙ-±kØB¶$g§ƒƒ„Òf ©¤xŒNÕ°;•ŽA®ÔÚ›º9±N ̰–Rµ2 ¦R®ÜQ\·¹Ô[Ž•] ¹¢­Ñ ˜ZC€‚ãN¨;¥öG÷ÅW*·?*ÏoY*B2¼ÿ}Ur¦:LPÒÈVo“Tk™Í¢ž"Ÿ"•nA#?AéRm:öxúâš.ö·#¬ºÈÊ äJQ¦f$f:Ô³À4ÊíT¥x• :¶‘œ­[§Ú³7unë ÈN;à!ä¸6)ÍþÀ}÷¸÷¦‡µ¥³õÂm*½[›¸¨€˜Š’€é'°Ûœä÷ÅTâ+­õýP¡%õÍH6Ž*l) ˜'þ¯Ò™ç'¦×Ý&âHÕò5Ž0Áløîº©IR$$w(ÁÞ8ñJ§Æ7µÅÕÅTm­¬_Õðv⇧ǪÐöÁÇnçŠqéËQÿö³auøì¼[ÐP”ÙZŠ y\cóóQVœe²³-K5+2í‹©4ô»Ã–h—Ël‹‹{‚â·% u%?xƒœQéÆ{ÓBµ5ŽCÓ¿RÞm· RÝf<”8¤c#“œdõwX٤ͷ ®‡Ð—¸Ú’Ïqµ\¤Ã[)û<•¤!Ç‚ÖáÛ» Nøè˜P'ÀӳƬ·¹>Ï`v"­ A He iM¿••…$w''Ö³Sv•‡N¼¤´^¾£Ì.«-vMàf×íª§1)õ%ˆÈJTrp ŽH Hã“VºîQcʃo*; ©Qeüº¤$ìÏ$sôª'§ƒ tü þu=ëÃè²ÚlZÍAA:~îËï©#$Gtú8áU“ÌËP©(Órok ¿ä”HÕº}®R¼CSV·Ôõ‡F#-#Ì•ŸÝ#æ¡òú™m…U\§H„`XVI‹1.ºòö[R8ؽéR@'œUUÛ&Ê×¥ä!AÍvÌ)Ó@I#ÅCë~`ÏËjH$ûS¶³mÉ®,ÇiÇ\TxP„•ˆ‰ôå«AÄÎJûMý‰íÇ©ö¸—í.Ó3àMå¹jzc¯„†TÊ! öÉ+Æ>˜ïVŠío½[Z¸ZæÇ›Ñ”<ÃhWÐŽ*Ÿ›:ÕyêgJæ[åEžÂb\Ê]iai ÙìG¨ÏáOý!¸:Å#ÊÛzºæ”¤vHñØU&®‡P«.&Vî¿—?ªtÓ×±dfÿkr椉”‚èZ~òvç;‡r;NIÉ8š 5V¦ºj‹ÅírØŒô-q£gf)ñb2™>^yy$oÜ9ÂRw€3ÍtS ÇÍʆRŸO°ñ µœdúÒg%-`€1KŽæ‘<ÀVT8ªÁ¦õ4M4´ Éõ¤³cdž)r”ùHí[_@-Sóåbc ”V-¶“l’ýí1¾ÀÚ ž/ýÀŸšâ­SrÓꧦ\q¨*YÜ?³<þîAV ÷®ú꾓‡ª´ì«<òøŒøü%íQÚB‡>Ùª†s¤šbƵ6d-}¼IÄ?NJʼnNsÒ-ßäZ…U‡“•Ît»ZÚ–â·‡ß+8KiA;Õì)¶n’ÔÂ@mëÁ¥g0¤cþ×j¿õEž,{jãËe¶£#*#ilÞIUwÍz¦ž1áÈ]ÝIN"@RUÿXgÍõâ•U)<²6TŬF´â7GµEÓÖÒ—å7ö×› –sÃiÜ0ïÛ'ßôÇrÜéì¾¶œjÚ••¨`­#ïcÜüW¯´åÑçî ‚]yx'h+ç°qð§¤h‰6Ü‹óÿeŒ–Â’ÑXÞ{%^‰'ž=*TÔoõ~´#‡Ã´æDnF•!p¼dÅqÅC¼¨#w©Æ3ó] Ð+ÜIòa;W‹0Ân=Á• ) kʃò }}ÅRšâtY Œ!¶ËHe>im >¿Z›þŠéÕÁ¥”€äÙPìC‰ÇóÇãHÆÓ\,Ï‘«Qº©.g[‚Ò#ƒEkÀQÛžç×S¤¶4‚dÆe ÁOˆ´!° ¼žJIì=À÷ø©!±  ‚IGãZåÆ[Éu´:[_*o' ÉîÁ…r-tuã,¬®e‡qCI}·]p·¹XN2œŸ\vÁ?•{tÐY‚–Ø‘û- 1ÉNG¨ó늚rÖÞöRrò–½ð=RN*GbL/ºÒR¶ðIÏsî>qU…$ôcž*pÕ\í pŒ”Ém¿ „ ‰#ãœùÒ-.CI\¶e>ê”<H¹½y®ž0£È(%-FBGïŸõšÑ?HÙ&Ç[bC$á²@ç¾G¯­ÂKx²Ðé4½ôssÊ’r%ÁµA$î9Èõ9ã=«lIW$ ¨ÛKž8ðÀ_Ž1Î{ŸŒUÙuÑ¶ÇØ\ð°?!ÿ•GgiÅ1½KŽ”…a’O=¾ë4éÔ†èÓ U)­ ÅÈ÷§Zð^ #x+tJF23Æ8ö5‚ôóNÉ̉.º¢µ·«jNqÇ€ò©Ô»jØeiLrúW”¨-8ç$¨û}>)ÑÛSKLr’U€¢=¿ò÷¤9IlhUØŽ8Ëq_û4vZh8Gˆ¦¼¥*Îpµ“ëY±n*|;2;ëÝ’†[@R²?xœñœzÔ‘˜(,xˆÚóå( §Ë‘êOjrµÛ„s”!´ ¯§4½YWQ$7YíªC C­ÿðM}Â}3ê~kÍsk-h‹³Î ”·Î¶ÞÕ4´[_YíåÜ0 ¤ÝNe ÒS¡©)R^eHq%E ¤ðFG#jthÚ9™’Uúé#’t•ýK£fÀEÝÆîćàBu%AäùƒgºTœìGÒ¡ScHƒ|u/´¶žR²æäöÏÞù9©\Ó/Jk;­¾ëqû\¥UŸ2Ò…´ãÝ* ýMIæÛíW«•ÆYwˆï†ãsû2æR õ!'ùW^¥N¥Ò¼eªøØÈèÓ«Û³oÈѤ[l7!m$¡h]JS•Ÿlð F=½ê@ã ~2˜ˆúmïlÃ[ÜØãpÏ÷'ŸOjk[LÚâ–Z2I!+Ït÷£æ±‹v™dU¸çõEE ôq )'Ø‘ØúÒ+FQ†kjÇÓš«ZÐ’²û Q*T-BˆW††éP'$¥+W²UÛ$rc]]Ñu±ö&ÂFÞÝûŠæm@ë–xVä¶\iÀìÉiYó2¯t㑟lWKtͦâ´ÊwCi¼rk³ÑR”ZŒyžS¦$e;Yó.ø+BqXK€‡<í*‘ÛÀ,ƒž;ÓŒ²JÊŽß@k«+Á¶™•55fPqŸØ<œ{)ÁHB™ ÑI”ÔÆÆ*×+Τ3¢íêmwÄÇÿ¸ª–‰ï…~U\è;“ËÒpbEG?´Ê‡=ÜUMà%ƘËË V;WBTÖTäs(ÔvJ#’g)j 8€søÖ©Vd8àÁð–9Àõ¢Œ¥EçV”Çzq.<€|'öÁ¬Òr¦ïkŠEi² «$ ~¡~`’ä›Ì¤Ÿ´Ë.:–R‚’|¨É'éÏjyc¸ FÁêMsþœvõeÔ½[×þ¤v±> Ûï@Üâ]ó ÔU–ѳrJGpGT·Ìbà BWœ‚3“ž ØÌô¨9âÒƒMvùqú„ý)5Ìùô¦=-.áhéúgêIŒLz$EHyØÌ–Ò[JJ€ *<íüš¦lpºÝ¯:iɲ´Úâj Їú²!Y™n%{SŠ*![Ž3åÚ¢:OQÕq„{²öÇ{ñKÄT–†+ŸìÝUÕS4ìkzÙ·§V+U‹†TB*wiVxŽþ©×ª}X½è›¤‰,j#ujY~ÌÃ.M²TySÂè@÷©7¥„ÃMEÉì[é .S‘–Êä4q °V{;JZÔbÚ£ÅPso34ïYzÍ}€2àY">Èu;“¹1›###"¤HêV¢SÝ%ALjÖœ]ËöG‚”4¡áù¼¼¬÷Ï¥-Ô“/ ÔÓwíúظP„¡$$V°TIÕ¬z»zÓ²IÔ:Jûû² É·AaÀüVÔ£…x¾!IX9=‡¦¸SµµËô•ÔVø7ø ·Ô߆‡¢­m†T¤©) X+å~¸ì*{²ÒÅÂöŠÖö/&ßaÔ•4òHQI(P pG úViPÛÁÍsv…ê;Ñßµ[l–†¯7mRå¶3m6´Gñ–—–7éØ(zcRHÕš~N²Ó—¡i“y²ÙMÚ ¸¬­ <Ž mJ8!JƒÈ©JèªÆBɲétä§½dÙ*oo­RV¦k¨ô*îñìêµk&Ý,±·Ñv¥$²¬+;Á#hõ™.Ÿ£±yZ£©Þ:Ü>©IÂw¯gÒ¬ÝCÍ%ÏírǸÅÞ’•õ¾YPZQÙ’{UˆâêO½4Üc$‚)ÔªXmH\âÒYqöle’›RŽTôpWãŸec°Çןj©tÇM55Ô)ùl‹s)íö¤©%AŠú¨,ÉuEA'5 Ÿ¦ «ó$‘óYeGRvÓÄ![‡$r-×Aj´FŒ„HlÈO¾i½2êd˜óX—5Ð2–šQðÐ3ÝK5Ö’´“c>\SLÛ, ‚­£Ôf™S£ê%¹hô„¡ºLåk®»!EapÓžÈBÉÀúâ¤eZg¨qÖ¹Iy2S ÷ ägÐ*Þ¾Û¢!²®0{÷¨¡2G Èì'Ç2w„á[}F*Ez1Tey-‡`ñsž".ÜΡ±:]Œ„¬€´à œä¬Ò×™VóÏìñþ¹¦í€õ±øÃˆ<¯Â¤% -»§€¿Cñ^~1º=¥iCälpùÒ JˆçQßJñˆêŠÆ×KÈY#Z“Ç©‡ùóK~̤¸62¾;})TU­¡æ<‘ŽxÿB¯®¥\´<·Ét+nÉÈó'œü‘ÜSû¶Zòãpǯze’Ìw¦FÿE§Ê¡øŽõ“)+@l­ÕÆJ³Å5JÂ%õÉyJVÔg9É8•èîH> ýäÄ{qJ¡Ba¤ðÒJ}wçäÒðPÚœöÂ{QkîVöØ‹¹§Xqh[¬©d2ê¸ÏÂ}©$­% Å8•!½ªVJRÏÂ¥k <í]²kÀÐ|gߥº0|‡F´ã̉³¥ÛhlB@àû£Ò–F°²ÁÎç"¤)(Ýà+¡dç´ûžOáTT`¹¯7»”È@J‚Tyvæ¢zퟣ$•©Õ$'¾wߦ²¿d…%i?x«¹úÔy؉zJtžÝù¤×ãd2Œ¬ó3ú™¥®ús¨’”Óób\ÞrDi °Ú£Á ìB³ÇcH¤K• oïÄRò"ðv8xò‘ñ€Gå]ss³ÐÞˆHJŠNì}ÇÏz :«£ÛÓ2}¹8Ô{sH%¸í$…I{8Ïñü ? U¹$Ö¶²‰o'WkÝ®ÒÔ7æ²ÀSrRëƒr’ãdcØû{·Øå¡h+ignœJÙ õ ²êçÚ!¦T€ Œ¼àJ}{÷5vé¸öëŒd$ò H þ5èðô(NžI½O1_V5¶ek¥´|tÜÌÀ‡ÒꕹEG…¯ù×Bèh1â0Ùpå@Se²ÈÛo¥°ß‚*gµÅŽÒJÀ'µ¿„§…‹·3%JÕ+Ï4Øûïe*oîŠÅûÑdøm·Û½d܆Úo  \dŸk •4é)·™hZ¥WÕz’Û]Íð6«ØÑQ8¬ 8•mWÖŠ¤ði»Åصi)S„[±jqs–^ßìo»è›–¢Ð—m9®5"o-NB<7c[Ó°Rw¹Y;‚O'cÓ~‹±ê{6¼êÖï1cÁi¿Õ©ayÈ”°³¸€ì3œš°îŽá¨wô¦FV¤#=ë6u[5ׄTÕ·!NÑ7Çd±Ô ÿ…«­±¶„©¹(ò…nãp QÔ€=°Óléd—CßÒò¹ÚæÝÞûtéYA|JÞ *BU´§Ê]Žs’jëhxQÀíLw·IN2rNiTãÄ™5h 7vƽ-k–0l×û›W’ãJeÇQ0•¶S·nУŽ3Î}j1¤z¨tdxÖ»v¶T7å-˜-ˆSÉmJ*ðü}ý²O;síŽÕ1³=–Sîšw}!Æ Dã’c¡Ô‚|ÑR[:OY]ê nêSN8·‘mû?•- Úœß¿’|ÇîúüR·A™c¿Xcë7£Ù®×\ÓÛµ· ÿiÍÙZ”mä{æÖ§ð§HÊÞÐ5UµE)áéJé¯Or¨¸t鹚Ç[]¦Ý[¢pކv©„¥¤·¸/qÜ|¹û£ñ¦»Jî0¦i9^åÀig1oh@KI ”¤,’£„yóÙÛÎjÛº0R¿#Šm)^íÙ8­Œ&®"¥%j½^ÿÉP³ÑE±gfÂ^ñ´Å»&é ƒèPψ½Ùs˹#îãvNpN#h9¬õYíwjÔb™¨ó¡9;â¶‚“„¯pÙ3ƒŽj\ËAyVsŠÝD;´wÍVqV²&E§b¶ƒÑ(MôíÍ)#P<¹(¼*ï àÔP…G{¾B¥ÎyϦ+{$~TmQ2õ©Õr¾ê êõNCMÆg C!gÔ|Ü‘éÍYÅEë-üšF¨Ñìô¶±[EéIôñÓ}ãF¡hÇÙ?Ý›’Ú·û?¹ýîõ)Ñú~ãb›{~v§¸Þ›¸Í2cµ(ùa çöHäñϦÎ_{h5¥O94(·©*àôõ¥…{y­2JV“Ï4éÍ ¬qL×óLöXÏÅ3%µa*É &!¬¼SÉø­ç%5Wõw®ZG-QZ®,gìqÖ?gÿÌ_d}9?Íú³¯zúüêÑo}›Dup>V¬ŸÄb¨ñy}ÔèU­î£¨z¬lšfÜ©wYÌÄAÈ@Yó¬ÿu#“\ÏԸϛp,iv mchzB”¯žÉüsøUYp•>âë“®’äLyÃ÷YR–~¦§½ éâ5¦©¥"Û )~àòÞNp–ôÜxúYkâ¤ÕæÎž¡õ¼Ù–„éî²ê Õ»\e1lÜOÚIS§Ô6ùíõ«_NèxÖ›œT£ÆsÃ9S¸Vµzf®Iìlj ˜qC,¡;m¡ `=G^g2ÛtsÆáî+Ïâq5*;r;(S†±D¶ÈÒQ!# ÀÍ?´P7„­#¸?^ 1Ø <Ÿ2}qÞ¤m¤- åÇÇze=Pº›ˆÌe ’ÈÞŸìw‡¨­­¥¾’9È 8"”œoÌÞìzäÿmaÑÈqþ¦$-ɘ5c$!YÆ8·°ÖP¡’žáJò}x¥m¥²Õ+Üð>”¥ ³êêÿ ¾Qnb&””§O¹Mx®xPÈ>ƒÒœvFï‚çÆkb@I„¥[)Ææšu_q“ê®mp y@ü&—¥Œ«çšÖãXó)X˜¡¢3ÔØÆÔ$$c¶8­ J³¸ÒÇR””üšDòŠ•µ$äþB—&Y&nRü&À'cíóIÎ<¨ ã>çÞ”ÁY ³æ=Éÿ_Ω>±õÆ×¦þŸÑ®G»_)~`!q¡`{8çÀàzçµ-ÁÉšhSY(ÁjIú…®tÆ‚iµ_$©SŸATx, ºî=ý“ý¥qõ®Kê6´ºkÛâ®÷rPÓj)‹ ?ÔÆo=ýãŽêõ?•1j ÅÊç>MÒë%ùÓžXSÒ\;‰??àvÍ1çd¨pBAòóÇåZèaÔ5gQFž´„—â'ÀXR‰ó`üÓÿOµÞ Ð÷¾<5(xÑœ9m_Ocò)•*ã!8<‘þ_5‹å*!)HŒ…VÞVg+†…[¾ÞGcôç¬gR²ÒcMDi؉!A ϲIá‡?mÀÔ ¸‘Ü/Ôâ¾i)‡çˆÒ”ž`RjÆÐ]lÖZcÂb[é»ÛÛÀ ÊÉZG÷V<Ã|ŠÓKRž›£Îâ:.Pwß­Ë.ÇñwÅ!aEçŠsÇš¡tÇ^´µú"ûzí39f_'Ø,qùâ¬[&±Š–’´>Ì‚¡Ì¸—ÿi5¶úOIhÎ]J3ƒë"tàmµ’}¨¦H—Ö&((“Ͷ3Œ•ÓbQÓ[jÑ–µ}ï·§íOOZÚ„ÒÞmðžØ¨§M.2™Òp£”e‡íV —¢…wJ…s¤êS³oC¡AR« ¨®hÊœ·6$*²º$€ÒÆô­÷u„Nq”aÝ“HFÁ Q>§šé­QÏz;šY (?–*}¥žiP‚R0@Á¨>*Ï­K4ÂÞp}î@5Ÿ¯LÑ…•ª ïO<ëËKE×÷”ù@àÒ©IîTqO±P˜±€Ï8¤Týºj+sE?ܨäö2šî´Nj5p•:T®É:R‘“Î)›œvø+HªgXu³HXÛP›¨b—@Èf2¼eŸŒ' ~$U!«IçRÛ°ØÊŽN×f¸Oÿbΰñ£¼UÍQUj{¨ë¹ÚŠ:@XíïQËÆµµ­o!¦Ó÷–âÂR>¤× _ºÓÔK«ŠZo „ڇ܊€Øê9þ5 Ÿt½\Õ¾}ÊTÊʼWйüMQâ*r²Ž«?zG]kž¿é»A[q盓éÿ‚‹Êíž?,Õ®úã«õ1\[kŸª!,PÁ;Ô?¼çËZ7±P*#Ú”6ÛMà¯ÊAÓñ¤ÊNNíÜëaú"œ5—˜¶ûÅÇœñI󣜚V[JÔ$‘‘é[vá­Ê!'Ë„÷¯v„¤“Œ(ãƒÏÓéUnììÓ ¡$&˜µ—X@H)IR°;ñÛ?tèo.*íÚ–Ü ‘8-‰õSXPÆ> þ5ή%&[8l”¬(;ž3þ<ýµ"4¯U­2e:– ÎÌeG%΢~Í*´o“S×ÁÖ÷&²ùó`cà∉q²Þ6îÁ ÷§™l©R6Œ¥[TíŽÆ²b)(ŒÇÉtî̪vB[F[V×R7$í ŽGÏçš’´´¡ $œ߸¦e6!•'pyO=½9¶…)…6(8X ñèGÐÓ ²èRm=EÁͪGˆN6’”ƒžÝø¥¬¥$‚È ÷ǧÒêØ ’ ü” ­I)ãœUïb–R@XÁgÊ?×4¡*B”P àF)39q–¼-…çwï'ëZ|T¼·±”ŒvÎsÍZåw:ÿ‡Ê·;%=Íc ¬ŒœcëÚ°‚±â)*ÁÝÜžß•k¾\-–KjîW»”Kd$ —¥<–Óøg¹úTo¨[[ ÆäòBGjeÕ·û“³.ï¨îlÛ`§;TáË+û- rµ|Æ©~¥~“öˆeËwO-ª»JÚ@¹MAm„t6p¥ãÝX¹«V_õ­»»wÔWI7IÄ`ºòð†ÿº€8HøHÅJ¦ÙÒÃtuJiè¼ýz±eõ›¯·]âØtÊa°¨”¸µ+ý¦XöZ‡ÝIþÊjžq)`¶ÚÜPTP€6Ƶ¼àIHi°p~ñε$)jñ”KŠ=ñßäóZ!¡ÓŽJIÂ+×Ôг)õ™ ÊF0Fx÷5‚Ò·HÀî3ƒÆ})bˆCKÚ ’p'Þ“Èy t@ôOñLB*F)jÝÙ­ ²Ró©NÓ’ /­`擹cJ»þµBS¡;ÒR9pÉHDzf-¤)Õx¤Œî$d~Z›öŠtÜžX+zæ"YQX( P϶1éY9J9p§€N{Rå-¤êä(züR'ä(ò‚Aõ(úÔ¦ÞÂçNMÉÜFìfÂÆÓ’yÖp¤\mï"L)oÅu)RR  P’Œ©*Qì=³š w¤)@àc8< µÌrÃÆE£:ç|µ-¦5$Ape<}¡³±ì{ŸE~?QÎm)ÁÁííEBŠå¡Ê¯‚¥ŸÝõð:ÃMj óv(ÈnõrJAVe¬æ>™©3Z£R5 é ØqÛíŽBtªwZc’x¿ü=x‡'îŠñUëUr¶góÒr+ÑÚ—Ç«oyüÃ4»I3:«RCvùÿlsüè{Sj%ŒÿH.¹ÿž9þuC¥£ŸJ–œ…R³Ö½ÔŸÌº©'¥Ç—5v¤lAvþxçùÓtÍi|e¥-z†ä„•)SVúœÔ?Rê"”G vL׎Øð㤭ç”{¤sɪŸª±z‹Q¿¥Ö ½Ž$‚~Êܘ«eµã¾2å ŒúŒúWO†ÄW×3K¶ìÛ…ÂU®ï{"y«ºß:1SÛÕÊàðãz¥8Ç*ÿ\ÕM©už©Ô®•ÝoS¤#ѵ<­‰ÀgÂ÷äŸZÍ vó¯AG KK·ÚÎþ nc‡|Î/ñ5êAO9Vk#»¥.vÕsfÒÅáû\Æ­²\SLL[ º´ýä¥xÚHõñOm›â0\ì¿Î½BÖõèkÀ2}½«ßLŠ­Ë«ö™ž$nyÃøšÉ/;»—\?õ«ú‘éÆ+$ƒÅ5 ºrí3Sï)D\?Uš«Á×>y5¥Dcô¬À~POMîfãï…‡W”`§Ì‡ñ¯VóޤeÕ”‘ßqæ°só^pÙ ò…sÿ$ÐJœ—2úé§PïËz`ʾÜÎ*V“)yu À óèçS4_/[ÍËvûRÿιÇEXµF ¾´}ºá>çJS¢·@!%X†T‘øŠ´ÞÔ£J¦;GÒ7‹2Þòµ1PÔÚ>¹HõÚ àcpTœéj»;N/ W6jný×&Ò/·½¤›ÝÉ'ßíKíù֨׫»i)zñt$e\J_#ß½F°Òò@ ß"y†k¹¼}r)SW­;".åÞmdC%žø¥µ¡m()¾Ý8൹žßZ¤¤uuM©_c²‡¢y}ÍŸÁ9¦+ŸT5lÝéŠôkrãììÀÊVOåŠ|:7=ôñcc€ÅÉÙéñû#R_oÅ‘¨®l6ÉrzГù«¼õª5¥N¤êë¬ç±áC”âÆåñ®p¸M™qŸL“1dåEç®N¢´ß×ò­ôº&ÚԨ߆†Ú}g×›~íûô…×›²Î¸@A<<ôÇp}vƒø­õ£Ô:šh™¨¯·+¬÷.JÜ)øNOéMeKÇ•8ÕUá9Zãg·á]JT)ÒVŠú*4£GÜ^¼OKÎýÐâÉ퀣ƒõ¬¼i*FÒó¥¸Þqǽ`®Þ€Ð²Ÿ\žôáªRÞæÅK‘»;˜²£Zœèìê‡o1âµùÖ¢ïñY% AûÀŸ‘Sku'-Ù‰%ÕeO81î£Y¤”ÉZÁg5"…¢µTþŸ\uä;Ný9l’"Ì™ö†‡†é-€Ÿ «yåæù #Í߃ˆ©%\äš›1nvÙÜP©oäuÁÏöÍjvKêR²òÉWÍÞµ$äŒcòíAõõ5)X¤ªÊKsÒã«P+qdš7+$îVO®Mx@à•`~uêöç9ûT•»Ý°ñï÷«ÏÃÿáœ×ƒ9Çñ¯B;îV>H©¹VÙ¥õ¨ŽV¢>M›é@+𢬙IE·¹Õºg‹$p8lÿÚ4ê”r£„Óf˜õ3 Wnÿò4¹N2;'ØW‚©w6xvl/2ß NãSn†&õ$6Ù2ëÍ…z¬ ÄdŸÂ <߯–Ùn×â%æÐãh›eM‡P°AJ’  ‚GñŠvÂhÎ[&2…E ‘”¶L{µEwUuF¹Ïšã³îKñ·¼¢”€U”“„á ¤qÀ©t;eŽý¨õ^–gNF·~©aÅÛæ4úÔê”ÑØ¯qÁ $Ÿ^j zÕfuѫųKF°]Ú˜&*[wÈCŽ ’<"”„‚£“Éöõ4ºïÔƒÑ.Ï[ô¼ MÆðÑb}Å–îä+ïøm”€Ù>ù5Ó§: ˉ%+¿«l´í6B¥%|Í=~hv}};£4uÁÍ=ï&ý :û²Z<&B“€ÞÒ0¬)8>àçÓ­E§"_ºÇ¨äÍŽ%µlµ5!1”ï„—œÙäJ•‘„ðrr¿V[µÄˆúZŸ¸ix¦ín—m’˜¶K9Ú∜úe<>iS½H¾/XÉÕª ©Sa&ë{¯µ%°…m$‘‘ÁÆqÍh…l2‚‹µ´ÒÝÜþ##Z†TžÚinîÇ^Úí¨ÒVKÂcZm—§][| É}´ýò…Œ-X(ÏÞò)~•! Ö‹Wa-’6ª%ë,•7ú£F1§¶ä­I¸®RœƒÌ”€Пšx‰©dÀÑ·}&‹Rbìâ\³+agiOû;{îë'”qz%•­;mà„*U\¹Y¯/Y‹Ñö[=êݧOê×­¾$묋’ZÜ“»VܤG›¿1íg¶NÒ·&¬Vû=÷UÄš¤9á!I„œ6”¨dùÎ3‘žF'j¦¯LBF¨ÑëôØQÓ™ÿ¬WJi'Ê€•n9$äÜö­sSDÓS!OgCC™u‚VcÎ7W *Ü9ka VÞã {ÖŽ6ÔVµ¼ùwoóêÐέkzîßæJ4E²ÏMÞ›·Ùmõ›?T\_[imFBN9'¸äúwêî­›§§J†ÜD@¹8ó¡Q°Hˆˆ)Y'Ê3íVŒM×~F¢¸è¨—kú%¹)¹âèät¥Å•ê‚T±ŒŒÎj—Öýdþ‘éÝ_cºi ,»öì&¢ó·ÅJJf€A8Â0ဵä٧СFºŽÚyøš0´)×qîõ©;ýÙEéš“QNeÊßeqØž7œ…©`\ãËôYµýÙWSzëÙ¯dJÔ&"cï71å-%ÂÒ•¼ ààñì*Ѿ¢^ú]­YÔöFØya¥G“òvHeX%ŽAÊRAô pFAšé®±èý-ÔÛn¸ÒÝ)M©èÿi2c&üã‰]AO”©¼4”’H'Û]ukXîd˲'=3Ðz#\õ3SÂcEÆgБ$4ˆŸoPUÖB\R[\‡TFÜøj'$dÖΰôþÆ4¦…Ô–#h‡ªfÜĶ—³ÜĦß%K-íðÜYNä·ÉIãÄ9^è.®ÜôwQ¯úª-¢$È:rqµIp”:ËË+(ÞAÆì{ñÍ{¨ÚVÁ¬l:£@té­;.Õ,ÈX‘yzp’ K~d¤ `ž@'žô]X2ÊåÜçKm—¾’ké:«¦úsFÞôí´Ï€l÷Oôìi×6>€êñØnû‰Ö\ºÛžýúmŒÓèUøºÄfö¸×2 ­a_x©D’¬òjpý! “­ÑféÌk`Ö–Ùî®~¶qçW!Ä)x#8|0‘’¿¼00Ië §Gmû¢›Ÿ*ÆÛ©´Ýº8Á޵µÅ4BÊr €;GênˆË.g@ËèŸO­·éå¦l°ìÂÊÞ©“yB'ço»\mÛÆ9¹‡ ÖX޵é›%êS ȸ¥‰ ,å'œƒƒÈâ¥:ìzc\ˆ÷-uÒÈ—JÔDÅUÎ=å輪[(IÉÉ<…øà*¾éާþ…ëë6«ûÛ²Jd}›Åð¼\åݵXúàÕ[EãYÜê †éUÂóÕ)#§ñÄmЖÄÄNxJ’R•­iZÀI(Ú@ÂO¿5¾ôóI뮓t»VÙôü=-qÔš‰6i@ZË^}ÀZ˜23ßqœ †ÚzômÚ“¨÷¯è wúoL–¿Xãì9JÓœø_´ûùÆÚšë ÑÑ#Óûu¡Peé‹À»Æ» {ŠÜ>´ g—áÎã÷;sÀÚ§¡uÂÐ0Ô½cÔÝ¡£ÛµÛ7Á¾5%ÕLûBRÑ+^UµI˧ŒåíÈÛ´ií¥¿F['Q/Z& úôÍÖM½M¾úÛiÒ§VœÛÊö%²?½ŸAM“?H›ÛUÚt¶×®.ð)wÆî.-;RíÇ#VŒÇîŒçœÂ§uGí·ô£õBaÜ•;õ—Û3¿*pìð¶qýg}Þ¨º ³æ_š/¤ZKO鮟³yÑÖ[ÛŠ!—¨.×Âc9 +m*m, º’Bwà”‚N;ò1ËýK²BÓ}A¿X­ÒÓ2 9Î5ô¬+Äh!ÈàùHíS–º½f¼hK–êOXÕ#O´cZæµur ­3€kÚ•€éÂG®Id·õ Ñ@j½%@ÙÀ¾NûLI‹qN=mlRÊ T°0•æQ;³C³- éêYÿÿ$©=j»Œ‡N>BO§ûLjÙÓ{”ÍQúõ.¥•"kVylÉ€ä· Šed á ™ö}»œi{÷l^qáãýîüR_Õ˜Ó:p¾žè½IéÙ2„¹ÉÌ‘-iÁN('Ê RqÜO=ó è/>ÇC·Ñ] §¯6mÒV7­R¬…뮣—yC3šwá¶] Ø 0‚Ÿ0É8Vk=¤4VýïzÒë¥àj½‡S; ‚óªC2RÛ@9±YRå(y8É#5¼õ‹OjëU¤u¦Qµ-â×0™¹5xzq¤ò⓸䓡É8ÆjiÓ­a ­_¢=âÕ©"[ï/.ÿã :/?d’ê ™Ú¡Œ¹µ8'!<„žjt{ýÅ«,-!¢ôΜý&:oÒ¶´ZajM="jà¡eIeϳ’vçZF;d€IÓ:[MèM{՛曋©®njÙVø庴Çe>9 Z’‚ ‰Ê½}ŒsQHÿ¤%ÌužÓÔZr3‘,ðo·Ù£Ê-6Ë% H!B²|Ù'o8ŒSmƒ¬Éfשôî¥Ñìê /¨.®]UoTõÇv+Ê^ï#éIã„çËÎ=2r]’w.(=<é¬N®tÖê½3:w¨V7ýY!Å8ˆ’¼&žIIÎFw¡g“Øv¯5¶€²hˆjYk[._¦êÇmV·ÜÉ[1XW™iôólRsÞƒ<Þ£_:‘Õ]-2+ÚHFÓ©i6hóg–bEC$,%o,r¥lJsœ$bž¿LN£ÁÖº†Åh³Ïƒ2=ž3·¯tG&¼A{ÂWï¤mWÉù¨v³-Ù’f¿ÑŸ§­K¥õ~°¸Úc_ß±²†íÖÙSxÏHX's«*@ H ਓì*~î‡é­»«=6~Vž°·TFrêÈÄäÊf݉-© JÕ÷– ž8õ&¨Þ’u*N„‹{´K²DÔ:~ýG¹Û$:¦|D§ 8J”3ƒÜàÓ¨õ>7ÛU×Dh㥷:®ŽÌSŽ¥IR R‚ví)ì;ò{T&¬ZpžvËcPôÞˤºw­ÄûT7o3µˆÓú}׉%–’­åÔŒö(QN}hÊè·Oí·ù ã¦l°ìÂÊÞ¨“yB'ço»¸#×vùq’ P_¤'\$õaÛ?Ùôò4ëź÷†ÜϼòöÚ0@@ƒÜó[µX´ÎºD{–»élKƤf"c*çòôFÞ ûª[(IÉÉ<…øà*ÝQmTi2ZåCé?ÑwGõã¢`ß/’g̶,=!HijSò0êÂ~ùB#íHíçÏ8(ƒÒ­¬/ÔV›(–KÄ]¿2ÞCEØí…¨+žÅah㪾õDÝ:§zRlIe6kŠç~²7xÛ•![<-ƒoû£¾ã÷{sų¢ºˆÖý®–;†¦Ó¦Ïˆ´X"Û§}¦tc)'Å Qá…“Ïïnñ‘X‰fZól@æ•Ò=Gè…êñ£´ä}ê±LFV¼ÃðC #<ã vÏìÉ©î·èÞ€»u§?Ñ ,f­½ÍµßZÚê₵%ÎN2twçpíT?èïÖwºI"òU§¨"\ÃQÕ3ÀðÜeJR†¼Ÿ1ô‡®ôÑëgê[V¥²ªçtƒÕ ´,¥²NFâ´¤ãG5IØzžmÔ=(6ð½\Q;õÛ6–vª9Ùál;¿Üý÷½ÛŽd7¯Òðõó@^ì–&m³4txÒ¼tMB›CjÜ„xã=ø©Ìˆp’dϬ=>ÒJ飼-§ô† ±Ý6ÛX·Þ[’¹Ð·¡q!ÕùÀQQÏ›ÉØdÒ®¶è- lÖºc§ºwGC‰?Y¢ ܺ—×›zK¨B¼ó´d!eDäÿ©®£kM ª£Î“hé{v Ôçüw§·{uô%e[—±’„¥!G<@ŽÂœzÁÖ9ÚïXé­Qo³~¡›§£2Ôb%ý£.4áq.}ÄãœqƒÛ½  P•‘{kN’h6¡ë],擱iøÖ{j]Ó÷¯×h\ÙrÖåZ.•y•Æ1ÛÓi´ [½Dꦑ×ky¼ô¢0Õ“bøNÝcÞŸmèob^û8N7'ÊpVAÚ3žs×Zî¥ÐÚWM±£íVw¬,)—n‡íf’Ü®2Fã’¬¨’1œTI®E¡%ª ¹R~æsSX­A\ã?ZØãÓ“AJ½ª·CYå®·;Ä+k@—eHm„9*Z‚Gñ4UõútÚF®êœ}M)ÿEÓ˲8r@²@ãœ9úz)±ØËSGbO§TUfŽ‘Ønÿò4ä; í+‡.ƒ»¾/ÉÃý'þü¿'+šñ'WiQUý ÿO/ɤߗäâÓê=(qs]¥E¡éåùÒïËòpúN5± T­Ç°®Ü¢¯ú/ýù~Côûòüœ\ʶðMmqYPµÙ”U@Ý߉åù'ôŸûòüœdÙÚ³Z&/ƒž1]©E  ¬ïÄòü‡é?÷åù>wk©ßc¶Ê’m³©à:¡•:¥zçÖ¾ÆQ]L.aâÕïs¡„ °ê×¹ñì‚q€sô¯ïÅ}…¢´d7ñµ½gŒc<ó^‚ïæ¯°tQ8ýÇǬq@IÅ}…¢§ q»„dppkÐ }9>•ö ŠŽ<~ããî 8×è'€¯°4QÃ'Ú;$}ÐMy´ûsé_`(¨á÷ƒÄ'Èøÿ´wüëÌmŒsŠûEO¼=£¸øüŒœÁùè•ÂR3_`(£† nGÈ cOö«Â“ÿ+ŽþµõþŠŽy/~GÈ!»Oo|ö£‚ Gð=ëëíp»ÃÚ{$”œûóï^åX ŠúûE>ðöžãä T@áG¿?aJõÇÍhÎrNkì <>ò=£¸ùyñžÆ±R”}AöŠ8`ñä|}ÿªkД“Ÿ~=ëì pûÈöŽãä8àò¬R<¹8Å}¢Ž/Ü|d ŒwÅb§ÂsÇÒ¾ÁQG ‡ˆ}‡È[|•ÍðŲ ¹ÎåLvá'è3WHEÍ{«æ3/SFwKÙ² ×$bK‰ã„5ÜdêÇÐ×К*T+*Í¡‹Aé+ˆÒñ4曂˜vøÃʑʖ£Ýk?¼£êh§Ú*âBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.622306 PyQt6-6.6.1/examples/draganddrop/puzzle/puzzle.py0000644000076500000240000003114414532151332020727 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import random from PyQt6.QtCore import (pyqtSignal, QByteArray, QDataStream, QIODevice, QMimeData, QPoint, QRect, QSize, Qt) from PyQt6.QtGui import QDrag, QColor, QCursor, QIcon, QPainter, QPixmap from PyQt6.QtWidgets import (QApplication, QFileDialog, QFrame, QHBoxLayout, QListView, QListWidget, QListWidgetItem, QMainWindow, QMessageBox, QSizePolicy, QWidget) class PuzzleWidget(QWidget): puzzleCompleted = pyqtSignal() def __init__(self, parent=None): super().__init__(parent) self.piecePixmaps = [] self.pieceRects = [] self.pieceLocations = [] self.highlightedRect = QRect() self.inPlace = 0 self.setAcceptDrops(True) self.setMinimumSize(400, 400) self.setMaximumSize(400, 400) def clear(self): self.pieceLocations = [] self.piecePixmaps = [] self.pieceRects = [] self.highlightedRect = QRect() self.inPlace = 0 self.update() def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragLeaveEvent(self, event): updateRect = self.highlightedRect self.highlightedRect = QRect() self.update(updateRect) event.accept() def dragMoveEvent(self, event): updateRect = self.highlightedRect.united( self.targetSquare(event.position().toPoint())) if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.position().toPoint())) == -1: self.highlightedRect = self.targetSquare( event.position().toPoint()) event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: self.highlightedRect = QRect() event.ignore() self.update(updateRect) def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece') and self.findPiece(self.targetSquare(event.position().toPoint())) == -1: pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.OpenModeFlag.ReadOnly) square = self.targetSquare(event.position().toPoint()) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.pieceLocations.append(location) self.piecePixmaps.append(pixmap) self.pieceRects.append(square) self.hightlightedRect = QRect() self.update(square) event.setDropAction(Qt.DropAction.MoveAction) event.accept() if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 if self.inPlace == 25: self.puzzleCompleted.emit() else: self.highlightedRect = QRect() event.ignore() def findPiece(self, pieceRect): try: return self.pieceRects.index(pieceRect) except ValueError: return -1 def mousePressEvent(self, event): square = self.targetSquare(event.position().toPoint()) found = self.findPiece(square) if found == -1: return location = self.pieceLocations[found] pixmap = self.piecePixmaps[found] del self.pieceLocations[found] del self.piecePixmaps[found] del self.pieceRects[found] if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace -= 1 self.update(square) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.WriteOnly) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.position().toPoint() - square.topLeft()) drag.setPixmap(pixmap) if drag.exec(Qt.DropAction.MoveAction) != Qt.DropAction.MoveAction: self.pieceLocations.insert(found, location) self.piecePixmaps.insert(found, pixmap) self.pieceRects.insert(found, square) self.update(self.targetSquare(event.position().toPoint())) if location == QPoint(square.x() / 80, square.y() / 80): self.inPlace += 1 def paintEvent(self, event): painter = QPainter() painter.begin(self) painter.fillRect(event.rect(), Qt.GlobalColor.white) if self.highlightedRect.isValid(): painter.setBrush(QColor("#ffcccc")) painter.setPen(Qt.PenStyle.NoPen) painter.drawRect(self.highlightedRect.adjusted(0, 0, -1, -1)) for rect, pixmap in zip(self.pieceRects, self.piecePixmaps): painter.drawPixmap(rect, pixmap) painter.end() def targetSquare(self, position): return QRect(position.x() // 80 * 80, position.y() // 80 * 80, 80, 80) class PiecesList(QListWidget): def __init__(self, parent=None): super().__init__(parent) self.setDragEnabled(True) self.setViewMode(QListView.ViewMode.IconMode) self.setIconSize(QSize(60, 60)) self.setSpacing(10) self.setAcceptDrops(True) self.setDropIndicatorShown(True) def dragEnterEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.accept() else: event.ignore() def dragMoveEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.ignore() def dropEvent(self, event): if event.mimeData().hasFormat('image/x-puzzle-piece'): pieceData = event.mimeData().data('image/x-puzzle-piece') dataStream = QDataStream(pieceData, QIODevice.OpenModeFlag.ReadOnly) pixmap = QPixmap() location = QPoint() dataStream >> pixmap >> location self.addPiece(pixmap, location) event.setDropAction(Qt.DropAction.MoveAction) event.accept() else: event.ignore() def addPiece(self, pixmap, location): pieceItem = QListWidgetItem(self) pieceItem.setIcon(QIcon(pixmap)) pieceItem.setData(Qt.ItemDataRole.UserRole, pixmap) pieceItem.setData(Qt.ItemDataRole.UserRole+1, location) pieceItem.setFlags(Qt.ItemFlag.ItemIsEnabled | Qt.ItemFlag.ItemIsSelectable | Qt.ItemFlag.ItemIsDragEnabled) def startDrag(self, supportedActions): item = self.currentItem() itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.OpenModeFlag.WriteOnly) pixmap = QPixmap(item.data(Qt.ItemDataRole.UserRole)) location = item.data(Qt.ItemDataRole.UserRole+1) dataStream << pixmap << location mimeData = QMimeData() mimeData.setData('image/x-puzzle-piece', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QPoint(pixmap.width() // 2, pixmap.height() // 2)) drag.setPixmap(pixmap) if drag.exec(Qt.DropAction.MoveAction) == Qt.DropAction.MoveAction: if self.currentItem() is not None: self.takeItem(self.row(item)) class MainWindow(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.puzzleImage = QPixmap() self.setupMenus() self.setupWidgets() self.setSizePolicy( QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)) self.setWindowTitle("Puzzle") def openImage(self, path=None): if not path: path, _ = QFileDialog.getOpenFileName(self, "Open Image", '', "Image Files (*.png *.jpg *.bmp)") if path: newImage = QPixmap() if not newImage.load(path): QMessageBox.warning(self, "Open Image", "The image file could not be loaded.", QMessageBox.Cancel) return self.puzzleImage = newImage self.setupPuzzle() def setCompleted(self): QMessageBox.information(self, "Puzzle Completed", "Congratulations! You have completed the puzzle!\nClick OK " "to start again.", QMessageBox.Ok) self.setupPuzzle() def setupPuzzle(self): size = min(self.puzzleImage.width(), self.puzzleImage.height()) self.puzzleImage = self.puzzleImage.copy( (self.puzzleImage.width() - size) // 2, (self.puzzleImage.height() - size) // 2, size, size).scaled(400, 400, Qt.AspectRatioMode.IgnoreAspectRatio, Qt.TransformationMode.SmoothTransformation) self.piecesList.clear() for y in range(5): for x in range(5): pieceImage = self.puzzleImage.copy(x*80, y*80, 80, 80) self.piecesList.addPiece(pieceImage, QPoint(x,y)) random.seed(QCursor.pos().x() ^ QCursor.pos().y()) for i in range(self.piecesList.count()): if random.random() < 0.5: item = self.piecesList.takeItem(i) self.piecesList.insertItem(0, item) self.puzzleWidget.clear() def setupMenus(self): fileMenu = self.menuBar().addMenu("&File") openAction = fileMenu.addAction("&Open...") openAction.setShortcut("Ctrl+O") exitAction = fileMenu.addAction("E&xit") exitAction.setShortcut("Ctrl+Q") gameMenu = self.menuBar().addMenu("&Game") restartAction = gameMenu.addAction("&Restart") openAction.triggered.connect(self.openImage) exitAction.triggered.connect(QApplication.instance().quit) restartAction.triggered.connect(self.setupPuzzle) def setupWidgets(self): frame = QFrame() frameLayout = QHBoxLayout(frame) self.piecesList = PiecesList() self.puzzleWidget = PuzzleWidget() self.puzzleWidget.puzzleCompleted.connect(self.setCompleted, Qt.ConnectionType.QueuedConnection) frameLayout.addWidget(self.piecesList) frameLayout.addWidget(self.puzzleWidget) self.setCentralWidget(frame) if __name__ == '__main__': import os import sys app = QApplication(sys.argv) window = MainWindow() window.openImage(os.path.join(os.path.dirname(__file__), 'example.jpg')) window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.438189 PyQt6-6.6.1/examples/multimedia/0000755000076500000240000000000014532160402015333 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.439112 PyQt6-6.6.1/examples/multimedia/audiodevices/0000755000076500000240000000000014532160402017777 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.620217 PyQt6-6.6.1/examples/multimedia/audiodevices/audiodevices.py0000644000076500000240000001732114532151332023023 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2017 The Qt Company Ltd. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtMultimedia import (QAudio, QAudioDevice, QAudioFormat, QMediaDevices) from PyQt6.QtWidgets import QApplication, QTableWidgetItem, QMainWindow from ui_audiodevicesbase import Ui_AudioDevicesBase class AudioDevicesBase(QMainWindow, Ui_AudioDevicesBase): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) class AudioTest(AudioDevicesBase): def __init__(self, parent=None): super().__init__(parent) self.devices = QMediaDevices(self) self.deviceInfo = QAudioDevice() self.settings = QAudioFormat() self.mode = QAudioDevice.Mode.Input self.testButton.clicked.connect(self.test) self.modeBox.activated.connect(self.modeChanged) self.deviceBox.activated.connect(self.deviceChanged) self.sampleRateSpinBox.valueChanged.connect(self.sampleRateChanged) self.channelsSpinBox.valueChanged.connect(self.channelChanged) self.sampleFormatBox.activated.connect(self.sampleFormatChanged) self.populateTableButton.clicked.connect(self.populateTable) self.devices.audioInputsChanged.connect(self.updateAudioDevices) self.devices.audioOutputsChanged.connect(self.updateAudioDevices) self.modeBox.setCurrentIndex(0) self.modeChanged(0) self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def test(self): self.testResult.clear() if not self.deviceInfo.isNull(): if self.deviceInfo.isFormatSupported(self.settings): self.testResult.setText("Success") self.nearestSampleRate.setText("") self.nearestChannel.setText("") self.nearestSampleFormat.setText("") else: nearest = self.deviceInfo.preferredFormat() self.testResult.setText("Failed") self.nearestSampleRate.setText(str(nearest.sampleRate())) self.nearestChannel.setText(str(nearest.channelCount())) self.nearestSampleFormat.setText( self.sampleFormatToString(nearest.sampleFormat())) else: self.testResult.setText("No Device") sampleFormatMap = { QAudioFormat.SampleFormat.UInt8: "Unsigned 8 bit", QAudioFormat.SampleFormat.Int16: "Signed 16 bit", QAudioFormat.SampleFormat.Int32: "Signed 32 bit", QAudioFormat.SampleFormat.Float: "Float" } @classmethod def sampleFormatToString(cls, sampleFormat): return cls.sampleFormatMap.get(sampleFormat, "Unknown") def updateAudioDevices(self): self.deviceBox.clear() devs = self.devices.audioInputs() if self.mode is QAudioDevice.Mode.Input else self.devices.audioOutputs() for deviceInfo in devs: self.deviceBox.addItem(deviceInfo.description(), deviceInfo) def modeChanged(self, idx): self.testResult.clear() self.mode = QAudioDevice.Mode.Input if idx == 0 else QAudioDevice.Mode.Output self.updateAudioDevices() self.deviceBox.setCurrentIndex(0) self.deviceChanged(0) def deviceChanged(self, idx): self.testResult.clear() if self.deviceBox.count() == 0: return self.deviceInfo = self.deviceBox.itemData(idx) minSampleRate = self.deviceInfo.minimumSampleRate() maxSampleRate = self.deviceInfo.maximumSampleRate() self.sampleRateSpinBox.clear() self.sampleRateSpinBox.setMinimum(minSampleRate) self.sampleRateSpinBox.setMaximum(maxSampleRate) sampleValue = max(minSampleRate, min(48000, maxSampleRate)) self.settings.setSampleRate(sampleValue) minChannelCount = self.deviceInfo.minimumChannelCount() maxChannelCount = self.deviceInfo.maximumChannelCount() self.channelsSpinBox.clear() self.channelsSpinBox.setMinimum(minChannelCount) self.channelsSpinBox.setMaximum(maxChannelCount) channelValue = max(minChannelCount, min(2, maxChannelCount)) self.settings.setChannelCount(channelValue) self.sampleFormatBox.clear() sampleFormats = self.deviceInfo.supportedSampleFormats() self.sampleFormatBox.addItems( [self.sampleFormatToString(st) for st in sampleFormats]) if len(sampleFormats) != 0: self.settings.setSampleFormat(sampleFormats[0]) self.allFormatsTable.clearContents() def populateTable(self): row = 0 for sampleFormat in self.deviceInfo.supportedSampleFormats(): self.allFormatsTable.setRowCount(row + 1) sampleTypeItem = QTableWidgetItem( self.sampleFormatToString(sampleFormat)) self.allFormatsTable.setItem(row, 0, sampleTypeItem) sampleRateItem = QTableWidgetItem( "{0} - {1}".format(self.deviceInfo.minimumSampleRate(), self.deviceInfo.maximumSampleRate())) self.allFormatsTable.setItem(row, 1, sampleRateItem) channelsItem = QTableWidgetItem( "{0} - {1}".format(self.deviceInfo.minimumChannelCount(), self.deviceInfo.maximumChannelCount())) self.allFormatsTable.setItem(row, 2, channelsItem) row += 1 def sampleRateChanged(self, value): self.settings.setSampleRate(value) def channelChanged(self, value): self.settings.setChannelCount(value) def sampleFormatChanged(self, idx): formats = self.deviceInfo.supportedSampleFormats() self.settings.setSampleFormat(formats[idx]) if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Device Test") audio = AudioTest() audio.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625316 PyQt6-6.6.1/examples/multimedia/audiodevices/audiodevicesbase.ui0000644000076500000240000002722714532151332023651 0ustar00philstaff AudioDevicesBase 0 0 646 528 Audio Devices 0 0 true 0 0 626 480 Mode Device Input Output 0 Test format Test Channels false false Sample Format false Frequency (Hz) 0 0 QFrame::NoFrame QFrame::Plain <i>Actual Settings</i> Qt::RichText Qt::AlignCenter 0 0 QFrame::NoFrame QFrame::Plain <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nearest Settings</span></p></body></html> Qt::RichText Qt::AlignCenter Qt::Vertical 20 40 All formats Populate table QAbstractItemView::NoEditTriggers false QAbstractItemView::NoSelection QAbstractItemView::SelectItems Qt::ElideNone false false false 3 false true false false Sample Format AlignCenter Frequency (Hz) AlignCenter Channels AlignCenter ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626734 PyQt6-6.6.1/examples/multimedia/audiodevices/ui_audiodevicesbase.py0000644000076500000240000002771014532151332024356 0ustar00philstaff# Form implementation generated from reading ui file 'audiodevicesbase.ui' # # Created by: PyQt6 UI code generator 6.2.0.dev2107180056 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from PyQt6 import QtCore, QtGui, QtWidgets class Ui_AudioDevicesBase(object): def setupUi(self, AudioDevicesBase): AudioDevicesBase.setObjectName("AudioDevicesBase") AudioDevicesBase.resize(646, 528) self.centralwidget = QtWidgets.QWidget(AudioDevicesBase) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.scrollArea = QtWidgets.QScrollArea(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy().hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 626, 480)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_4 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_4.setObjectName("gridLayout_4") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.modeLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.modeLabel.setObjectName("modeLabel") self.gridLayout_2.addWidget(self.modeLabel, 0, 0, 1, 1) self.deviceLabel = QtWidgets.QLabel(self.scrollAreaWidgetContents) self.deviceLabel.setObjectName("deviceLabel") self.gridLayout_2.addWidget(self.deviceLabel, 0, 1, 1, 1) self.modeBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.modeBox.setObjectName("modeBox") self.modeBox.addItem("") self.modeBox.addItem("") self.gridLayout_2.addWidget(self.modeBox, 1, 0, 1, 1) self.deviceBox = QtWidgets.QComboBox(self.scrollAreaWidgetContents) self.deviceBox.setObjectName("deviceBox") self.gridLayout_2.addWidget(self.deviceBox, 1, 1, 1, 1) self.tabWidget = QtWidgets.QTabWidget(self.scrollAreaWidgetContents) self.tabWidget.setObjectName("tabWidget") self.testFormatTab = QtWidgets.QWidget() self.testFormatTab.setObjectName("testFormatTab") self.gridLayout = QtWidgets.QGridLayout(self.testFormatTab) self.gridLayout.setObjectName("gridLayout") self.testButton = QtWidgets.QPushButton(self.testFormatTab) self.testButton.setObjectName("testButton") self.gridLayout.addWidget(self.testButton, 12, 1, 1, 1) self.testResult = QtWidgets.QLabel(self.testFormatTab) self.testResult.setText("") self.testResult.setObjectName("testResult") self.gridLayout.addWidget(self.testResult, 12, 2, 1, 1) self.actualChannelLabel = QtWidgets.QLabel(self.testFormatTab) self.actualChannelLabel.setObjectName("actualChannelLabel") self.gridLayout.addWidget(self.actualChannelLabel, 4, 0, 1, 1) self.nearestSampleRate = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleRate.setEnabled(False) self.nearestSampleRate.setObjectName("nearestSampleRate") self.gridLayout.addWidget(self.nearestSampleRate, 2, 2, 1, 1) self.nearestSampleFormat = QtWidgets.QLineEdit(self.testFormatTab) self.nearestSampleFormat.setEnabled(False) self.nearestSampleFormat.setObjectName("nearestSampleFormat") self.gridLayout.addWidget(self.nearestSampleFormat, 5, 2, 1, 1) self.actualSampleTypeLabel = QtWidgets.QLabel(self.testFormatTab) self.actualSampleTypeLabel.setObjectName("actualSampleTypeLabel") self.gridLayout.addWidget(self.actualSampleTypeLabel, 5, 0, 1, 1) self.nearestChannel = QtWidgets.QLineEdit(self.testFormatTab) self.nearestChannel.setEnabled(False) self.nearestChannel.setObjectName("nearestChannel") self.gridLayout.addWidget(self.nearestChannel, 4, 2, 1, 1) self.sampleFormatBox = QtWidgets.QComboBox(self.testFormatTab) self.sampleFormatBox.setObjectName("sampleFormatBox") self.gridLayout.addWidget(self.sampleFormatBox, 5, 1, 1, 1) self.actualFreqLabel = QtWidgets.QLabel(self.testFormatTab) self.actualFreqLabel.setObjectName("actualFreqLabel") self.gridLayout.addWidget(self.actualFreqLabel, 2, 0, 1, 1) self.actualLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.actualLabel.sizePolicy().hasHeightForWidth()) self.actualLabel.setSizePolicy(sizePolicy) self.actualLabel.setFrameShape(QtWidgets.QFrame.Shape.NoFrame) self.actualLabel.setFrameShadow(QtWidgets.QFrame.Shadow.Plain) self.actualLabel.setTextFormat(QtCore.Qt.TextFormat.RichText) self.actualLabel.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.actualLabel.setObjectName("actualLabel") self.gridLayout.addWidget(self.actualLabel, 0, 1, 1, 1) self.nearestLabel = QtWidgets.QLabel(self.testFormatTab) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.nearestLabel.sizePolicy().hasHeightForWidth()) self.nearestLabel.setSizePolicy(sizePolicy) self.nearestLabel.setFrameShape(QtWidgets.QFrame.Shape.NoFrame) self.nearestLabel.setFrameShadow(QtWidgets.QFrame.Shadow.Plain) self.nearestLabel.setTextFormat(QtCore.Qt.TextFormat.RichText) self.nearestLabel.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.nearestLabel.setObjectName("nearestLabel") self.gridLayout.addWidget(self.nearestLabel, 0, 2, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridLayout.addItem(spacerItem, 13, 1, 1, 1) self.sampleRateSpinBox = QtWidgets.QSpinBox(self.testFormatTab) self.sampleRateSpinBox.setObjectName("sampleRateSpinBox") self.gridLayout.addWidget(self.sampleRateSpinBox, 2, 1, 1, 1) self.channelsSpinBox = QtWidgets.QSpinBox(self.testFormatTab) self.channelsSpinBox.setObjectName("channelsSpinBox") self.gridLayout.addWidget(self.channelsSpinBox, 4, 1, 1, 1) self.tabWidget.addTab(self.testFormatTab, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab) self.verticalLayout_2.setObjectName("verticalLayout_2") self.populateTableButton = QtWidgets.QPushButton(self.tab) self.populateTableButton.setObjectName("populateTableButton") self.verticalLayout_2.addWidget(self.populateTableButton) self.allFormatsTable = QtWidgets.QTableWidget(self.tab) self.allFormatsTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) self.allFormatsTable.setDragDropOverwriteMode(False) self.allFormatsTable.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.NoSelection) self.allFormatsTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectItems) self.allFormatsTable.setTextElideMode(QtCore.Qt.TextElideMode.ElideNone) self.allFormatsTable.setWordWrap(False) self.allFormatsTable.setCornerButtonEnabled(False) self.allFormatsTable.setColumnCount(3) self.allFormatsTable.setObjectName("allFormatsTable") self.allFormatsTable.setRowCount(0) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() item.setTextAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.allFormatsTable.setHorizontalHeaderItem(2, item) self.allFormatsTable.horizontalHeader().setHighlightSections(False) self.allFormatsTable.horizontalHeader().setStretchLastSection(True) self.allFormatsTable.verticalHeader().setVisible(False) self.allFormatsTable.verticalHeader().setHighlightSections(False) self.verticalLayout_2.addWidget(self.allFormatsTable) self.tabWidget.addTab(self.tab, "") self.gridLayout_2.addWidget(self.tabWidget, 2, 0, 1, 2) self.gridLayout_4.addLayout(self.gridLayout_2, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scrollArea) AudioDevicesBase.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(AudioDevicesBase) self.statusbar.setObjectName("statusbar") AudioDevicesBase.setStatusBar(self.statusbar) self.retranslateUi(AudioDevicesBase) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(AudioDevicesBase) def retranslateUi(self, AudioDevicesBase): _translate = QtCore.QCoreApplication.translate AudioDevicesBase.setWindowTitle(_translate("AudioDevicesBase", "Audio Devices")) self.modeLabel.setText(_translate("AudioDevicesBase", "Mode")) self.deviceLabel.setText(_translate("AudioDevicesBase", "Device")) self.modeBox.setItemText(0, _translate("AudioDevicesBase", "Input")) self.modeBox.setItemText(1, _translate("AudioDevicesBase", "Output")) self.testButton.setText(_translate("AudioDevicesBase", "Test")) self.actualChannelLabel.setText(_translate("AudioDevicesBase", "Channels")) self.actualSampleTypeLabel.setText(_translate("AudioDevicesBase", "Sample Format")) self.actualFreqLabel.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) self.actualLabel.setText(_translate("AudioDevicesBase", "Actual Settings")) self.nearestLabel.setText(_translate("AudioDevicesBase", "\n" "\n" "

Nearest Settings

")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.testFormatTab), _translate("AudioDevicesBase", "Test format")) self.populateTableButton.setText(_translate("AudioDevicesBase", "Populate table")) self.allFormatsTable.setSortingEnabled(False) item = self.allFormatsTable.horizontalHeaderItem(0) item.setText(_translate("AudioDevicesBase", "Sample Format")) item = self.allFormatsTable.horizontalHeaderItem(1) item.setText(_translate("AudioDevicesBase", "Frequency (Hz)")) item = self.allFormatsTable.horizontalHeaderItem(2) item.setText(_translate("AudioDevicesBase", "Channels")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("AudioDevicesBase", "All formats")) ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.63258 PyQt6-6.6.1/examples/multimedia/audiooutput.py0000644000076500000240000002152714532151332020300 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2017 The Qt Company Ltd. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from math import pi, sin from struct import pack from PyQt6.QtCore import QByteArray, QIODevice, Qt, QTimer, qWarning from PyQt6.QtMultimedia import (QAudio, QAudioDevice, QAudioFormat, QAudioSink, QMediaDevices) from PyQt6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel, QMainWindow, QPushButton, QSlider, QVBoxLayout, QWidget) class Generator(QIODevice): def __init__(self, format, durationUs, sampleRate): super().__init__() self.m_pos = 0 self.m_buffer = QByteArray() if format.isValid(): self.generateData(format, durationUs, sampleRate) def start(self): self.open(QIODevice.OpenModeFlag.ReadOnly) def stop(self): self.m_pos = 0 self.close() def generateData(self, format, durationUs, sampleRate): packFormat = '' sampleFormat = format.sampleFormat() if sampleFormat is QAudioFormat.SampleFormat.UInt8: scaler = lambda x: ((1.0 + x) / 2 * 255) packFormat = 'B' elif sampleFormat is QAudioFormat.SampleFormat.Int16: scaler = lambda x: x * 32767 packFormat = 'h' elif sampleFormat is QAudioFormat.SampleFormat.Int32: scaler = lambda x: x * 2147483647 packFormat = 'i' elif sampleFormat is QAudioFormat.SampleFormat.Float: scaler = lambda x: x packFormat = 'f' assert(packFormat != '') channelBytes = format.bytesPerSample() sampleBytes = format.channelCount() * channelBytes length = format.bytesForDuration(durationUs) assert(length % sampleBytes == 0) self.m_buffer.clear() sampleIndex = 0 factor = 2 * pi * sampleRate / format.sampleRate() while length != 0: x = sin((sampleIndex % format.sampleRate()) * factor) packed = pack(packFormat, int(scaler(x))) for _ in range(format.channelCount()): self.m_buffer.append(packed) length -= channelBytes sampleIndex += 1 def readData(self, maxlen): data = QByteArray() total = 0 while maxlen > total: chunk = min(self.m_buffer.size() - self.m_pos, maxlen - total) data.append(self.m_buffer.mid(self.m_pos, chunk)) self.m_pos = (self.m_pos + chunk) % self.m_buffer.size() total += chunk return data.data() def writeData(self, data): return 0 def bytesAvailable(self): return self.m_buffer.size() + super().bytesAvailable() class AudioTest(QMainWindow): DurationSeconds = 1 ToneSampleRateHz = 600 def __init__(self): super().__init__() self.m_devices = QMediaDevices(self) self.m_pushTimer = QTimer(self) self.m_pullMode = True self.m_generator = None self.m_audioOutput = None self.initializeWindow() self.initializeAudio(self.m_devices.defaultAudioOutput()) def initializeWindow(self): layout = QVBoxLayout() self.m_deviceBox = QComboBox(activated=self.deviceChanged) defaultDeviceInfo = self.m_devices.defaultAudioOutput() self.m_deviceBox.addItem(defaultDeviceInfo.description(), defaultDeviceInfo) for deviceInfo in self.m_devices.audioOutputs(): if deviceInfo != defaultDeviceInfo: self.m_deviceBox.addItem(deviceInfo.description(), deviceInfo) layout.addWidget(self.m_deviceBox) self.m_modeButton = QPushButton(clicked=self.toggleMode) layout.addWidget(self.m_modeButton) self.m_suspendResumeButton = QPushButton( clicked=self.toggleSuspendResume) layout.addWidget(self.m_suspendResumeButton) volumeBox = QHBoxLayout() volumeLabel = QLabel("Volume:") self.m_volumeSlider = QSlider(Qt.Orientation.Horizontal, minimum=0, maximum=100, singleStep=10, valueChanged=self.volumeChanged) volumeBox.addWidget(volumeLabel) volumeBox.addWidget(self.m_volumeSlider) layout.addLayout(volumeBox) window = QWidget() window.setLayout(layout) self.setCentralWidget(window) def initializeAudio(self, deviceInfo): format = deviceInfo.preferredFormat() self.m_generator = Generator(format, self.DurationSeconds * 1000000, self.ToneSampleRateHz) self.m_audioOutput = QAudioSink(deviceInfo, format) self.m_generator.start() initialVolume = QAudio.convertVolume(self.m_audioOutput.volume(), QAudio.VolumeScale.LinearVolumeScale, QAudio.VolumeScale.LogarithmicVolumeScale) self.m_volumeSlider.setValue(int(initialVolume * 100)) self.toggleMode() def deviceChanged(self, index): self.m_generator.stop() self.m_audioOutput.stop() try: # This will raise an exception if the are no connections. self.m_audioOutput.disconnect() except: pass self.initializeAudio(self.m_deviceBox.itemData(index)) def volumeChanged(self, value): linearVolume = QAudio.convertVolume(value / 100.0, QAudio.VolumeScale.LinearVolumeScale, QAudio.VolumeScale.LogarithmicVolumeScale) self.m_audioOutput.setVolume(linearVolume) def toggleMode(self): self.m_pushTimer.stop() self.m_audioOutput.stop() self.toggleSuspendResume() if self.m_pullMode: self.m_modeButton.setText("Enable push mode") self.m_audioOutput.start(self.m_generator) else: self.m_modeButton.setText("Enable pull mode") io = self.m_audioOutput.start() try: # This will raise an exception if the are no connections. self.m_pushTimer.timeout.disconnect() except: pass self.m_pushTimer.timeout.connect(lambda: self.handlePushTimer(io)) self.m_pushTimer.start(10) self.m_pullMode = not self.m_pullMode def handlePushTimer(self, io): if self.m_audioOutput.state() is QAudio.State.StoppedState: return buffer = self.m_generator.read(self.m_audioOutput.bytesFree()) if buffer: io.write(buffer) def toggleSuspendResume(self): if self.m_audioOutput.state() in (QAudio.State.SuspendedState, QAudio.State.StoppedState): self.m_audioOutput.resume() self.m_suspendResumeButton.setText("Suspend playback") elif self.m_audioOutput.state() is QAudio.State.ActiveState: self.m_audioOutput.suspend() self.m_suspendResumeButton.setText("Resume playback") if __name__ == '__main__': import sys app = QApplication(sys.argv) app.setApplicationName("Audio Output Test") audio = AudioTest() audio.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3964338 PyQt6-6.6.1/examples/multimediawidgets/0000755000076500000240000000000014532160402016722 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3995075 PyQt6-6.6.1/examples/multimediawidgets/camera/0000755000076500000240000000000014532160402020152 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.628305 PyQt6-6.6.1/examples/multimediawidgets/camera/camera.py0000644000076500000240000005175114532151332021767 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2020 The Qt Company Ltd. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os from PyQt6.QtCore import QDateTime, QDir, qFuzzyCompare, Qt, QTimer from PyQt6.QtGui import QAction, QActionGroup, QIcon, QImage, QPixmap from PyQt6.QtMultimedia import (QAudioInput, QCamera, QImageCapture, QMediaFormat, QMediaDevices, QMediaCaptureSession, QMediaMetaData, QMediaRecorder) from PyQt6.QtWidgets import (QApplication, QDialog, QDialogButtonBox, QFormLayout, QHBoxLayout, QLineEdit, QMainWindow, QMessageBox, QPushButton, QScrollArea, QVBoxLayout, QWidget) from ui_camera import Ui_Camera from ui_imagesettings import Ui_ImageSettingsUi from ui_videosettings import Ui_VideoSettingsUi class ImageSettings(QDialog): def __init__(self, imageCapture, parent=None): super().__init__(parent) self.ui = Ui_ImageSettingsUi() self.imagecapture = imageCapture self.ui.setupUi(self) self.ui.imageCodecBox.addItem("Default image format", "") for f in self.imagecapture.supportedFormats(): description = QImageCapture.fileFormatDescription(f) self.ui.imageCodecBox.addItem( QImageCapture.fileFormatName(f) + ": " + description, f) self.ui.imageQualitySlider.setRange( QImageCapture.Quality.VeryLowQuality.value, QImageCapture.Quality.VeryHighQuality.value) self.ui.imageResolutionBox.addItem("Default resolution") supportedResolutions = self.imagecapture.captureSession().camera().cameraDevice().photoResolutions() for resolution in supportedResolutions: self.ui.imageResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.selectComboBoxItem(self.ui.imageCodecBox, self.imagecapture.fileFormat()) self.selectComboBoxItem(self.ui.imageResolutionBox, self.imagecapture.resolution()) self.ui.imageQualitySlider.setValue(self.imagecapture.quality().value) def applyImageSettings(self): self.imagecapture.setFileFormat(self.boxValue(self.ui.imageCodecBox)) self.imagecapture.setQuality( QImageCapture.Quality(self.ui.imageQualitySlider.value())) self.imagecapture.setResolution( self.boxValue(self.ui.imageResolutionBox)) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class VideoSettings(QDialog): def __init__(self, mediaRecorder, parent=None): super().__init__(parent) self.ui = Ui_VideoSettingsUi() self.mediaRecorder = mediaRecorder self.ui.setupUi(self) self.ui.audioCodecBox.addItem("Default audio codec", QMediaFormat.AudioCodec.Unspecified) for ac in QMediaFormat().supportedAudioCodecs(QMediaFormat.ConversionMode.Encode): description = QMediaFormat.audioCodecDescription(ac) self.ui.audioCodecBox.addItem( QMediaFormat.audioCodecName(ac) + ": " + description, ac) audioDevice = self.mediaRecorder.captureSession().audioInput().device() self.ui.audioSampleRateBox.setRange(audioDevice.minimumSampleRate(), audioDevice.maximumSampleRate()) self.ui.videoCodecBox.addItem("Default video codec", QMediaFormat.VideoCodec.Unspecified) for vc in QMediaFormat().supportedVideoCodecs(QMediaFormat.ConversionMode.Encode): description = QMediaFormat.videoCodecDescription(vc) self.ui.videoCodecBox.addItem( QMediaFormat.videoCodecName(vc) + ": " + description, vc) self.ui.videoResolutionBox.addItem("Default") supportedResolutions = self.mediaRecorder.captureSession().camera().cameraDevice().photoResolutions() for resolution in supportedResolutions: self.ui.videoResolutionBox.addItem( "%dx%d" % (resolution.width(), resolution.height()), resolution) self.ui.videoFramerateBox.addItem("Default") #supportedFrameRates, _ = self.mediaRecorder.supportedFrameRates() #for rate in supportedFrameRates: # self.ui.videoFramerateBox.addItem("%0.2f" % rate, rate) self.ui.containerFormatBox.addItem("Default container", QMediaFormat.FileFormat.UnspecifiedFormat) for fmt in QMediaFormat().supportedFileFormats(QMediaFormat.ConversionMode.Encode): description = QMediaFormat.fileFormatDescription(fmt) self.ui.containerFormatBox.addItem( QMediaFormat.fileFormatName(fmt) + ": " + description, fmt) self.ui.qualitySlider.setRange( QMediaRecorder.Quality.VeryLowQuality.value, QMediaRecorder.Quality.VeryHighQuality.value) mediaFormat = self.mediaRecorder.mediaFormat() self.selectComboBoxItem(self.ui.containerFormatBox, mediaFormat.fileFormat()) self.selectComboBoxItem(self.ui.audioCodecBox, mediaFormat.audioCodec()) self.selectComboBoxItem(self.ui.videoCodecBox, mediaFormat.videoCodec()) self.ui.qualitySlider.setValue(self.mediaRecorder.quality().value) self.ui.audioSampleRateBox.setValue( self.mediaRecorder.audioSampleRate()) self.selectComboBoxItem(self.ui.videoResolutionBox, self.mediaRecorder.videoResolution()) for i in range(1, self.ui.videoFramerateBox.count()): itemRate = self.ui.videoFramerateBox.itemData(i) if qFuzzyCompare(itemRate, self.mediaRecorder.videoFrameRate()): self.ui.videoFramerateBox.setCurrentIndex(i) break def applySettings(self): mediaFormat = QMediaFormat() mediaFormat.setFileFormat(self.boxValue(self.ui.containerFormatBox)) mediaFormat.setAudioCodec(self.boxValue(self.ui.audioCodecBox)) mediaFormat.setVideoCodec(self.boxValue(self.ui.videoCodecBox)) self.mediaRecorder.setMediaFormat(mediaFormat) self.mediaRecorder.setQuality( QMediaRecorder.Quality(self.ui.qualitySlider.value())) self.mediaRecorder.setAudioSampleRate( self.ui.audioSampleRateBox.value()) self.mediaRecorder.setVideoResolution( boxValue(self.ui.videoResolutionBox)) self.mediaRecorder.setVideoFrameRate( boxValue(self.ui.videoFramerateBox)) @staticmethod def boxValue(box): idx = box.currentIndex() if idx == -1: return None return box.itemData(idx) @staticmethod def selectComboBoxItem(box, value): for i in range(box.count()): if box.itemData(i) == value: box.setCurrentIndex(i) break class MetaDataDialog(QDialog): def __init__(self, parent=None): super().__init__(parent) self.metaDataFields = {} metaDataLayout = QFormLayout() for key in QMediaMetaData.Key: label = QMediaMetaData.metaDataKeyToString(key) field = QLineEdit() self.metaDataFields[key] = field if key is QMediaMetaData.Key.ThumbnailImage: openThumbnail = QPushButton("Open", clicked=self.openThumbnailImage) layout = QHBoxLayout() layout.addWidget(field) layout.addWidget(openThumbnail) metaDataLayout.addRow(label, layout) elif key is QMediaMetaData.Key.CoverArtImage: openCoverArt = QPushButton("Open", clicked=self.openCoverArtImage) layout = QHBoxLayout() layout.addWidget(field) layout.addWidget(openCoverArt) metaDataLayout.addRow(label, layout) else: if key is QMediaMetaData.Key.Title: field.setText("PyQt Camera Example") elif key is QMediaMetaData.Key.Author: field.setText("Riverbank Computing") elif key is QMediaMetaData.Key.Date: field.setText(QDateTime.currentDateTime().toString()) metaDataLayout.addRow(label, field) viewport = QWidget() viewport.setLayout(metaDataLayout) scrollArea = QScrollArea() scrollArea.setWidget(viewport) dialogLayout = QVBoxLayout() dialogLayout.addWidget(scrollArea) buttonBox = QDialogButtonBox( QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) dialogLayout.addWidget(buttonBox) self.setLayout(dialogLayout) self.setWindowTitle("Set Metadata") self.resize(400, 300) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) def openThumbnailImage(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Image", QDir.currentPath(), "Image Files (*.png *.jpg *.bmp)") if fileName: self.metaDataFields[QMediaMetaData.Key.ThumbnailImage].setText( fileName) def openCoverArtImage(self): fileName, _ = QFileDialog.getOpenFileName(self, "Open Image", QDir.currentPath(), "Image Files (*.png *.jpg *.bmp)") if fileName: self.metaDataFields[QMediaMetaData.Key.CoverArtImage].setText( fileName) class Camera(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_Camera() self.devices = QMediaDevices() self.captureSession = QMediaCaptureSession() self.camera = None self.imageCapture = None self.mediaRecorder = None self.isCapturingImage = False self.applicationExiting = False self.doImageCapture = True self.metaDataDialog = None self.ui.setupUi(self) self.ui.takeImageButton.setIcon( QIcon( os.path.join(os.path.dirname(__file__), 'images', 'shutter.svg'))) self.audioInput = QAudioInput() self.captureSession.setAudioInput(self.audioInput) self.videoDevicesGroup = QActionGroup(self) self.videoDevicesGroup.setExclusive(True) self.updateCameras() self.devices.videoInputsChanged.connect(self.updateCameras) self.videoDevicesGroup.triggered.connect(self.updateCameraDevice) self.ui.captureWidget.currentChanged.connect(self.updateCaptureMode) self.ui.metaDataButton.clicked.connect(self.showMetaDataDialog) self.setCamera(QMediaDevices.defaultVideoInput()) def setCamera(self, cameraDevice): self.camera = QCamera(cameraDevice) self.captureSession.setCamera(self.camera) self.camera.activeChanged.connect(self.updateCameraActive) self.camera.errorOccurred.connect(self.displayCameraError) self.mediaRecorder = QMediaRecorder() self.captureSession.setRecorder(self.mediaRecorder) self.mediaRecorder.recorderStateChanged.connect( self.updateRecorderState) self.imageCapture = QImageCapture() self.captureSession.setImageCapture(self.imageCapture) self.mediaRecorder.durationChanged.connect(self.updateRecordTime) self.mediaRecorder.errorChanged.connect(self.displayRecorderError) self.ui.exposureCompensation.valueChanged.connect( self.setExposureCompensation) self.captureSession.setVideoOutput(self.ui.viewfinder) self.updateCameraActive(self.camera.isActive()) self.updateRecorderState(self.mediaRecorder.recorderState()) self.imageCapture.readyForCaptureChanged.connect(self.readyForCapture) self.imageCapture.imageCaptured.connect(self.processCapturedImage) self.imageCapture.imageSaved.connect(self.imageSaved) self.imageCapture.errorOccurred.connect(self.displayCaptureError) self.readyForCapture(self.imageCapture.isReadyForCapture()) self.updateCaptureMode() self.camera.start() def keyPressEvent(self, event): if event.isAutoRepeat(): return if event.key() is Qt.Key.Key_CameraFocus: self.displayViewfinder() self.camera.searchAndLock() event.accept() elif event.key() is Qt.Key.Key_Camera: if self.doImageCapture: self.takeImage() elif self.mediaRecorder.recorderState() is QMediaRecorder.RecorderState.RecordingState: self.stop() else: self.record() event.accept() else: super().keyPressEvent(event) def updateRecordTime(self): msg = "Recorded %d sec" % (self.mediaRecorder.duration() // 1000) self.ui.statusbar.showMessage(msg) def processCapturedImage(self, requestId, img): scaledImage = img.scaled(self.ui.viewfinder.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation) self.ui.lastImagePreviewLabel.setPixmap(QPixmap.fromImage(scaledImage)) self.displayCapturedImage() QTimer.singleShot(4000, self.displayViewfinder) def configureCaptureSettings(self): if self.doImageCapture: self.configureImageSettings() else: self.configureVideoSettings() def configureVideoSettings(self): settingsDialog = VideoSettings(self.mediaRecorder) settingsDialog.setWindowFlags( settingsDialog.windowFlags() & ~Qt.WindowType.WindowContextHelpButtonHint) if settingsDialog.exec(): settingsDialog.applySettings() def configureImageSettings(self): settingsDialog = ImageSettings(self.imageCapture) settingsDialog.setWindowFlags( settingsDialog.windowFlags() & ~Qt.WindowType.WindowContextHelpButtonHint) if settingsDialog.exec(): settingsDialog.applyImageSettings() def record(self): self.mediaRecorder.record() self.updateRecordTime() def pause(self): self.mediaRecorder.pause() def stop(self): self.mediaRecorder.stop() def setMuted(self, muted): self.captureSession.audioInput().setMuted(muted) def takeImage(self): self.isCapturingImage = True self.imageCapture.captureToFile() def displayCaptureError(self, id, error, errorString): QMessageBox.warning(self, "Image Capture Error", errorString) self.isCapturingImage = False def startCamera(self): self.camera.start() def stopCamera(self): self.camera.stop() def updateCaptureMode(self): tabIndex = self.ui.captureWidget.currentIndex() self.doImageCapture = (tabIndex == 0) def updateCameraActive(self, active): if active: self.ui.actionStartCamera.setEnabled(False) self.ui.actionStopCamera.setEnabled(True) self.ui.captureWidget.setEnabled(True) self.ui.actionSettings.setEnabled(True) else: self.ui.actionStartCamera.setEnabled(True) self.ui.actionStopCamera.setEnabled(False) self.ui.captureWidget.setEnabled(False) self.ui.actionSettings.setEnabled(False) def updateRecorderState(self, state): if state is QMediaRecorder.RecorderState.StoppedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(False) self.ui.metaDataButton.setEnabled(True) elif state is QMediaRecorder.RecorderState.PausedState: self.ui.recordButton.setEnabled(True) self.ui.pauseButton.setEnabled(False) self.ui.stopButton.setEnabled(True) self.ui.metaDataButton.setEnabled(False) elif state is QMediaRecorder.RecorderState.RecordingState: self.ui.recordButton.setEnabled(False) self.ui.pauseButton.setEnabled(True) self.ui.stopButton.setEnabled(True) self.ui.metaDataButton.setEnabled(False) def setExposureCompensation(self, index): self.camera.setExposureCompensation(index * 0.5) def displayRecorderError(self): if self.mediaRecorder.error() is not QMediaRecorder.Error.NoError: QMessageBox.warning(self, "Capture Error", self.mediaRecorder.errorString()) def displayCameraError(self): if self.camera.error() is not QCamers.Error.NoError: QMessageBox.warning(self, "Camera Error", self.camera.errorString()) def updateCameraDevice(self, action): self.setCamera(action.data()) def displayViewfinder(self): self.ui.stackedWidget.setCurrentIndex(0) def displayCapturedImage(self): self.ui.stackedWidget.setCurrentIndex(1) def readyForCapture(self, ready): self.ui.takeImageButton.setEnabled(ready) def imageSaved(self, id, fileName): self.ui.statusbar.showMessage( "Captured \"%s\"" % QDir.toNativeSeparators(fileName)) self.isCapturingImage = False if self.applicationExiting: self.close() def closeEvent(self, event): if self.isCapturingImage: self.setEnabled(False) self.applicationExiting = True event.ignore() else: event.accept() def updateCameras(self): self.ui.menuDevices.clear() for cameraDevice in QMediaDevices.videoInputs(): videoDeviceAction = QAction(cameraDevice.description(), self.videoDevicesGroup) videoDeviceAction.setCheckable(True) videoDeviceAction.setData(cameraDevice) if cameraDevice == QMediaDevices.defaultVideoInput(): videoDeviceAction.setChecked(True) self.ui.menuDevices.addAction(videoDeviceAction) def showMetaDataDialog(self): if self.metaDataDialog is None: self.metaDataDialog = MetaDataDialog(self) self.metaDataDialog.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, False) if self.metaDataDialog.exec() is QDialog.DialogCode.Accepted: self.saveMetaData() def saveMetaData(self): data = QMediaMetaData() for key in QMediaMetaData.Key: val = self.metaDataDialog.metaDataFields[key].text() if val: if key in (QMediaMetaData.Key.CoverArtImage, QMediaMetaData.Key.ThumbnailImage): val = QImage(val) elif key is QMediaMetaData.Key.Date: val = QDateTime.fromString(val) data.insert(key, val) self.mediaRecorder.setMetaData(data) if __name__ == '__main__': import sys app = QApplication(sys.argv) camera = Camera() camera.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.61762 PyQt6-6.6.1/examples/multimediawidgets/camera/camera.ui0000644000076500000240000003141014532151332021742 0ustar00philstaff Camera 0 0 668 429 Camera 0 Image Qt::Vertical 20 161 false Capture Photo -4 4 2 Qt::Horizontal QSlider::TicksAbove Exposure Compensation: Video Record Pause Stop Qt::Vertical 20 76 Mute true Set metadata true 1 0 255 255 255 145 145 145 255 255 255 145 145 145 145 145 145 145 145 145 0 0 0 QFrame::Box 0 0 668 28 File Devices Close Start Camera Stop Camera Change Settings QVideoWidget QWidget
PyQt6.QtMultimediaWidgets
1
recordButton clicked() Camera record() 647 149 61 238 stopButton clicked() Camera stop() 647 225 140 236 pauseButton clicked() Camera pause() 647 187 234 237 actionExit triggered() Camera close() -1 -1 154 130 takeImageButton clicked() Camera takeImage() 625 132 603 169 muteButton toggled(bool) Camera setMuted(bool) 647 377 5 280 exposureCompensation valueChanged(int) Camera setExposureCompensation(int) 559 367 665 365 actionSettings triggered() Camera configureCaptureSettings() -1 -1 333 210 actionStartCamera triggered() Camera startCamera() -1 -1 333 210 actionStopCamera triggered() Camera stopCamera() -1 -1 333 210 record() pause() stop() enablePreview(bool) configureCaptureSettings() takeImage() startCamera() toggleLock() setMuted(bool) stopCamera() setExposureCompensation(int)
././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3996444 PyQt6-6.6.1/examples/multimediawidgets/camera/images/0000755000076500000240000000000014532160402021417 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.618221 PyQt6-6.6.1/examples/multimediawidgets/camera/images/shutter.svg0000644000076500000240000000272314532151332023644 0ustar00philstaff ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.617498 PyQt6-6.6.1/examples/multimediawidgets/camera/imagesettings.ui0000644000076500000240000000633214532151332023362 0ustar00philstaff ImageSettingsUi 0 0 332 270 Image Settings Image Resolution: Image Format: Quality: 4 Qt::Horizontal Qt::Vertical 20 14 Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok buttonBox accepted() ImageSettingsUi accept() 322 272 44 230 buttonBox rejected() ImageSettingsUi reject() 405 262 364 227 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.723998 PyQt6-6.6.1/examples/multimediawidgets/camera/ui_camera.py0000644000076500000240000002470114532151332022457 0ustar00philstaff# Form implementation generated from reading ui file 'camera.ui' # # Created by: PyQt6 UI code generator 6.2.0.dev2107311659 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from PyQt6 import QtCore, QtGui, QtWidgets class Ui_Camera(object): def setupUi(self, Camera): Camera.setObjectName("Camera") Camera.resize(668, 429) self.centralwidget = QtWidgets.QWidget(Camera) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setObjectName("gridLayout_3") self.captureWidget = QtWidgets.QTabWidget(self.centralwidget) self.captureWidget.setObjectName("captureWidget") self.tab_2 = QtWidgets.QWidget() self.tab_2.setObjectName("tab_2") self.gridLayout = QtWidgets.QGridLayout(self.tab_2) self.gridLayout.setObjectName("gridLayout") spacerItem = QtWidgets.QSpacerItem(20, 161, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridLayout.addItem(spacerItem, 3, 0, 1, 1) self.takeImageButton = QtWidgets.QPushButton(self.tab_2) self.takeImageButton.setEnabled(False) self.takeImageButton.setObjectName("takeImageButton") self.gridLayout.addWidget(self.takeImageButton, 0, 0, 1, 1) self.exposureCompensation = QtWidgets.QSlider(self.tab_2) self.exposureCompensation.setMinimum(-4) self.exposureCompensation.setMaximum(4) self.exposureCompensation.setPageStep(2) self.exposureCompensation.setOrientation(QtCore.Qt.Orientation.Horizontal) self.exposureCompensation.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove) self.exposureCompensation.setObjectName("exposureCompensation") self.gridLayout.addWidget(self.exposureCompensation, 5, 0, 1, 1) self.label = QtWidgets.QLabel(self.tab_2) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 4, 0, 1, 1) self.captureWidget.addTab(self.tab_2, "") self.tab = QtWidgets.QWidget() self.tab.setObjectName("tab") self.gridLayout_2 = QtWidgets.QGridLayout(self.tab) self.gridLayout_2.setObjectName("gridLayout_2") self.recordButton = QtWidgets.QPushButton(self.tab) self.recordButton.setObjectName("recordButton") self.gridLayout_2.addWidget(self.recordButton, 0, 0, 1, 1) self.pauseButton = QtWidgets.QPushButton(self.tab) self.pauseButton.setObjectName("pauseButton") self.gridLayout_2.addWidget(self.pauseButton, 1, 0, 1, 1) self.stopButton = QtWidgets.QPushButton(self.tab) self.stopButton.setObjectName("stopButton") self.gridLayout_2.addWidget(self.stopButton, 2, 0, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 76, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridLayout_2.addItem(spacerItem1, 3, 0, 1, 1) self.muteButton = QtWidgets.QPushButton(self.tab) self.muteButton.setCheckable(True) self.muteButton.setObjectName("muteButton") self.gridLayout_2.addWidget(self.muteButton, 4, 0, 1, 1) self.metaDataButton = QtWidgets.QPushButton(self.tab) self.metaDataButton.setCheckable(True) self.metaDataButton.setObjectName("metaDataButton") self.gridLayout_2.addWidget(self.metaDataButton, 5, 0, 1, 1) self.captureWidget.addTab(self.tab, "") self.gridLayout_3.addWidget(self.captureWidget, 1, 1, 1, 2) self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.stackedWidget.sizePolicy().hasHeightForWidth()) self.stackedWidget.setSizePolicy(sizePolicy) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Window, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Window, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Base, brush) brush = QtGui.QBrush(QtGui.QColor(145, 145, 145)) brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern) palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Window, brush) self.stackedWidget.setPalette(palette) self.stackedWidget.setObjectName("stackedWidget") self.viewfinderPage = QtWidgets.QWidget() self.viewfinderPage.setObjectName("viewfinderPage") self.gridLayout_5 = QtWidgets.QGridLayout(self.viewfinderPage) self.gridLayout_5.setObjectName("gridLayout_5") self.viewfinder = QVideoWidget(self.viewfinderPage) self.viewfinder.setObjectName("viewfinder") self.gridLayout_5.addWidget(self.viewfinder, 0, 0, 1, 1) self.stackedWidget.addWidget(self.viewfinderPage) self.previewPage = QtWidgets.QWidget() self.previewPage.setObjectName("previewPage") self.gridLayout_4 = QtWidgets.QGridLayout(self.previewPage) self.gridLayout_4.setObjectName("gridLayout_4") self.lastImagePreviewLabel = QtWidgets.QLabel(self.previewPage) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.MinimumExpanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.lastImagePreviewLabel.sizePolicy().hasHeightForWidth()) self.lastImagePreviewLabel.setSizePolicy(sizePolicy) self.lastImagePreviewLabel.setFrameShape(QtWidgets.QFrame.Shape.Box) self.lastImagePreviewLabel.setText("") self.lastImagePreviewLabel.setObjectName("lastImagePreviewLabel") self.gridLayout_4.addWidget(self.lastImagePreviewLabel, 0, 0, 1, 1) self.stackedWidget.addWidget(self.previewPage) self.gridLayout_3.addWidget(self.stackedWidget, 0, 0, 2, 1) Camera.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Camera) self.menubar.setGeometry(QtCore.QRect(0, 0, 668, 28)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") self.menuDevices = QtWidgets.QMenu(self.menubar) self.menuDevices.setObjectName("menuDevices") Camera.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Camera) self.statusbar.setObjectName("statusbar") Camera.setStatusBar(self.statusbar) self.actionExit = QtGui.QAction(Camera) self.actionExit.setObjectName("actionExit") self.actionStartCamera = QtGui.QAction(Camera) self.actionStartCamera.setObjectName("actionStartCamera") self.actionStopCamera = QtGui.QAction(Camera) self.actionStopCamera.setObjectName("actionStopCamera") self.actionSettings = QtGui.QAction(Camera) self.actionSettings.setObjectName("actionSettings") self.menuFile.addAction(self.actionStartCamera) self.menuFile.addAction(self.actionStopCamera) self.menuFile.addSeparator() self.menuFile.addAction(self.actionSettings) self.menuFile.addSeparator() self.menuFile.addAction(self.actionExit) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuDevices.menuAction()) self.retranslateUi(Camera) self.captureWidget.setCurrentIndex(0) self.stackedWidget.setCurrentIndex(0) self.recordButton.clicked.connect(Camera.record) self.stopButton.clicked.connect(Camera.stop) self.pauseButton.clicked.connect(Camera.pause) self.actionExit.triggered.connect(Camera.close) self.takeImageButton.clicked.connect(Camera.takeImage) self.muteButton.toggled['bool'].connect(Camera.setMuted) self.exposureCompensation.valueChanged['int'].connect(Camera.setExposureCompensation) self.actionSettings.triggered.connect(Camera.configureCaptureSettings) self.actionStartCamera.triggered.connect(Camera.startCamera) self.actionStopCamera.triggered.connect(Camera.stopCamera) QtCore.QMetaObject.connectSlotsByName(Camera) def retranslateUi(self, Camera): _translate = QtCore.QCoreApplication.translate Camera.setWindowTitle(_translate("Camera", "Camera")) self.takeImageButton.setText(_translate("Camera", "Capture Photo")) self.label.setText(_translate("Camera", "Exposure Compensation:")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab_2), _translate("Camera", "Image")) self.recordButton.setText(_translate("Camera", "Record")) self.pauseButton.setText(_translate("Camera", "Pause")) self.stopButton.setText(_translate("Camera", "Stop")) self.muteButton.setText(_translate("Camera", "Mute")) self.metaDataButton.setText(_translate("Camera", "Set metadata")) self.captureWidget.setTabText(self.captureWidget.indexOf(self.tab), _translate("Camera", "Video")) self.menuFile.setTitle(_translate("Camera", "File")) self.menuDevices.setTitle(_translate("Camera", "Devices")) self.actionExit.setText(_translate("Camera", "Close")) self.actionStartCamera.setText(_translate("Camera", "Start Camera")) self.actionStopCamera.setText(_translate("Camera", "Stop Camera")) self.actionSettings.setText(_translate("Camera", "Change Settings")) from PyQt6.QtMultimediaWidgets import QVideoWidget ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.622961 PyQt6-6.6.1/examples/multimediawidgets/camera/ui_imagesettings.py0000644000076500000240000000657514532151332024103 0ustar00philstaff# Form implementation generated from reading ui file 'imagesettings.ui' # # Created by: PyQt6 UI code generator 6.2.0.dev2107180056 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from PyQt6 import QtCore, QtGui, QtWidgets class Ui_ImageSettingsUi(object): def setupUi(self, ImageSettingsUi): ImageSettingsUi.setObjectName("ImageSettingsUi") ImageSettingsUi.resize(332, 270) self.gridLayout = QtWidgets.QGridLayout(ImageSettingsUi) self.gridLayout.setObjectName("gridLayout") self.groupBox_2 = QtWidgets.QGroupBox(ImageSettingsUi) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.imageResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.imageResolutionBox.setObjectName("imageResolutionBox") self.gridLayout_2.addWidget(self.imageResolutionBox, 1, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 2, 0, 1, 2) self.imageCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.imageCodecBox.setObjectName("imageCodecBox") self.gridLayout_2.addWidget(self.imageCodecBox, 3, 0, 1, 2) self.label_7 = QtWidgets.QLabel(self.groupBox_2) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 4, 0, 1, 1) self.imageQualitySlider = QtWidgets.QSlider(self.groupBox_2) self.imageQualitySlider.setMaximum(4) self.imageQualitySlider.setOrientation(QtCore.Qt.Orientation.Horizontal) self.imageQualitySlider.setObjectName("imageQualitySlider") self.gridLayout_2.addWidget(self.imageQualitySlider, 4, 1, 1, 1) self.gridLayout.addWidget(self.groupBox_2, 0, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 14, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) self.buttonBox = QtWidgets.QDialogButtonBox(ImageSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout.addWidget(self.buttonBox, 2, 0, 1, 1) self.retranslateUi(ImageSettingsUi) self.buttonBox.accepted.connect(ImageSettingsUi.accept) self.buttonBox.rejected.connect(ImageSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(ImageSettingsUi) def retranslateUi(self, ImageSettingsUi): _translate = QtCore.QCoreApplication.translate ImageSettingsUi.setWindowTitle(_translate("ImageSettingsUi", "Image Settings")) self.groupBox_2.setTitle(_translate("ImageSettingsUi", "Image")) self.label_8.setText(_translate("ImageSettingsUi", "Resolution:")) self.label_6.setText(_translate("ImageSettingsUi", "Image Format:")) self.label_7.setText(_translate("ImageSettingsUi", "Quality:")) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.619742 PyQt6-6.6.1/examples/multimediawidgets/camera/ui_videosettings.py0000644000076500000240000001453414532151332024121 0ustar00philstaff# Form implementation generated from reading ui file 'videosettings.ui' # # Created by: PyQt6 UI code generator 6.2.0.dev2107180056 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from PyQt6 import QtCore, QtGui, QtWidgets class Ui_VideoSettingsUi(object): def setupUi(self, VideoSettingsUi): VideoSettingsUi.setObjectName("VideoSettingsUi") VideoSettingsUi.resize(686, 499) self.gridLayout_3 = QtWidgets.QGridLayout(VideoSettingsUi) self.gridLayout_3.setObjectName("gridLayout_3") self.buttonBox = QtWidgets.QDialogButtonBox(VideoSettingsUi) self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok) self.buttonBox.setObjectName("buttonBox") self.gridLayout_3.addWidget(self.buttonBox, 4, 1, 1, 1) self.groupBox_2 = QtWidgets.QGroupBox(VideoSettingsUi) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.videoResolutionBox = QtWidgets.QComboBox(self.groupBox_2) self.videoResolutionBox.setObjectName("videoResolutionBox") self.gridLayout_2.addWidget(self.videoResolutionBox, 1, 0, 1, 2) self.label_6 = QtWidgets.QLabel(self.groupBox_2) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 4, 0, 1, 2) self.videoFramerateBox = QtWidgets.QComboBox(self.groupBox_2) self.videoFramerateBox.setObjectName("videoFramerateBox") self.gridLayout_2.addWidget(self.videoFramerateBox, 3, 0, 1, 2) self.label_9 = QtWidgets.QLabel(self.groupBox_2) self.label_9.setObjectName("label_9") self.gridLayout_2.addWidget(self.label_9, 2, 0, 1, 2) self.label_8 = QtWidgets.QLabel(self.groupBox_2) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 0, 0, 1, 2) self.videoCodecBox = QtWidgets.QComboBox(self.groupBox_2) self.videoCodecBox.setObjectName("videoCodecBox") self.gridLayout_2.addWidget(self.videoCodecBox, 5, 0, 1, 2) self.gridLayout_3.addWidget(self.groupBox_2, 2, 1, 1, 1) self.widget = QtWidgets.QWidget(VideoSettingsUi) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth()) self.widget.setSizePolicy(sizePolicy) self.widget.setObjectName("widget") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.groupBox_3 = QtWidgets.QGroupBox(self.widget) self.groupBox_3.setObjectName("groupBox_3") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_3) self.verticalLayout_2.setObjectName("verticalLayout_2") self.label_2 = QtWidgets.QLabel(self.groupBox_3) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) self.audioCodecBox = QtWidgets.QComboBox(self.groupBox_3) self.audioCodecBox.setObjectName("audioCodecBox") self.verticalLayout_2.addWidget(self.audioCodecBox) self.label_5 = QtWidgets.QLabel(self.groupBox_3) self.label_5.setObjectName("label_5") self.verticalLayout_2.addWidget(self.label_5) self.audioSampleRateBox = QtWidgets.QSpinBox(self.groupBox_3) self.audioSampleRateBox.setObjectName("audioSampleRateBox") self.verticalLayout_2.addWidget(self.audioSampleRateBox) self.verticalLayout_3.addWidget(self.groupBox_3) self.groupBox = QtWidgets.QGroupBox(self.widget) self.groupBox.setObjectName("groupBox") self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) self.verticalLayout.setObjectName("verticalLayout") self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.verticalLayout.addWidget(self.label_3) self.qualitySlider = QtWidgets.QSlider(self.groupBox) self.qualitySlider.setMaximum(4) self.qualitySlider.setOrientation(QtCore.Qt.Orientation.Horizontal) self.qualitySlider.setObjectName("qualitySlider") self.verticalLayout.addWidget(self.qualitySlider) self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setObjectName("label_4") self.verticalLayout.addWidget(self.label_4) self.containerFormatBox = QtWidgets.QComboBox(self.groupBox) self.containerFormatBox.setObjectName("containerFormatBox") self.verticalLayout.addWidget(self.containerFormatBox) self.verticalLayout_3.addWidget(self.groupBox) self.gridLayout_3.addWidget(self.widget, 2, 0, 1, 1) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) self.gridLayout_3.addItem(spacerItem, 3, 0, 1, 1) self.retranslateUi(VideoSettingsUi) self.buttonBox.accepted.connect(VideoSettingsUi.accept) self.buttonBox.rejected.connect(VideoSettingsUi.reject) QtCore.QMetaObject.connectSlotsByName(VideoSettingsUi) def retranslateUi(self, VideoSettingsUi): _translate = QtCore.QCoreApplication.translate VideoSettingsUi.setWindowTitle(_translate("VideoSettingsUi", "Video Settings")) self.groupBox_2.setTitle(_translate("VideoSettingsUi", "Video")) self.label_6.setText(_translate("VideoSettingsUi", "Video Codec:")) self.label_9.setText(_translate("VideoSettingsUi", "Framerate:")) self.label_8.setText(_translate("VideoSettingsUi", "Resolution:")) self.groupBox_3.setTitle(_translate("VideoSettingsUi", "Audio")) self.label_2.setText(_translate("VideoSettingsUi", "Audio Codec:")) self.label_5.setText(_translate("VideoSettingsUi", "Sample Rate:")) self.label_3.setText(_translate("VideoSettingsUi", "Quality:")) self.label_4.setText(_translate("VideoSettingsUi", "File Format:")) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623927 PyQt6-6.6.1/examples/multimediawidgets/camera/videosettings.ui0000644000076500000240000001313714532151332023407 0ustar00philstaff VideoSettingsUi 0 0 686 499 Video Settings Qt::Horizontal QDialogButtonBox::Cancel|QDialogButtonBox::Ok Video Video Codec: Framerate: Resolution: 0 0 0 0 0 0 Audio Audio Codec: Sample Rate: Quality: 4 Qt::Horizontal File Format: Qt::Vertical 20 40 buttonBox accepted() VideoSettingsUi accept() 322 272 44 230 buttonBox rejected() VideoSettingsUi reject() 405 262 364 227 ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.621779 PyQt6-6.6.1/examples/multimediawidgets/videographicsitem.py0000644000076500000240000001420514532151332023006 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2017 The Qt Company Ltd. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QDir, QSizeF, QStandardPaths, Qt, QUrl from PyQt6.QtGui import QTransform from PyQt6.QtMultimedia import QMediaPlayer from PyQt6.QtMultimediaWidgets import QGraphicsVideoItem from PyQt6.QtWidgets import (QApplication, QFileDialog, QGraphicsScene, QGraphicsView, QHBoxLayout, QPushButton, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super().__init__(parent) self.mediaPlayer = QMediaPlayer(self) screenGeometry = self.screen().availableSize() self.videoItem = QGraphicsVideoItem() self.videoItem.setSize( QSizeF(screenGeometry.width() / 3, screenGeometry.height() / 2)) scene = QGraphicsScene(self) graphicsView = QGraphicsView(scene) scene.addItem(self.videoItem) rotateSlider = QSlider(Qt.Orientation.Horizontal) rotateSlider.setToolTip("Rotate Video") rotateSlider.setRange(-180, 180) rotateSlider.setValue(0) rotateSlider.valueChanged.connect(self.rotateVideo) openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon( self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Orientation.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout(self) layout.addWidget(graphicsView) layout.addWidget(rotateSlider) layout.addLayout(controlLayout) self.mediaPlayer.setVideoOutput(self.videoItem) self.mediaPlayer.playbackStateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) def sizeHint(self): return ((self.videoItem.size() * 3.0) / 2.0).toSize() def isPlayerAvailable(self): return self.mediaPlayer.isAvailable() def openFile(self): fileDialog = QFileDialog(self) fileDialog.setAcceptMode(QFileDialog.AcceptMode.AcceptOpen) fileDialog.setWindowTitle("Open Movie") try: location = QStandardPaths.standardLocations( QStandardPaths.StandardLocation.MoviesLocation)[0] except IndexError: location = QDir.homePath() fileDialog.setDirectory(location) if fileDialog.exec() == QFileDialog.DialogCode.Accepted: self.load(fileDialog.selectedUrls()[0]) def load(self, url): self.mediaPlayer.setSource(url) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.playbackState() is QMediaPlayer.PlaybackState.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if state is QMediaPlayer.PlaybackState.PlayingState: icon = QStyle.StandardPixmap.SP_MediaPause else: icon = QStyle.StandardPixmap.SP_MediaPlay self.playButton.setIcon(self.style().standardIcon(icon)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def rotateVideo(self, angle): x = self.videoItem.boundingRect().width() / 2.0 y = self.videoItem.boundingRect().height() / 2.0 self.videoItem.setTransform( QTransform().translate(x, y).rotate(angle).translate(-x, -y)) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626302 PyQt6-6.6.1/examples/multimediawidgets/videowidget.py0000644000076500000240000001334114532151332021612 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2017 The Qt Company Ltd. ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QDir, QStandardPaths, Qt, QUrl from PyQt6.QtMultimedia import QMediaPlayer from PyQt6.QtMultimediaWidgets import QVideoWidget from PyQt6.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget) class VideoPlayer(QWidget): def __init__(self, parent=None): super().__init__(parent) self.mediaPlayer = QMediaPlayer(self) videoWidget = QVideoWidget() openButton = QPushButton("Open...") openButton.clicked.connect(self.openFile) self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon( self.style().standardIcon(QStyle.StandardPixmap.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Orientation.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Maximum) controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(openButton) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) self.setLayout(layout) self.mediaPlayer.setVideoOutput(videoWidget) self.mediaPlayer.playbackStateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.errorChanged.connect(self.handleError) def openFile(self): fileDialog = QFileDialog(self) fileDialog.setAcceptMode(QFileDialog.AcceptMode.AcceptOpen) fileDialog.setWindowTitle("Open Movie") try: location = QStandardPaths.standardLocations( QStandardPaths.StandardLocation.MoviesLocation)[0] except IndexError: location = QDir.homePath() fileDialog.setDirectory(location) if fileDialog.exec() == QFileDialog.DialogCode.Accepted: self.setUrl(fileDialog.selectedUrls()[0]) def setUrl(self, url): self.errorLabel.setText('') self.setWindowFilePath(url.toLocalFile() if url.isLocalFile() else '') self.mediaPlayer.setSource(url) self.playButton.setEnabled(True) def play(self): if self.mediaPlayer.playbackState() is QMediaPlayer.PlaybackState.PlayingState: self.mediaPlayer.pause() else: self.mediaPlayer.play() def mediaStateChanged(self, state): if state is QMediaPlayer.PlaybackState.PlayingState: icon = QStyle.StandardPixmap.SP_MediaPause else: icon = QStyle.StandardPixmap.SP_MediaPlay self.playButton.setIcon(self.style().standardIcon(icon)) def positionChanged(self, position): self.positionSlider.setValue(position) def durationChanged(self, duration): self.positionSlider.setRange(0, duration) def setPosition(self, position): self.mediaPlayer.setPosition(position) def handleError(self): if self.mediaPlayer.error() is QMediaPlayer.Error.NoError: return self.playButton.setEnabled(False) self.errorLabel.setText("Error: " + self.mediaPlayer.errorString()) if __name__ == '__main__': import sys app = QApplication(sys.argv) player = VideoPlayer() player.resize(320, 240) player.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3911037 PyQt6-6.6.1/examples/qml/0000755000076500000240000000000014532160402013772 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3951542 PyQt6-6.6.1/examples/qml/referenceexamples/0000755000076500000240000000000014532160402017467 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627777 PyQt6-6.6.1/examples/qml/referenceexamples/adding.py0000755000076500000240000000623414532151332021301 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt6.QtQml import qmlRegisterType, QQmlComponent, QQmlEngine QML = b''' import People 1.0 Person { name: "Bob Jones" shoeSize: 12 } ''' class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize app = QCoreApplication(sys.argv) qmlRegisterType(Person, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) person = component.create() if person is not None: print("The person's name is \"{name}\"".format(name=person.name)) print("They wear a {size} sized shoe".format(size=person.shoeSize)) else: print("Unable to create component instance") for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.634559 PyQt6-6.6.1/examples/qml/referenceexamples/attached.py0000755000076500000240000001362014532151332021625 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, QCoreApplication, QDate, QObject, QUrl) from PyQt6.QtGui import QColor from PyQt6.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { Boy { name: "Robert Campbell" BirthdayParty.rsvp: "2009-07-01" } Boy { name: "Leo Hodges" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } BirthdayParty.rsvp: "2009-07-06" } host: Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super().__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super().__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(ShoeDescription, 'People', 1, 0) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayPartyAttached, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0, attachedProperties=BirthdayPartyAttached) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"{name}\" RSVP date: Hasn't RSVP'd".format( name=guest.name)) else: print(" \"{name}\" RSVP date: {date}".format(name=guest.name, date=rsvpDate.toString())) else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629359 PyQt6-6.6.1/examples/qml/referenceexamples/binding.py0000755000076500000240000002116714532151332021467 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, pyqtSignal, pyqtSlot, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt6.QtGui import QColor from PyQt6.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { id: theParty HappyBirthdaySong on announcement { name: theParty.host.name } host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } onPartyStarted: console.log("This party started rockin' at " + time); Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super().__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super().__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super().__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear {name},".format(name=self._name), "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(ShoeDescription, 'People', 1, 0) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayPartyAttached, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0, attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"{name}\" RSVP date: Hasn't RSVP'd".format( name=guest.name)) else: print(" \"{name}\" RSVP date: {date}".format(name=guest.name, date=rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.619578 PyQt6-6.6.1/examples/qml/referenceexamples/coercion.py0000755000076500000240000001004514532151332021647 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt6.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } guests: [ Boy { name: "Leo Hodges" }, Boy { name: "Jack Smith" }, Girl { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"{name}\"".format(name=guest.name)) else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.620177 PyQt6-6.6.1/examples/qml/referenceexamples/default.py0000755000076500000240000001011014532151332021463 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, QCoreApplication, QObject, QUrl) from PyQt6.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 BirthdayParty { host: Boy { name: "Bob Jones" shoeSize: 12 } Boy { name: "Leo Hodges" } Boy { name: "Jack Smith" } Girl { name: "Anne Brown" } } ''' class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class Boy(Person): pass class Girl(Person): pass @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: print(" \"{name}\"".format(name=guest.name)) else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.619928 PyQt6-6.6.1/examples/qml/referenceexamples/grouped.py0000755000076500000240000001277614532151332021530 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, QCoreApplication, QObject, QUrl) from PyQt6.QtGui import QColor from PyQt6.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Bikey"; price: 90.0 } } Boy { name: "Leo Hodges" shoe { size: 10; color: "black"; brand: "Thebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8 color: "blue" brand: "Luma" price: 19.95 } } Girl { name: "Anne Brown" shoe.size: 7 shoe.color: "red" shoe.brand: "Job Macobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super().__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(ShoeDescription, 'People', 1, 0) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") bestShoe = None for guest in party.guests: print(" \"{name}\"".format(name=guest.name)) if bestShoe is None or bestShoe.shoe.price < guest.shoe.price: bestShoe = guest if bestShoe is not None: print("\"{name}\" is wearing the best shoes!".format( name=bestShoe.name)) else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.725367 PyQt6-6.6.1/examples/qml/referenceexamples/methods.py0000755000076500000240000001007514532151332021514 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtProperty, pyqtSlot, QCoreApplication, QObject, QUrl) from PyQt6.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] Component.onCompleted: invite("William Green") } ''' class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtSlot(str) def invite(self, name): person = Person(self) person.name = name self._guests.append(person) app = QCoreApplication(sys.argv) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) print("They are inviting:") for guest in party.guests: print(" \"{name}\"".format(name=guest.name)) else: for e in component.errors(): print("Error:", e.toString()) ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.62411 PyQt6-6.6.1/examples/qml/referenceexamples/properties.py0000755000076500000240000000755114532151332022252 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import pyqtProperty, QCoreApplication, QObject, QUrl from PyQt6.QtQml import (qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import QtQuick 2.0 import People 1.0 BirthdayParty { host: Person { name: "Bob Jones" shoeSize: 12 } guests: [ Person { name: "Leo Hodges" }, Person { name: "Jack Smith" }, Person { name: "Anne Brown" } ] } ''' class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoeSize = 0 @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(int) def shoeSize(self): return self._shoeSize @shoeSize.setter def shoeSize(self, shoeSize): self._shoeSize = shoeSize class BirthdayParty(QObject): def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) app = QCoreApplication(sys.argv) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) print("They are inviting:") for guest in party.guests: print(" \"{name}\"".format(name=guest.name)) else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.622381 PyQt6-6.6.1/examples/qml/referenceexamples/signal.py0000755000076500000240000001455014532151332021330 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, pyqtSignal, QCoreApplication, QDate, QObject, QTime, QUrl) from PyQt6.QtGui import QColor from PyQt6.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super().__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 @pyqtProperty(int) def size(self): return self._size @size.setter def size(self, size): self._size = size @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = color @pyqtProperty(str) def brand(self): return self._brand @brand.setter def brand(self, brand): self._brand = brand @pyqtProperty(float) def price(self): return self._price @price.setter def price(self, price): self._price = price class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super().__init__(parent) self._rsvp = QDate() @pyqtProperty(QDate) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): self._rsvp = rsvp @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] @pyqtProperty(Person) def host(self): return self._host @host.setter def host(self, host): self._host = host @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) def startParty(self): self.partyStarted.emit(QTime.currentTime()) app = QCoreApplication(sys.argv) qmlRegisterType(ShoeDescription, 'People', 1, 0) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayPartyAttached, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0, attachedProperties=BirthdayPartyAttached) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"{name}\" RSVP date: Hasn't RSVP'd".format( name=guest.name)) else: print(" \"{name}\" RSVP date: {date}".format(name=guest.name, date=rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625521 PyQt6-6.6.1/examples/qml/referenceexamples/valuesource.py0000755000076500000240000002116514532151332022410 0ustar00philstaff#!/usr/bin/env python ############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import sys from PyQt6.QtCore import (pyqtClassInfo, pyqtProperty, pyqtSignal, pyqtSlot, QCoreApplication, QDate, QObject, QTime, QTimer, QUrl) from PyQt6.QtGui import QColor from PyQt6.QtQml import (qmlAttachedPropertiesObject, qmlRegisterType, QQmlComponent, QQmlEngine, QQmlListProperty, QQmlProperty, QQmlPropertyValueSource) QML = b''' import People 1.0 import QtQuick 2.0 BirthdayParty { HappyBirthdaySong on announcement { name: "Bob Jones" } onPartyStarted: console.log("This party started rockin' at " + time); host: Boy { name: "Bob Jones" shoe { size: 12; color: "white"; brand: "Nike"; price: 90.0 } } Boy { name: "Leo Hodges" BirthdayParty.rsvp: "2009-07-06" shoe { size: 10; color: "black"; brand: "Reebok"; price: 59.95 } } Boy { name: "Jack Smith" shoe { size: 8; color: "blue"; brand: "Puma"; price: 19.95 } } Girl { name: "Anne Brown" BirthdayParty.rsvp: "2009-07-01" shoe.size: 7 shoe.color: "red" shoe.brand: "Marc Jacobs" shoe.price: 699.99 } } ''' class ShoeDescription(QObject): def __init__(self, parent=None): super().__init__(parent) self._size = 0 self._color = QColor() self._brand = '' self._price = 0.0 shoeChanged = pyqtSignal() @pyqtProperty(int, notify=shoeChanged) def size(self): return self._size @size.setter def size(self, size): if self._size != size: self._size = size self.shoeChanged.emit() @pyqtProperty(QColor, notify=shoeChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.shoeChanged.emit() @pyqtProperty(str, notify=shoeChanged) def brand(self): return self._brand @brand.setter def brand(self, brand): if self._brand != brand: self._brand = brand self.shoeChanged.emit() @pyqtProperty(float, notify=shoeChanged) def price(self): return self._price @price.setter def price(self, price): if self._price != price: self._price = price self.shoeChanged.emit() class Person(QObject): def __init__(self, parent=None): super().__init__(parent) self._name = '' self._shoe = ShoeDescription() nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() @pyqtProperty(ShoeDescription) def shoe(self): return self._shoe class Boy(Person): pass class Girl(Person): pass class BirthdayPartyAttached(QObject): def __init__(self, parent): super().__init__(parent) self._rsvp = QDate() rsvpChanged = pyqtSignal() @pyqtProperty(QDate, notify=rsvpChanged) def rsvp(self): return self._rsvp @rsvp.setter def rsvp(self, rsvp): if self._rsvp != rsvp: self._rsvp = rsvp self.rsvpChanged.emit() @pyqtClassInfo('DefaultProperty', 'guests') class BirthdayParty(QObject): partyStarted = pyqtSignal(QTime, arguments=['time']) def __init__(self, parent=None): super().__init__(parent) self._host = None self._guests = [] hostChanged = pyqtSignal() @pyqtProperty(Person, notify=hostChanged) def host(self): return self._host @host.setter def host(self, host): if self._host != host: self._host = host self.hostChanged.emit() @pyqtProperty(QQmlListProperty) def guests(self): return QQmlListProperty(Person, self, self._guests) @pyqtProperty(str) def announcement(self): return '' @announcement.setter def announcement(self, announcement): print(announcement) def startParty(self): self.partyStarted.emit(QTime.currentTime()) class HappyBirthdaySong(QObject, QQmlPropertyValueSource): def __init__(self, parent=None): super(HappyBirthdaySong, self).__init__(parent) self._line = -1 self._lyrics = [] self._target = QQmlProperty() self._name = '' timer = QTimer(self) timer.timeout.connect(self.advance) timer.start(1000) nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self._lyrics = [ "", "Happy birthday to you,", "Happy birthday to you,", "Happy birthday dear {name},".format(name=self._name), "Happy birthday to you!" ] self.nameChanged.emit() def setTarget(self, target): self._target = target @pyqtSlot() def advance(self): self._line += 1 if self._line < len(self._lyrics): self._target.write(self._lyrics[self._line]) else: QCoreApplication.instance().quit() app = QCoreApplication(sys.argv) qmlRegisterType(ShoeDescription, 'People', 1, 0) qmlRegisterType(Person, 'People', 1, 0) qmlRegisterType(Boy, 'People', 1, 0) qmlRegisterType(Girl, 'People', 1, 0) qmlRegisterType(BirthdayPartyAttached, 'People', 1, 0) qmlRegisterType(BirthdayParty, 'People', 1, 0, attachedProperties=BirthdayPartyAttached) qmlRegisterType(HappyBirthdaySong, 'People', 1, 0) engine = QQmlEngine() component = QQmlComponent(engine) component.setData(QML, QUrl()) party = component.create() if party is not None and party.host is not None: print("\"{name}\" is having a birthday!".format(name=party.host.name)) if isinstance(party.host, Boy): print("He is inviting:") else: print("She is inviting:") for guest in party.guests: attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False) if attached is not None: rsvpDate = attached.property('rsvp') else: rsvpDate = QDate() if rsvpDate.isNull(): print(" \"{name}\" RSVP date: Hasn't RSVP'd".format( name=guest.name)) else: print(" \"{name}\" RSVP date: {date}".format(name=guest.name, date=rsvpDate.toString())) party.startParty() else: for e in component.errors(): print("Error:", e.toString()); sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4345171 PyQt6-6.6.1/examples/quick/0000755000076500000240000000000014532160402014315 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4086552 PyQt6-6.6.1/examples/quick/animation/0000755000076500000240000000000014532160402016274 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.624432 PyQt6-6.6.1/examples/quick/animation/animation.py0000644000076500000240000000455714532151332020642 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os import sys from PyQt6.QtCore import QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtQuick import QQuickView os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl.fromLocalFile('animation.qml')) view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627306 PyQt6-6.6.1/examples/quick/animation/animation.qml0000644000076500000240000000645314532151332021000 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("ColorAnimation", "Interpolates between colors", Qt.resolvedUrl("basics/color-animation.qml")); addExample("PropertyAnimation", "Interpolates between numbers", Qt.resolvedUrl("basics/property-animation.qml")); addExample("Behaviors", "Animates procedural movement", Qt.resolvedUrl("behaviors/behavior-example.qml")); addExample("Wiggly Text", "Text that wiggles as you drag it", Qt.resolvedUrl("behaviors/wigglytext.qml")); addExample("Tv Tennis", "Paddles that follow a ball", Qt.resolvedUrl("behaviors/tvtennis.qml")); addExample("Easing Curves", "Compare available easing curves", Qt.resolvedUrl("easing/easing.qml")); addExample("States", "Simple states", Qt.resolvedUrl("states/states.qml")); addExample("Transitions", "Simple states with animated transitions", Qt.resolvedUrl("states/transitions.qml")); addExample("PathAnimation", "Animate along a path", Qt.resolvedUrl("pathanimation/pathanimation.qml")); addExample("PathInterpolator", "Interpolates along a path", Qt.resolvedUrl("pathinterpolator/pathinterpolator.qml")); } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4020252 PyQt6-6.6.1/examples/quick/animation/basics/0000755000076500000240000000000014532160402017540 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629481 PyQt6-6.6.1/examples/quick/animation/basics/color-animation.qml0000644000076500000240000001153514532151332023355 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import QtQuick.Particles 2.0 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } //! [0] gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "DeepSkyBlue"; to: "#0E1533"; duration: 5000 } ColorAnimation { from: "#0E1533"; to: "DeepSkyBlue"; duration: 5000 } } } GradientStop { position: 1.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "SkyBlue"; to: "#437284"; duration: 5000 } ColorAnimation { from: "#437284"; to: "SkyBlue"; duration: 5000 } } } } //! [0] } // the sun, moon, and stars Item { width: parent.width; height: 2 * parent.height NumberAnimation on rotation { from: 0; to: 360; duration: 10000; loops: Animation.Infinite } Image { source: "images/sun.png"; y: 10; anchors.horizontalCenter: parent.horizontalCenter rotation: -3 * parent.rotation } Image { source: "images/moon.png"; y: parent.height - 74; anchors.horizontalCenter: parent.horizontalCenter rotation: -parent.rotation } ParticleSystem { id: particlesystem x: 0; y: parent.height/2 width: parent.width; height: parent.height/2 ImageParticle { source: "images/star.png" groups: ["star"] color: "#00333333" SequentialAnimation on opacity { loops: Animation.Infinite NumberAnimation { from: 0; to: 1; duration: 5000 } NumberAnimation { from: 1; to: 0; duration: 5000 } } } Emitter { group: "star" anchors.fill: parent emitRate: parent.width / 50 lifeSpan: 5000 } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0 SequentialAnimation on color { loops: Animation.Infinite ColorAnimation { from: "ForestGreen"; to: "#001600"; duration: 5000 } ColorAnimation { from: "#001600"; to: "ForestGreen"; duration: 5000 } } } GradientStop { position: 1.0; color: "DarkGreen" } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4036758 PyQt6-6.6.1/examples/quick/animation/basics/images/0000755000076500000240000000000014532160402021005 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.636356 PyQt6-6.6.1/examples/quick/animation/basics/images/face-smile.png0000644000076500000240000003606014532151332023527 0ustar00philstaff‰PNG  IHDR@@úù­ pHYs Ö Öoyœ vpAg@@êóø`bKGDÿÿÿÿÿÿ X÷Ü;IDATxÚì|wTU×¶þ>…sè;EAcÁŠ0ö cW4»€šØ4šh,5ÆÆ ¦¨‰ 5KT41vÀ†‘"NÛåÍ9÷Zã7rÿùåæÝûÞïÞdp¿¬]V™ßlk®}®VøÏ?ÿÖÿüŸSEÉVbe[6à.E¹–X©(_%šeŠr¡àSEÉW`ùZŽü:Ž¿ÇûáýþGþ× VˆE9DiåøEXÆlE¹tUô›Aê%Æa‚Ð$Aœû BM– ¸Ï¿õ‚à ïØ& ‚÷-Ax’ øG~?Çßãýð~ù8|\>>¯ÿ(À?ŒèT„ E9[ ðœ¢\M†é~'g¦ ‚a(µC\àÏñAðë–÷¡þIAÐiÁÐÖ´„ð'¯^€daµ ´Ÿ$œÔÜ„ŽVa¯b„Î6Žü:Ž¿Çûáýòqø¸||^|ž|Þ|ÿQ€?Mø÷§Aè^@J)XÚsX !ÕVö›p¯DÊÀ"w1õ…ºŠ¿×ÑúÚ§t´ã‘‘'Š_==/,PôàÑŽZþiE9oÖïŸ~¨8áÑ­ÀGû K²óN6’¾¾_2-/?äü¡°’5yž„>yñÁáp½Aî’ Öû ‹Ï=J¯ÿÞ+ÉÝRkGZFɳ'û½ÞX<àõ°ÒLÇ_GžàãòyðyñyòyóuðuñuþÛ+€¢xBì­¼)>+Û$®‹ÁéŠ 8 ‚o< â+4…7Þjo(o\ïlyÇ»pÞ#¿¢ G 3® ª³o¨èl¹²øÃ—¹Þ³›}:bªç̆ֈmû{Ÿ {§CŸà!Þ®m¢—{yyÍŠŒèqÅi¡÷¡Ni½ëêtÞk;­ïÝ pL¤K÷Ïœz%´ ÏYÃÚuÐñݹ¿Ë,ǦËGL•¦Ø^„Ôÿ°¦x_îÆ†íö -îœw¸Ö± GÊí%%.CÞñæóäóæëàëâëäëærø·QHª¶Ä ÂaøÖ‚`ît J–Ӟ؂"}m_£¹ÙùDIì“r ï› ¾{ðÈ?k÷-ù²=ªÑÞ <êêÜa«wëi]¾w^ãžÕaß;ØÜ‰¶+G‚-Ž· ˜à½:469£vÈŠ)8ʆš)u ½)0yÊ=˜)@߆ßL¸"øÙÔûð\õw¦ô†¨ß$lñÄF@­ÍÓ‘ýÝFîPf:²uMçÏ`ܵþãB?ï°U"_i4rÁ‚¢^ wßz™ÿ´­gèû&¾¾.¾N¾n..—ÿ³  (§<„Æàu{@¤SÁ*[ „¥Â8ÁEˆl½ì¥æim÷øD©(ûQ»¹é; †6’FçúHoLo%ù´ñÛîhŸK ºZ-ÙÄy´q­qA@Üõ[Œú£¯ßĸr@­—g÷ß ÷Ynr‡}€—«i•¦5¿ øãª7æ2œD×§6»JÏŒw+‹Ä÷^{ Ý« ¿å¾Ïã}n:]¹È˜8`1—— ——Û?;Dhÿ)Û4šðé>(&øÛôõ‚; ß=ÂQe¡ 4ïôò—ç_¹ý0ùçÊÓ%óêÆ®ªã1¡ö®Æs‚÷¸ k•"ø¹Å×ñŸ€`»×ß›mä>¶ÃVL£Œ÷ŽÇ¹n³g6uÞ0Œ†^¦ý†Í!Ž Cv'<+Ÿ¦«r:aŠ4–0\>CèH× oJëé½Çò Â#r[\ ýo²æ©:®q.ÎC¿Çó,ÎËñrÐ,˜§·{TGX©®ªîüØ¥‚¶ÆÇÃ>aq˜[ׂ౪N¿Sðžê½¥Cê_XUçÕì‚"÷9“ærárârãrärý—U€ÿ§©_y¨ÄËàŸÁC¬ók¬ SëÖõÅÑÜ—Þ‘‹\äKV]¯Iw½£‚޵fìí4%Ôµ§ óå Š`qº7=nv°ÀÛo#ý_ΌŒ$Áï2UbÅu*ö„ŠíªJ¬ía„½¹zßFï áö„v•XÖ¾i/!Œf×ñ?êw;ë¯3a­žú¾Í™ÝHxD‚•¢oÐTà<µ_8ï@Û56õ@Åõ¸Ñq†Ž;ŒÆÜ¤Åöž+@Ú7:×쪱·2ÚÞ¨^‡Iw‹ôù>‰‹\¸œ¸Ü¸¹\¹œÿ=À©½0Á†‚P«,ÓK®DM–®I»4Bx~÷ù¾ –·rh¥_]gs¯IcƒD ‚ 5M{÷ôƒ§uµÍÑ©0¡ñNÓ‚?À˜¬oãúˆ–ÚMÎP ¶LE”ÍQ{lÍ—„‰5„5û³,ó[ö«Z›޳ž Ì´u" ´ÿ¢É0Õ>pƒ)޵áëeÂæ¯hü ³™ÚI5sÙø‘„KÍ÷€[ë~šw„rs ]°ËAXW¼S³Û°Î¾+£À3TÇ7­@”òª‚þ¦Î¯ª-ú9Çl$ÿÿî2\¬õ3¬ûµçã6@b¦† c’Az'íF»w¼ä¨«=2ÒR2/…oâ’ƒ\Ž\®\Î\îÿK @Û¹/ÕmK`L¶5è0=„vŠd´_lÊ ÷Z=GgX ëÛ/òž[—€%-ñ›ƒÆw¶ÃÀçÜË›OEâõ¾n;A§=•8Ût5r¿&ÁÍ,§’‰<³¢ 4½ò¦ß&Ö¬T‰µL&ÌK%´u$,c¡ û%Ë> ®Ÿb½ÍFxÖJm!Õ¶ƒ0É~€½·ˆ…g/Û:‚³0߼Юªù”Ú&_UA_F„y§¦WŒÃQa]­a1Jªm*„n…ëLÃ7nRómHi`bç‡@ïý€„æ?‚­o7<÷ ¼Wì’ê½qŽŽË•Ë™Ëóð—à¯Çzÿ0xý)LÄà\OøT†Ü9 eÉ´g­ÝêŒrÑl”7{OìõÂu]}çÆpG¿7 ­Ýï €åîî!+Ðt³0ËÄMSNô¨t1@²4¨<–Ú‡_ÏF”ê²ç/fX:2B¦1¢®ª«Ä l£Tâí3‹_¨†[=–”*LQbÙõ"H¢ú© DØ_õ6+á k_Ât ­CÎ2o!t7½G¨z„©kE`ŒôêÕ+T7¹+*…ªa(í&ÇÕÝ]ÄÆÊt+ü¥v€.#ëOÙ ¦ùŒéõ¢´qÁi·W£\¸œ¹Ü9œ—ÿðûd´[°åPÐÓZ°P°›Z/^?, 4[†®e@|2$Í,;D×¥ÊVTN°:Áõý[NN('÷²nwwsÃB–ç®ÆZô=êNmÏå¦û߯È×%/=ßœ¾†ËóÀyá<ý<ÀÓ›X$Ó*a.R@üuV•Ì|ö‹›ÇÛíô›õ3ÜLÁ>ŽS}Ÿ\‡©üæ7$Xol0Ööz ¸K»[BÉP¥n6NQS©EŒÓ$ T'®<‹Î\ìTÂX$„ˆžNΈñ`í@žÕs ·ª„z!D”UU”|ëjv_}^±:3ìÈ®×eIàBÖßT¦ÛY›õÇCˆ}»ßÍK'ŽÍ'‹r‡æDt9Zº¥„‹£‰¢e=ÉÁKû-à8F÷Èéœö–†ÊLà ¯ñ@оo…lŠ£ß ì}”¾™ûgÁºÒöÜóßnÇyà¼pžþa  ()L£ú­@©hr»a±}«ù¦ÉPË{Uv×[CBœmî>pWÿ›ïž€AXRu>à ®hnD…šqÚ]†•4ä`Çýèò´ÞN?zjZécJ*4 ±d±ÑJ ÅèLÁƒY˜'¼bkÎЙeùÜ‚G0û–©„Ê9V+µó¬W˜"ü@×Ó,€äa¶2γýXû>Sf„Ù¬ÿrÖ uÛçAHmRduÞ àéšãÓ  ý™„’ Ê'Nó­±7ÉåÇ"€(0ý ×AŽôÊÑi¤ï{XùôégNÍ<2¼7 ‚-Ö”êºHçóÂyâ¼ý<@·™áÑy0H{¡»tbÏÞW–‚·\ƒâcŒãŒ³œgº5<’jm Ïv[ç‡üDo"â—iÇëõ4T#ÇŽ„ÁÎHä,Írc!}BÑM¯ÖÙÐ2xŒV΂ ¿L`.ÒC)' ŽUÊÉ23™å>–ó­<;ïË,V #¤Ý#r¾zݲšÝÿ‘µ÷3\¥¾¯Þ—ó-êýÃÖ{ìýbfÑ8nS„#0^'ÊòËm‚=ˆaûW2qÞ,””&ˆkÑð=¢¶•a(ÉåWg’n°“y„ås©P­C»Ö~âææ÷6x€žµjÀ#d»lq[.ººÕŠá¼pž8oÿpø#Öä ´¿w o”Ùrª8¯í3Åñ¸s'·k0íoÝúlB5Þ5NFׯIVÊ‘ ÍíkÒøn~„‚~m\rä–ŒˆmªEš/fY ÿeç£%*Ю‹¤äX¬¤ ^·Î·N©n rŒßrì¤@7O›¶ào›~»ýàk$ìЂ3åh‹…ê ‰–:ˆÊ‹#C ázkÊI¢ ï%Yšb?·oßßýî™Ö?-Æ¿eKV Œ;ŲÀÔ½ ƒˆÎGQ+9,”0Ï#ç³pØRD˜Aux΂Ï)©Ò5TðÝI>^MHnum0h6xÕpÔØð[·D¬ßpé Ûg{íšgï>S8/œ'ÎÛ_TÚç'šÛpìß #”/Á ÓÊnkœ:u½®ÿD»ÏxÎ{ŽÃ$çzî7pX§ºN«qÂÚ]â té°pÔü|%B,eÉÙ"Ì‚åpª UHë+¢¥KRY: êðk-«¨u`ŠÁ-îß3W>[ò¬nzokߣ°;¸xñJ_Ü6FåÅÃWaú©%›  Sðþ‹‹/æ’”›ï¡e‚àW!ÊY ³!PÛŒíXE6¾WP¶ôÎîÉ?n‘v ‹ÉóºÔûê¨òAØ\°µÃQ?šÇRË|¶­Î꫘_á¡„%µ[ ÏT=£mo×ò$RÈ1˜»Gȇª{²RdœŠ›Qð€Í)wzS„usœâ< “C—EîctÃ{{Ï©ð*¹éœÕõ:ç‰óÆyü àÙxr¶½\Ji¸ •w_“åök½ãè˜d‡;`éÃàîSÇùÎ%H¼þm%œ’¹Ú¶…Ë]_ ”Ü*ÉÅK3Ê–xŠkŠÐ%ÇŠ-žShšé~ƒŠdD9Á\›¹dG†#˜g¨C˜–Yy¤b>ÿÕå¯F\€³š­Lóë‰_íÙ§—•N‘>ÇJß±vÇç_íG–-[ŒjéÖ<™eçoF±ÒîRËdz® Ç?úÞqÇ+uñpÇvÅŽÕøö¶«Øohhâ–pô?µ¡yŒ+OPKÆ0?²p+!(V¦M™b¿@”VvCÅâbÚC¬-p@ƒ°¯-¤ùˆ¡¥ ²%·ò À©åë§€)  H¥ÃJ%mÛq¾S_`f¥áC ¥Ö^¦Nub’9Oœ7Îã_Ps¥ÂB¾Å3kkC{©0¸îÙEŒ2 [ëà`¨1Þ…'Þ1ÜÑODW¦.[‰וAWhŸñò$`²ýÄ \xŠuäcª¿YûåŽ&\»DZ/*T]úëF꩜9’ Бm§,l}öjÝ«Wåp:WâRxìdÇç—ßz8øóúòçÏý¡<½¨è),ûwÃíyë‘y]ͼ?†óquVÚM©¹„£H3k@l¿=ÿuv~ô³¡xös$þË;Øï¹[?ôÁqJ®z• ó8ôÊUü’`^ˆëÍ—™B±y×aIç|Âtµ¤m?UT=­8?C›muîi4ëÈüh:™h^ð6zHû¨’$×%X(Ó,ÓÜ´ÖU<¨ #ÜnsVkÿ²»ù#Â(D²üB†wÿp½%^·-´•`2g_(žÆ~îì»Wû-ìS2DZ ·Õ…q1ϨŠÊ‰Ì*á±hù´žÞÜóP;QuõÒõWƒHNŸt#¹Ü°=uëýÕèI-ûsÝ7Ø;lL»”µ¤\(Ç´™JÉUÊX°óå+õ&À«Új½ät¢:²ükã¡PÎçñÏ*/øÄ€æTãvB‡¤¢¿å{“Ñ  K×ùèÚh'`ÅJ÷“ö<ŦV”¥gËiTÀ‰T¡lhñÇ€ ÖŸþJØ17=ƒÍùI<ÅþÐ’æ$uUU„±d‘$HFø †f&ÀKì¶I>½4ºgX2uËu]SK$52}`§^ÍóÄ%ˆî~s1GQ’™ËOªªŽWc Œ®©Q=O >÷Ž’Š ˜Uë(Ò}ÉŸú½­VjzÚg :öu)Åq}zxÞÒ}Çæ‰p¬ùgÕSÕ¼`×L‘ïªógžg§é-:Ô_Ö'¹ôê ˜fmžWFU…O°R˜ew)ÞŠr]Ëc(gˆ5=§íc¥õ*àr]°v0 8滿ÚnÜ–Îyãå,(ÄJ”§¼„ä- ¬þäêЉr^Ró•“È£D7ÅSxª¨iˆ¼(ïJku™µœ7Î#çõO(À]}u#`®©k#F‹ ð[[åì¯)ðŠ×6„cœõÇWöú¨¡òu³™Ð&ôX^bq¤m`y†›°@3]—h»õXnII]»Ÿ-»3—_Ä15[AsY[ÅÖvgž@6A=Áó¬>伟á±sjôÅ•EðÜàø>Ž.-h×qê…AµH(y€£ o3tàבÕì=o=í3Åuô{íâÞ"8ÿO›‘·åg¸¡o{i2›Ç{l^ï3|›ÍŸ{˜žL!¾dã|H®\fß/(fUN--E$'w ÷?d‚üêàu)‘îW¨ï)ˆFœ'ì#ZPñ7†œü9X«óŠç¼q9¯BZ¿Ç4å0VïìÝEÐãG‚’¨)4…OÀIzÀÝVJ†ôˆ\y¹ý€º§‚¬–N÷Ó~¿ÌºZuõ–+ª,SHyd™G@öÑ¢«UÁåq¬éÉæÇ,¿1l;&è&(ѵh`øËíKÓ•MÞÙ˜Yýûéªb™Ôþr!eH0õËñw~=÷=kaý¼¢~{Mh‹ã”H §qÅ¢¦Ì²'¶„÷‰pR$ÃÖsƒÍ;€%C0ҺݬÈ`òè‹§%€ÆÜ­?ÑxäZ¬ög³©ò¶÷#Lgb.&Da޶kîœ7Î#òúç<i&n)€¤O/¨*µÓÌVi2z P‡¸AI!Í=#íͲ^ZG•0E\¬îß雽l%Ã>ƒÎÁ`âdù¤ Y éÃq°p'È+æØnÀ“Ç,3Ý´‚Y\†ÙýÍ„9U!ˆPwRnò¥ö™jv>o á«"CÈû[É&D}Ç¡~ÚºUtSÛU>l\z^*ÃyÐûïRû0"ÝçŠt‘0œÖuÖÕ˜äq,œê`:¬l> ÊäX{©J´4€BF>+•’­—€x*qÅûà+¢)4ÏÒzqÞ8œ×¿»,yHè#Ï øN¾ð˜ˆÏ‘Ýä|"p©’O¥Ö tA˜ÿ+q¤±ÊRÂ|öUnºìOµó¥â@*?'…ˆ¢+SeÒð ǘ8ü™ Ï09 “Å2¢®W·ýѯLÕvÕB™=Út[í‰%Âð9S=뇷MˆRëÿºÉÝçï…¨ÄWïùƒâ–±y°ùKäú“dY­Àº¿¦Ü(ÁNË bòIÒ5’o9E{$ø¦¦(ä!ò•@4,{Ž:yä,ø7–~QP)(‚'çí/”‚kz¡CÇÀ•%-%ÂÓ$7•h |-(•PPÆi>¡4ßÐaNœ @?M¸ºH—¶ÊòÙdLŸ.{ÞVnIþÃC9L.0Èngt,"\Ï>ýJd‡,‰Ö„Q¬ëΦÌ\‹RÈè †F–lcí kTW^ÉÛ ›°íÜ%Öï]µ_fÁ–¦l>}T´ÐNž0Ç>’߃> I€<¾è«âíøÀ›7X ß3Q?ßC±àƒò!Âc„]è ÀÏn ËNÑ  ©(9]‡r”—’Bl%4<%K¹!$¾n(¬'8oœGÎëŸP€f6Œ+ê§ÇÒuøÈR³Q¾-¼-·¬¬”S”,(M*S¾ä¦i…šGçÔ¯y5™dùI€(€$–>ê„ëðÜ›Ë:ZªñÇQõ¶££ZŸ”™l)Bšå<Í›èø@’(„„ƒ€è0Ij@(öW‘)ˆ‡}šŠ6v˜òP-ñÚN°sü+ d8‚2õeØ‘]ïû7Ïï'<þô)G¤q8vV‘Í#B¬O¨V+Ѳ£Á²13‘>G‰®Z°ÝއBõ>®Ý×9pñ›ï>¤Ü)ŽÉ)I£ÒK ‘ ´‹úKSà¨í Üu-Ê=O:,ÄàfBp4`+5¨¬ä¼q9¯B®Kª¦ˆ üít˜«‡\Ö¤—ý4¿JýJȲ¥„£À„˜ìsM0CŽF(Áò»‘+# WÀЂ7(šJºˆ#öÙ×e $Oó;Lï×<È­ñw÷ÙàÔ«»ï©bà§Çöè‘ ›3|´¯†y cE‘¹˜µ†át†ýÿH(³ôrñ$ÃSüù¿U†¸Bñþ™HU<¥SmmW˜çÖ©û†¡‚ô¸0ffå-XÇ7wãL‹:ÍÐÚ=zt´ê«0D‚4ªâR…p@´üp4%SˆÖÆ«»)’c´ø‹æ[Âú:”sx‚FÀ¿|FÉ&ƒ$´OÐ9Ù>º3óÆyä¼þÛÀoÌx ɸ—¬.мtt´¼ý…xL~ g-OKƒä4L/ä1Dl¦8SwA=ßÖ*1âZ­NM^´OQƒÁx!alá)(-P!@A]ü´Ž#Šô°”;ý@X¨å¸õ>ƶ‡~6Ì !¡“}h{Üw~j¿Í6 ª dúIF"H€*¡‚#+'–˜ooÀ’5—¿ynWæQÖ0EÃû¡ŸêÍ5w¤t¬@l€¿CˆNqßô„´6_À$²f®å²Û²yŸÍÓ}&ï6 S’`¤¸¸nJƒ)w`íhmC5„’ÜRäÃÚÖxäúŽ/ŽÑëqo!=ÒvCÛ–º"ö‰ògÒÇÖb‡q‰5èöœ7Îã_8v©žî®䨿HÙ±‡pðiwë"¥¿}eî)é´”+CjŠà&§ …K‡ô›Ð¢¥04Nø¡~-`)- B Ôî&ED ,9ˆ)†"|Cçà§*ÀoŒ: Á´7z¯š ý;÷sÚf,‚,ºCñ×HøòMâ°€ÒFß·þtlÂ[³6¢à¿ª“•‚ÉÝ“˜'çÑB¥Ñ¢«Ô…'ûK1ù|öæ³="xŒ¬ò£{±¢™”½h-nïÚEö…®=5y]®vÕ/æÉ‡ažÍ:á asÛ§Å‚G˜:Â"6 Ë}TùDU(rí €^ã58?æ ΂|v“­¦hß!õë¬ß£ž‚\ñTp€M#’30ºK§å\0”<ù²-,÷ç‰óÆyü p6+¨ÃÒ p¼ÜœáÙÂH³»Æf™sÙ"ŽàϬEQì*uÅ$]#‚ˆ3 ÒÔGÇ(b^Ó?W+UÚÙäÚ<è41“\?U1v–V(BŽlí‹’ÄE~ þ±èPîtLZÇ>ç@Ð_KKˆ™º‰–y $£W^¸ÙøG“?¼ƒ§ˆqšÁ?á§WÖvþ¼DðöïCöT Ml9ãVþfy%ºcahö·IYXØI*ŸÑëo·ò}ÕnxoMç.øÃA)qG°ŸÔŠ”T3¬ëLÚ‰möNøTu5º\§0H­¢¢"{…AnrÒåðáIA¯Ë»,~ê¥þš¡¾cººñù´î#lÝ7QdžšjE‡@’^!žrxŸÎÆzc¶/…jƒQîÒüDLê < ;ï¯él©wÙÂyâ¼qÿnÐh&÷U³FÃ:n «3$erÇrËóó­/¤dñ¶é{ñšx -Í^*Δ£0¢J¯ X±ËG; §ZBDKcô=aIºïÔ:5³Y@A’ëãŠðÄŽÉ¥µîs~wážwÿůÛODA!e[Ç ÷¥0³vß·žDô•— Î6iŒ’ x@ ÃM¡–µæ*%£­ÃÊÚoÝ/øbåñfåùøËŸœ¸sOð'c¿ž¿°`ò²ß£1XÒ6ÜžƒŸWJþJ,`gy Æxç©R"ŽÓîh«Yá ÚÏî|^ÁeAØã»ããNà)Ü\Å;‘P?õ‚ÊIOëR2q½,àzcg‘GLÒ}KÉ_޾`²½>Éí¦8Àr @†ßñÝ~ ·•öS w˜¯e¾è#®7}/O1¾iYr~#ç‰óÆyüo|lƒ› Ã@=F¾=>÷Ý¿öß½÷º¥ô¾Ùvù²8ÊnØ+´°Ù°@+Îø¯ö®4,Ê#ùϣ܇ … ‚›¨Q¢F£‰xǨY£IÔ(¨\õJ4^ 90*ë"âñ÷@@ñDˆ€È=Ã1ÌÍ 3ÃlU ýa¿íóü“'»çË÷í·úWÕÕÝÕÕï𶢚;Žv ¢ÓóÑv@hðYú%ÁöNC(&…[(`YH„X {J(fÍÖåÔPÊÔ!y&`vkB4oäÈ}yÐcOOiŸžâŒmæÞ¤Ÿa(P¯¾²¤öí£Êš!S~ׄÚï2´$®7 B‚MÉ–Qø»)Ñá”Ú=ÃÙŒŠïH@WT´.âŸ\æý´ëdnÆíŸ¯ƒ M‘ÌÈñ}Ã6?ˆÇ0âø5Í…†·R64¸]j_5¶‹Ù©ø0k»y (6·’ÿ+©è²Í·tàl™° u ´—eh÷)n’›d84~d|‚I£¦eí\(W˜3ÚN<|ÈôÂôÄôö¤…g— ýrã,à¸Ûo{lvƒE•èK]/Á^Ý+[õ~F¡Q£o”Ê1 Ö¸Û˜ùñä (Nå0‚Ñöéd݆.)Ôes,>p§!\±ŽÁ@¥Žê¨&âæƒGH§9†£Á€å:]IÆç$^‡ '÷Ṇà\`I›àÌÆoD, .?¯-Lï «ˆkycÎz‚+/<ÿËOCar6óèò}0‡Y»öpÊë7™Ïîø<ÓÑÙ!§`HÝXc¹ 9<)3xlV-Ù¹* O1÷ýÉãú¹s8­’Ì9bF¯‹(¥íYó ÊæÝ 0.p È I–ˆ{"èáHñé´¾ŸÏ÷§ò›ûtH}D—2âé#{/ê@{¢in•ŒçLŽÆõ˜ÚfÐþÏ1è+¹Æ ýxm~Žvè•­L/LOLoÿoàr·C†£É2\N8œ|vWÔm¹K’åÊc‰ô^{¼vtn¸ñU{ N¾Œ»ô³1&n 6Î5L±êûõÖM—Þ”ù²Á¡€Žp>íú!B¢m)p¥>°²{JKHÚhôDßì‚@‹`ˆ¬`SÜv×­ø8ôìÁWfA¿n|/ä™<ÉÓÈÅà‰†Âûä@ý}~èxR„/¡RºnÆËÞ†—ÛO†È÷]<‚CWÛËWvØs&eü‡\Mr=§Íß©ÇSîÊO=Õê xn¤øDÁZÚ+qµ¥Í!³¼ë:ЍF;dÒ¦ÚJçÑÔq.áë'ÍwŒ1k<¤Ÿ ýðvûcŒdJÒÚiÒsÃAñ¨¦¦'¦·ßðl Ï ‰xwãÈãï®ú uñ‚d]ÂùCªPƒ»~’̾Ý[ÿP;”>§ÙމL°õq—,½Õ±ŠÐ×½Ű:ûRàÈÛ~8*”3_HRÆ‘r¡@ì~À»€ :=Ã4úý9kñE¤=³N Xe–áarÐÐp ç<CuÊ¿ Mã«ùŸf+k³|)cîô¤òm÷ÏàuÚ€âmtY_ëGY¹Ñª©´™“L!Þù°æ‰±")|~G6h (~uîr¢<Õ(·% ÛrC»f«WIñÁöËHñrgg«‡pëCõ pJgÆÉ)Þ¿Ù©èã¨`2Ä,êá5(Å!²èg(ÊI{!›¢îs[[ZÖ)ìnÓæÙH§Ú=}æ¶~OôFy5®.Xƒe¾"£­Tµ ¹îŒTªOÓOÓ«Ì{ê•úÕÝ)ãéé…ééw|?ÀÌ`¤‡›ÍñÛ%>×{@¿õ³OwÌ2¶¥&×NÕĪ–ç,4,Õ/Ñzr†w4?J7`zµn–’‹™f'[ÜÆuá*ݧÓéØioÅ“aŒòÜAù¸…“‡prÜDÄM¡¡Vv¶BZFÌ ƒðåûáÙ|$2•K I#ᬊZHc5@ô Ùè9#±ÞÎrv] Üà @õÒòžS Á›††rŒL°$ †àó@NO:Úu™ä†È§ã>Û?s›FÏqöü„º”Û[ߺváÏb.°Eï óÄ÷%&ª­†¿n[ $Šš1šïTÕ9 í>uœm¬HMe¼3=0½üÎ/ˆ`ž€úŠ g™]oCáhûÎñ…EÝ‹<ÝüýmCÜ»ª£4»Ëººjc•…`Á·”SÏ‚¨‡µ-UÉê%èK"ìïÖ sUx'{Çš¹‘Þ4i´Xz A@žû=@ØqÞD¿ßµß HÏÉCplbWZæ 4¤QüµÖÌWS~ŠBÏ’Åæ¼bÂl~x'¾OXÍ«#|F×EÁ÷éVOž ”¿–¯+é9àÊmcIŽU ¢ÒÎ*×ç¿“ÜÇÜùÔŽÖIV漃ñWþžËè{$¶Û’fŠ|E¼”`Þ¿¡Yµy2<Ô-ÂÀ‘è{u²z`Y­”×®«>r'p¢ïàùãééåw5€5„HOkluæL|<“ôÊvåó†Šò ªî?ÎhŠVßTÿµ~«!^ó¥¨×·:ש Á·4îÍï€èaëæ8,Šq[ ¸@pª×Gô ß)V¢|ŽÒdŠóÖ!"6Áã+rr ·\krj!œê°›0½ëAìÁÜÏ…ãɳ¸¿£ž^h{‘“mÓÏŠ‚û Y9]WC×]¶(„qh` àY¬^<ÎÎ[à°Œpµ“QžCrZFyþDrZÞºmõp$÷þ=ßÑ€1‚m½æQy¶Óâ[P.Àûj¾äSàåmà¥0^ý…>äVyÛÓ÷ã=’Dµ6èQ¸ÿp_MMÌuú¹£ynÎÎÖrƒémE- ©ü ”ãu|~˜_þÎ+öÿ ¿¶¯ˆ¬ ø^Q˜Ô)—0ÇfÞÏqáíÇcÜùxçÆ'ê“ÍåÔÎèr<±×$Ý]qðœzŒ ¸ZÚâ¤(¯L-óW(Z÷¤2ÞŒWÆóÜ‹"i¢1h¶OÈ g ÷á&éÀØÞ°# Ò„Ló æˆ.ûV·i=Ô;oßh¶o¹ó¸]³DuK~¦#Y7^ýzò]S|‘8ÉŽ”¶¾^3D怫“%˜Xxu®JÀ6Þ€9ÂþW‹„KQáì _PÂÒþï’á ë?€t½¿¢Í¸ ó€[lföÿ”p!•Óõ/á:D[@|aÕÃí²8'mµÂˆ·#°\ø ÌõóHï(—e…É„r_kfÊ =†GÒee2¦+mºYT¸C¶¡ ^óµê°ü\Gr‘cÓgò¯·Wk>V•ï¼Éxb¼1¯Œç?ÌþýI☛de6Ýñ¨eÈ Húncص±êÛܰ¶ßÎ|ð¥x‚Œ{ñãfUËy¦:\÷MKU-,£´± q…‰@X’ØæÉ  ¾ùö [¡Ši˜…oá34ëq¬·t¬.¢ž:Íu5y„û^s‹lgùú*»,ö/¬íRGøv`)Ê ˜ÄË»B9ý~®Ãûvú×ãw¡µžý‚o½–âÃïÏ¡e¥ðg\# ˜ôilW.h€ûô¿Hv½€!Ϲ+ ù7Šràû–ª:0Ôæä–Ø–êðüÍ¢¥I?Vá´Múv&ã…ñÄxc<2^ÿkÞÎ,•Ë ê€ UéchГ ¾àèeóFæ†BãrsÝ'›>Û‘¿¦)©åÓ]ÞÏëîɆÖ(ÃZ'JL¦¹ºŸ¥»_]"mÄ3žØÆÕªòN¡Äy fƒA²´D *cp×дQw½sã2ÛÖQ}&oªõEyËæ\¶óBä¦;ÈZŽC9®÷áupÚaÞ×Q`xŒ¹æ#ºÓx¦Ñ4WSû¤ôo%:C'¾ÿ C—_ç~ÿ>ȧz ߤÐÅ+ºµ7ËMsŸ}(+k+,Ì?ÕX.ì²w9ûšÆíÎ`<0^OŒ7Æãýÿp¹+øòó*cÆ|`   =,TËš~C¦ð8âã½[z›=Ûºo¾u²:K²(içs£ø„T^&”Ï•wošh\ª‹•_?z_|º ß^“{phõ¨ìç@¼m-/G Šy[´ýAwœ]7<¹ˆË«fCñ4À¿I3JÄ@q»tniá²R!+,oîŠ×éÿÒñTõÌ]ËoÃÓǵn9®ôœ•Ùxþ·5'r…ï×Å%fÀ3Rû 0¤–ò®MÞÆ¥Ïvм$Ê„·ª«¼%‚¤-çÌ×tF þ @ íÄÚÍx`¼0žþGÿ1„¶™[·''ôÆ-çŸÜ…@·pèY ¢qö¸9C"a`ì¯÷säðW5®×龈»ñk^ß“nH Ë9[}A²9ÿeehãf[ùÅjÙÑËŽ½Z‰Ý«vPÄWbÁójP¦6=?0¯úóœ"ÀúªªLG@Qåò;w»UõÊðìh(€rbUGf/@qõÊ»'ðúºôü$À¯ÄÏ[¡~O©×+ ÄÞÈ÷âs_6.i.“È\õ‰dHþËëÙ¯IßM k Ñ'é‚ân°v°v±v²v3/Šÿ ú×!b„-–-Ãü^|»Ïæû£r@¿®x‚9Ô‘U.Hçp3×Ù1¨cKž*›ú+§¯KI;Zv¦ùlÒŽ Û sÓȬK¾µ{š=*ƒËƒº4ž“gŠDMï‹·-’­“Õ9›ç)J jª-“Õ³¥Çªë8ÇÔã¥iˆÊéÒÌš4Ëdy¼Ä«Î×0öí÷áähò“wÀ!,×a›”]aùý¢9…ßÿM¸Í~™ñÌZQÝMm¸öÖŠ¨§ª¦¯•5qž‘ÕcåÆmWÓž•“ìKH‘”|ßô(i™ÜâˆÆ±ÉË»#ž/·–_:Zê!IÝ—á\í/—n»úôRÓ0eVœgÝ­ë.‡ç$®±ç29˜\LN&7kkkçŸþ_Ãþ}ƒ-ÅåKĽE÷è)0ÒÞ ±q€±óÀ„«!7`,ŽÚ9æÈ÷™1mÖð¯ çùLŠŠ€©Ø…¹ïÏ|ò‡–¾#;û|ÂOöí)¦‹Cû†Af¡?CVήc÷±zX½ì9ì¹L&““ÉÍÚñæÛef!—;Hżº‡ã{x\ãÖ@Oóî¹¹Ç[Ï 3BÀD½ö/‡ÁÔlåØñ>3a¶nRü{ è¡ QŽs´°Î~Á•³ëØ}¬V/{{.“ƒÉõæŸCÿp‰¤üw˜TQ—;$ 2ogÍÆ@3Œ½ù€>\®7Q²rv»ÕÃê}óßÁo>o àÍççóOÚÙGᮑ"zTXtSoftwarexÚ+//×ËÌË.NN,HÕË/J6ØXSÊ\IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.630567 PyQt6-6.6.1/examples/quick/animation/basics/images/moon.png0000644000076500000240000000460114532151332022466 0ustar00philstaff‰PNG  IHDR@@`¹UsRGB®Îé pHYs¯¯^‘tIMEØ ÷|ÙbbKGDÿ‡Ì¿ IDAThÞíØiÈ¥çYðßýlg}Ï»Îd™LÈXë’Š&¡b µ5Ô˜‚´­RB,ÑJp "cÄ/m-‚„жJÕb©!iI-ÕBHq¥ fq23ÉÌdÞý¼gyv?Ì1RIÞ‰)~™ëá|y÷}ýŸëúßËÿÏÕ¸Wãjü?Gx=ƒÚ‹ãÂ×¼j_ßdá Õñ¹ä{ÿ²tzé°ˆ×ò·î¾oP¤eT©´ÚðõÐÄÏw>yí‹ïzë;·®ž¸±wÔHaâåIýÌΓO<¶ò¥;åjMxc´„*~bð‰ÛŽßwâ®F±T"/~µ\®qn>yô©ß{àñ0UD8TúèL÷W¿ãè/¿ù®aÔY +µA*– h5RqûôãÏøW¾b¦í %ùÜêC?û–û—}X+ÒÕjÑ‚9¤–¬Ùo¾üû7|øÏ&Åk3â5þoC“þú'û›¿¯'ô Ä*A%·df /W U)%Ö­šùü3û÷ýÆWºùkµ"¼zú*ý¹oÛûÔÍoi E6DØÔˆU"C$FR…B¢B+Ó©ýÝîöÿÚç³ù«C¯þõ?ÿ­'?{ë‰ÂHª§/¶o†F,ÒI¤Vd A£•K¤‘±¿ŸLïýØÃÙ<4—ϽJïã{ên<‘K4*A¹F­T*´"¦"Ú\¡5q ”yÓ üÎ/Ý.}5"D—gþS£‡>:¸%S˜£¶cÏL­F­R©¨ä¦ZSjcµ©ZãˆcËáãqLÜ^qÂAçC÷ôÞ—+%Z•J®V)Õ S*µcÿá»"{fÆæj¬ºîMdwxùJG—+ÿ'û…ƒPhD™DµH[«•¯p¾#«“«\°k,ÓU Z‘žcï{à{¥íU ìuùÉεsS¥È"¥\¹€Q+1rTlf&¶¯Q)Íͽ$•isµåØ]®—~ýÉõÙÝ[2±3Ô¶5j=AÐÈ”NÛVˆµ R¨4J•b­—uUb7Ýúà».WƒèR (³‡~¨³š+Å*Ï8k*Rk•AªKDžµkÉÈL¡R‰MT*s»¶Ìl«”"áÞiÿÒK>¹Tvúõ{'"‘XP9'²d®¯/QËuŘX64“Û•æ öOµ&æÖ% ge†ßýGÇ?8V®ñŸëÞ–‹OXl¼Û&¨õ¬èŠ$:*[ÎÈÕ‚LႳví;0›:cÐyüÝMÒ¦-ñco_ŽWˆ´"}±jÁíØÄc_õ¯^ð’ӥƆu=ìxÙ9[JÇJ{¢w^è\ª —¨À<ÞÖÓëJ%‚¡#ú*ûjC‚ÈX×ÐCKöåV¼lº˜²™8/£Ò½ùÅÁ¥üo„³Y~sc;zqÒÏìb]g•*±FkÅQ®±ÖHÐш Õ*ÁSnò„æØÉÑmçǤ^IÄjA‰¤ÆN‹œWj$2¹J#Yà_s­ã6ôtŒí#R#2tÁ²[õõÓ'޲ó$2_ðâdÛ¥u‰Z&Ôè+ì¨õ­kÍ $Z¥VûÊÙxÞº=œ]=ã¸ê·r«ö%‚X­§ÑQhìÊ­ÙPJ pVlY_ÐXSX±©ÖX1ÑHm™‰D†6³CîI“Í*­¾‰F¶8û#Ì\£#IÝ`*“jµR¹ ãZ«NyAåfs»Î¨4žuÔ²a~HוÍ~j¤5Qª$ AbÉu6%"ì*eú¶eZ©F°¦ÕKT"¥€ÌPíĶö0$l;¥RjÉÐšŽŽÑb²±Fdj¢U9«•Û“Im‰ÅV6 D­®VБšßyáptÊø¹Ò\íz=×¹Ñ1­Ì\&“Ê õôЩLMÍ}»6ôdzV u´ú®‘‰N=8dåÊ?ŒhÕ:–$ºRË:#ëúØTöͤ:ú¶D‹ ‡ ë‚S¶õõ,Y¶&Ö>{ÍôPõMªŽX*µbÍ–¹ ™©F*HÕ†– ô«Ì5ú6DÆrS±\‹}S_ÊÙÍ]/f_Íõ %¼`W°,53Ô‹¤†Ž[Fת]­ ÅXªQh hźjóê[¾ÊpÈ Isݤ÷ð¾\"Ñ×50רQª•A$¨•b™Æ¾!‹¥:ñ‚X•}AW-û›xNsèQ(îüóbó”-s‰ÌšÌH_*hĉHßÜ5úFA®ÕÓÓºÆ7H¥:Vô õ>±>94€@ý£§úŸÞ··`79êˆ AǪU™ÆßhÙšŽeC”º::&b‰ÊŠ‘#‘æÉ>ª¼´8H.- Òùí¿û…™™ªÔbC]/Z6övTF´j‘`¦’ &.(´‚ž¾ S[ʶóѵ]õ\JõO<ô#[ÆR3…ÆLå„uo6Õµ,Öš^´D4Z±x¡˜j­ è^\šŸýÀ_FE¸BaÒfùýŸ.>71SÈôÓͤ4j™ ]€(Ìäæ*Z%52µcvê–Gûš+TFúÛwï½òOçUvŒíitmè..à jÒ\!W*ÕZ­Vâ‚gmͺ?uçIU¸rq¨Þsúû?°srG¦–;ï‚ÒŽ™©ÜL¾Ð‡¥Bn¢T,®í0vÎ~žýÌ=.¹½&BwÿÛ?¼ýܦ™ÄÄܦ©=4¯¤Ÿ™˜š›«Äb#A)7ŸŒ~úžÏô¦¯Û¸è”ÙÓ_ýV¸ãF‰Ö’Ôšž®e Ä®b!ÙZ 5WŸ¹þþ»íÍþOÉE’^ÿÍõ³*1×—¢³ÐË×ÂEñ¾Ù¹ùÁ»þ=+^Û+;œKŸîê»ö~1½c-t±¾”^Ò"…Z‹Z+U>ÙÿØ»9¶¯:ŒiyhŸ°Nžýé;Ú÷§w ‡‰È52»"]Á®CuY9ûÃïùâõ»Iñú„ÿ홈7{_:~òŽämÉ-›Vûë!Tí~>>™?ÝùÛõ/¾óùáTù†;¥_c×Fu<Ï6»Ûƒá³½É¨ß¾ó¶IQÆyRDµúëæÿË:,žÿrÊÛ‹|½Wãj\+ÿxxs!&ÖIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.621218 PyQt6-6.6.1/examples/quick/animation/basics/images/shadow.png0000644000076500000240000000065114532151332023004 0ustar00philstaff‰PNG  IHDR,º´ÚsRGB®ÎébKGDÿ‡Ì¿ pHYs Ö ÖoyœtIMEÙ .(Å0X-IDAT(ÏU’ÍJB…¿síV"¥)E…DPí´ u¯Ñ ôж§iѶMËÊ]ôYa¥æMïiq¯Š3‹á sÎ0‡À³ÁM ÕEçÉ’Ñ’K,0GNYB‡ €˜?GtÕö7jÒ$v‡ïõÏ„_ Öâ3jv¸ªëx•-6U¦`Æ¡ÖD?ÁzãÑ÷º£áóús¢(€½ìà„#eœ (f`$'Š€Òj„SelÁ”5\§È§…ã‹~`­Oƒ'ÿލC,ã$m&3¶me“åèòÂSwâÄ ¨ìk׋*³áe­0=´#½b„&!áŠ1°æóøã³xÔb@ÂŒRæˆ¾ØØ6= 6m-.I¹Ã˜0"è´v^xeAÄ’Œ‚w>*­m ožèrÍ3¬­8zaekd8î1Vd¦À´j|š*Õ¸6Òý³Î5R¯AòêÊA^åM×Ìÿ¡Œ|H·FX$IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.622025 PyQt6-6.6.1/examples/quick/animation/basics/images/sun.png0000644000076500000240000001773114532151332022333 0ustar00philstaff‰PNG  IHDRDD8“²sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEØ'&V˜ŽYIDATxÚì™Ù“%ÇuÞ¿“KUݺ{ß{»§»gEc ‚LR2‹¢°A+¨ÊŽðÃŽð›ìгé?Á?ùÉ/v„e‡EÓrP¤ÄEÖBû2 0 fÁLOïË]êÖ’Ëqõ]f† hR „§û‹“]5QYù›ÌsNfáÿÛ§Ä~ï÷&úˆñŸø9vñ"hw„¿MÆ :ÒG®ÿÕ?ˆ˜A¯¿þ³¼½ =Aâ¯ÁÄß<ˆ€… ¶\T6߇XjÝ@t:ªUðß 8ßÓ|ý²¿Ë~ñ÷:„™ñ^ ÚXZ^ø_—z£-˜g÷ÿô·Dáe@Ÿb ÌÌŸ´ÇN€tE­ü6à5 æVFÙjÅC#ðµ' ö´ÆkŸ¾çJ¡¥VudðDŸb X/Õ‡æ?~.˜± ±Ý ŒT¨æÖè*f„ ÑP•®iä!ø E–5REÀò{ÿC¾ñ)²  sð_žåÔÿˆñ¿)õ?ÏŽ™Æ5|ó)DÔ‹Ú› 9$„a3ÂgßñÉ[Oj_U-ÁÉ 3ãôwwE|*€0OE„#+Ðu<4ŒÀ ̌ӌ‚üŒÂR,D‘iÕF˜„4ŒBÏ5܄ó-b[ÇKðYdü¤£ªÐ TÛ¬hÍ ÕÁ˜Û5£q!ýtÁK+ÀOž˜Nÿ,¬w8±ßÀÚR•ÿìñ„·!ð&¦„…µªûä9o¹F½É‡aÃRÚÆ*ÍP¶Uº rÒ~¯A  Ÿ*Q-׌(B—ªŒÿ3ˆÿÀoý¶DŠ€Å}Œ_y×^]c@ès·€=aÝ_hçÿáYB#_;ÐPû]ˆ•ÆÆ:D±[ÕAN"@v7„³‹áªpÔVà®Ï› lôÃv MYÜ"j-±¥e4B#h»hÐCV#ù§ ð 72mdÎÒ¹ÿvÂ7fºô >Š–÷á¯s©Í&ôâ›Î ï‚Ç»]\8í fÈÝ[±×tjqûtS ÀWë%$ÁN¬±Ç"©q›Ezœ)_‚w«DtÒ‡Jz@Ú“¹8aËki”´Ø¨5ÃEµ¯37¶!”7ÏÖ¸ôGÿ'àw~—ðµ“_ÿa×· B„ÿ§~º´?ÙX~ë€hf"€/ ¢Ãøï2Äo½ÐÁÖQ¾?äÕª»'¨è5Áƒ+l£6©÷r¼@ÒKòiÙö@Ö²·="QL”Õ äŒ< ¦rh@ÅêÑ5r$asKT‰ Ÿ<Ø#µKøg <±J¼¢×ÍùV{‰„4hŠŒßÁCá¸_) €ý¶‡8Ô`VÌÈð½UêÉ ~G¥È÷v|Ñ:'O®»øj&ë;ýêC>¯ )LÌšœÐ‡U@ž»$Ðd˜컥ˆC/Ô*¼ße6%<î“wuhß#Ë@Þ’•,NÔœu=_»‰ÞXôŸª¢‘fþÚò¢Wˆ”v;ivQé•z¬Ä0¥3ð¿2 üÚÓ„~“Íùë”O£þÜå¨(’ =6Êê{F >]E|+Ĉ©ñ1XÙäÖÍ‚kÛm‘Ä_`í˘URaŸ-ò,4cq"Orï¼k‰?Ë^„R¬+2ÊEae,u,öU "W'_l1x•|hØFÉ`ë VƒÀç1ËüXa^`Ü¡'8¿€JëfÒ”íãÕg ¿›’4öô_ È<•ޱݮ·ëj÷Š…Øz\ü¬¤Õ+ ÑÚÎ’~fëh´‘¶Z¢²ÁtB¤ñß56¨Þ'.ä“ÄöºÉq¬¿géaú¤= ÄÝfØyˆd¼@•FB„ð\À»ùpmxã’…Ü-3¨õÜNT7‹* †¯·A©áðˆ¸-ø˜bÁD©Màé4j£—\vdwkZÉ-ñ_ŸIøtP^Wx)}ã=0ß3óï1ú@€ ‚»}í¥Ñ€¸¾¥°T=㗮׬?ÉÑ2dªº¬’*a¢gAnñÖŽóòsýuZ<¼œŸÐÁ¹…êñ_áêã•@€ˆïê|ëYÂg#äï Yÿ‘³þë gèíz£ˆpô ²ËdªŠvà9ì‹´wÌU·ÿDˆ•z×|gë¢üƒÕsjµ‰j µU{ôüÿr3jÖ“ûD@€ÛQ9B‹* "€ü•^œÙ]ÐÀóÑÊìì=[(ÍÖvH'šDÑö6|v°Ÿt÷®Ž ÄKs_#Õ^¨(e&"áfPøC p)òªôðlƒ‹è¿wsaÍ|§ÖÐëäš{½EESA^êú…­ÕÝ·äµÓ{Þ[rÎçº:¸…ÏýÄ!AQ  ‰â~û!ÂÇç T­F¤ú$aø;_Fky!ƒ†ÞÕÏR4þuBê½¥ˆD^wœÖ÷nOŽ®Ÿi¬ýNX9ý m© $f Ĭw¢{ß„qgCäö8Uúl4²õó<¼ñ­ýÖis¾µ]&ç ó:Ð$®ˆUþŽÜ?uÈY­FR¬{·¹Ï¼]ÞCÓf‡õc(Hã¾FŸ¤þ€GÀ]ïQÈKöz!‹Å5fÛñ]¶ÁSðóS5iï\I-6k4ÏýÓ@/­‚äPyé=Hp$"º÷-øNÇìùŽw€·0!Ìî&—¿™VŽ%º'ÃWU9&¢KtØ[‡¯98ó¶;þö6-ªN N!†©C/„;C¿D–™ïS’›‘B‹ÏœB¨=v´ƒ [œuΡ²¾V»–ýé«ãGó«e™úä Rw›€Ø”IšÁ÷B¡nƒ bÀ—ƒá!Áój¡†Ú©¿W¼÷Gg‰rt×è1]çQ«ÅÞç"ZÿKwüjáëþ¤ yl+…´¡Á¿²:$Žá1Àú‚ºÛ§fÇÄfW¢Û\´žb½7Ú»š×Ó÷³åÚÉÏK½ØäHyAN`LÛO÷]2$ÌSL ‚ŸBa?y8EÐm#>v.^}ù¬®Ã7ÚCAyÄÍÜM{Ðz‰¢Íb7Ú ýV†¿¾ßìOs@£îcü/câ7§{¶ñÿ„_‡“ëÕM²Å>/n´¸¾Íi0ØÏßËžtE«'@j¯Ô$ @@šiüPP¥—3‰¹Ÿ·ç²·Û˜·Å‘ ÌAÁáò  ÃýwÒ³$©q}+ãzþšÐÍã,¶[iö üá£DQ (aT‚‘÷P?C¾Ü&ôÃKŸ'þqÅâýÂâÜ›W{¡6y W„HÞðarÂò¸¶wÉžP¹«ê“UȪ© ¢”IžÎUJŠùr™ÇûÆ¢Ùì ”òð΃ØìáÀÒAÔº[ƒ»¹Uß¹6|äD7R¿µ G/ ±»#‚Ü µó d„ MFJ\D.HšF“·Z»–èã€|mÝã|;G¶ÃPÇuˆþç¨n1Ûz‡2>Ã*irx@”»ñþ5×ÂnÑQu@¶$HçS~*uÔ&€Ä¸AbcêyîçÅ‚Á˜¶y¤”w“L%´ƒj)¨CPºé×’-uµ¶0x•BÛ÷ÌiŠlŠ;Ð ‘SVl< D¶êQT0’cúÒ·ìÏ!ÿ¶Ôsç™^ð5ŽjiëR±JÓHáÄ-\9Ü¢ñ¿ý'ª'Ah¯Hþñ) GŒööØWÓë"×#dú!vµ iÕ`|°™õdßudu€T ø> š ©&0 x6p1óÓl3¯Cx6CøÃ3d–óçÁu˜…-½cPú¢ÈR~ß=œòU –举Ë;½ y},.‚ìyèõ!dHøR¡Š~‘¨²*¶,®¿íé«÷Âü,m¾Ô¾é”é³ }*¡C™¦>ÖFWHºT’’Êv®§ŽwÝšL¢ˆ ¤ÛuE 1…Aä¦0•šû)˜;Fñ=ˇç@À .=Á˜.A¶ù¤”md• Yn…ÄrÙ)Ñø- ÓËžÕÉvr±ÇÀ>Œª¦}ðþ×× oüŒBô ó÷¿ê]LqÖ6"©šÞç¶v™¡W`Ò.©QÅÚ¡.¶‹fTd P@“À Àn •Yi.f3b’~ï¤[ú˜Úp7Dé™' à§Pˆ à7'ý“ø$b 2Æ»EÍí(­o‘¯Uœ©žb_í’«$`“ Ϭ= Ê/6 ó:ñ×áé«^}¤*Å7Ybb2þé÷¨o*B¤ &q@ì<àªÌêL6Ôg1öuj"ÂÆäi Å3ˆ;Uf0älVÌbÇÇað &0æÙ.»=#@Ñ,X;PˆðÓ(Rôd°Ž…Ǻ÷ΰ5¶²!´ á‘@øÈS&í,•0~ìïChv¬(<{Mþ\¨eHì‘!Sßõ¹}W@$°2O³ ™!@·‹.’G"Øo¸   ¢ YŠ&âyÚÃáÉ/À|×DŒð#€Ç H`ÖM¥K… }…­~€X1¼0 pQ>’,¶ 9ÉØ@9/þô/ÿÓÇÕé¢u`o¡, M)yZ©*WY ÁÉeïxäuu¢ EÀ Ƽ<§ù~…2Ì ` "5íšäí@‹yÁ:{†ÈÙlA°`šˆ;}‘¸«?ͶEžlÅ ömx}Ixy|¼É*ècÔðªr?Ë,-¿RÂøØ,C49±f¼ø»  hÐd0S1ÎwÀí¾˜§0Ø–bòRóÙ nD*²2a÷÷ЬŽqåÀÒ#‚Þ½ÌOÀ×?´dhz.Ïów·v"Á yo"# —ž$,tÔõã‘çb²ŒÏq)°/%¦œ£P: @,ïªÝÝ4­–bÒ³Wœ¦p0îàY?Þßn³ ¥ÕA|>ÂÖ¹0#Œ‰P «FöÌj®F6‡¿až~–΂?CxzI)M(…ˆ ïN’(ŽkJã kýÍ¢Á)€Ú7{ÁRŠÙ #€bM— 04Àâ®Xa6ÓëS–<»Žðfc*;óÃd„êJ0åÈÅ»Äê2ùÊ&¼JPecÅþXFöQ"žàXÁ¥c˜ÈÀ(ÜÙpº‰æý¿û  ŠoD:n¸Ð9Zb§V[ÍÈ ´P˜™Úªèï_'V “l2(ððÖJ±“³Š5sâ4B¨g…šœÍ"f;ÝÖCoCr`C—~\ꄛʹ —…—f±÷IŠˆ)xŒmÜ+á\„ц·òË+>]¦ôÐâð†Áonz¢Ÿ“v~Øh‘BVÕ6¬i5M<@0H¹±s”†œU*¢­FãÝz¾ìFyQ"t`SJÍE`/A¬'P€pƒOM—Žœ% {&0Ĭ@³ð¬žÆv4àÏ•yØ! ;ÁÍ0¬Ž1Žby€JòwBå4²ÆbuÜ>W9SÛÔŠ‡ø‹§ ów˜èç‡ìuú¢(R¡ xñR¢èa÷è`aÄ9¿Fúð~T«ðáÖƒá›Ã·Ìóªï•ˆ=H9øRBÐ3(¥ÀA©) žÑÑ,~@ÄÃÎ>TÉR<›Ã¾°à#[¶ìH*V ·iaãU7.P²ZÁàø¤F}ô2ž|yÛ2ª"« ê/w‘u+¤][gÌÇ-Ñó}ÎC¾¼H/ÆÚ­þ¤¦¬ìqÖèÒîrBIý¢CòªPI@B®ÂU“:¸‘çŸ:hæ·Ìa~‚b&Ò˜}vðÊ€ô$Kš Œ„sXú4¢ЬöÈf™Ä€½*E¥vÓ¸á‹>7 >wð#Ó'ºÑ•HU/!i¬ šå¾ýîwåP]ÁøAå“¥eúó¯œV ‡~éúžxàmkýÅÀyTrÛxåà^ Ì€1?ä9ŽÈèºØ?ÆØ:¶.’ÆU¸(Ù÷X¬ûˆl 'Ò ©ìÈÛÚ9!)¢ƒ×»…ÑîÛ¾-öL]$,¼ Òg ÍNÏÝôpÇcº)c ˆÊT €óR~æÌ3–µðÖÀg9|šs;âÇÅ>8êæñäèã8嬞PµùëÜì×èÄ[/Y¥^•/IÒíœìù½“,âl€Õ …^ú€üÂý}í6œºëã¶Jæzc‘ÔFòÆ*ãÖ韼|Ý 2¨GH¢Û†)n\f20õÏ6;f#_3ß]t_¦]_%éf¹+ä5Hƒ© Ì7xäÀ yñv–Al)S*› \¤ði7N¡ä¦l;˜=Fnƒ´÷på¥J —ÁÙ;<^Œ9¯Œ¼©W)oüµöß”Ï}û&500âï}U`TUâÆ3¤.œs8÷m×îîž!\Ê”„fvPêǸÇ~ô‚à°hxVM采nìÂwVÈ#fÝÿ€Ô`£w2ø<|8½6|äTÀÌ9€ÃÛ±‚YC²J1æ™›ƒÝl4„7¥Ïpã>\rPªŸðG0vi¢FÍ3­šf E&Hס1 xûÐ¥m+ãQܧ}QkóÁþ%T†cоé¸×ø®JküÆ%2Se©¬ݺ)…Qàåˆ TÿŠ})MãQa›'{§²«{B£ƒز²h&`¿ 8žd Š °ƒÔf¸ñ Æ!|^*Û+/íÀJþy7š,d…:¨Ÿª¾Þ^Æ›°ªÃùÒs0Ùu F·®90ª½5–ßZ÷ôÚ†íi*»ÖÖÍÑÖp¿ºhÑ/ò±{ž‚;'pö˜€p–Îýü O´52£Œ*å“%¿5${ÐÃÆÞÆ¡î¿k>À¶‚ld-‚Œ *¥¢DЩ$ÃÙžÞ•¿Ø&ðÅ>+¤û%ƒ²màŒâ¼Á^g­þV½£ßô™ù2ÌÒ)2ñ2È~Ëúü §ÞïG ‹îž§Ù® óÉ€ºÃEEc#jeÔhCô ¿¸ñ¿¡ µ–ôÙÙÓpñWH÷o@û'9:l ÜÙ8ªSF;îÑÝ+éãÜ7kQÅkÙd]@ÆDT‡k UÉbºÓu¼ƒó!|©ÉIfd™ÊdS¾Õ{0|5Ž:Ubµà} 2Lî§”v`«WIòË8O×ÞîÓ?ßa|Èøf-€´í,GKôËayZÂ=¼Æ…|ÎëÁyRâi®îõP¹uAŽ5³U'¾ã‘Ã]ùâîåÑ2m/ ½Tñ,¹DÒP³ÃgïÁ~Vl€O3²\:ÕU›‹§»Ã¸‘ýO’æ}Ø:8ë®ñ;zÇ$ÇïqÞ\†•Mn a¯àK?HégÓêüËyý)þêH¬8Þ{‡…~R´özï¾Ï}Ú£¼þdV!5¼>íŸðYqs\Œ>¸&—Ì;á’¢.‰•T !@D M˜8WzFÄj·²´Vi3Š£-Qá´n²>ü6`6)_]à¬~œDþÂÚˆ5œµWÅMöhSh7AÃüÚK}‘*ü‚¶ùrÛâ¤B¡è¿$ëÑ)Ô·aãÃ×ä~¾a‡§é`|“!c²•´nO¿/U«µh\SÝÖÚk¶p‘É};Mÿo5×Ö"Çq…¿S]Õ—™žÙÙ›´«E Ž‘{lA®ä!ÆÁà@ˆñcòOò˜7ç7Ä/“„ƒ%à€C0 ±"k£Ëj¥ÕÌŽvgvgzúZÝUu¼ ÈfaM`ýÁâœîê>NŸ¯Ë¤©\d–ÊGEŠƒP ¿K$•Ý‘¶Ã¶`¡ºàÃß:I/Rµª8œLLwPÅ#¶~L:»Ka/B-¢ÑCŠdë/˜j±+ïààaõ5„ÿüÁKĵ:Þ²}(³ì:k‚ª)&ù.ÌùÈ6™$Ïú,J!T÷¬òåöz³g©-òŧá°å6“è’L·–™…°.ìÀ© +ðõ=‘Å9; 2m ü=·pÎu Åog£f6ª^û<}€­ïãëßéÂ5­¦*KßS Á–øîÙœè­G8Ú½ý3‚ b‘WEhëI€¥~äâþ.,v ï[…(gdòDˆÅEøÆcw­éLm¬Ç.[ƒ®Â¶àÔu˜p‡9ØûÛ©›ìä-¸` Ö߆óGà`ò6aÂ]¸ ½zFÀþ{3ÍMo9kµj5Ts+<û´‡o±?ä÷E `¢>\´)†ŽÃ=á7ò&ŽXFNl”\æ^±·.0¼}UøûÈ»\ºLôÜåÖæ-ÊIþòŠÁâf…²~´£ÝÐSCßþ3ˆo Ù —ê†^=>Ëý¡—o ,x_Üðò6»/m+ºþLÁ‚nÚ5Àwa[d“ Š ëê‚jÉÂwGˆ-˜§ÄˆàÛ”UT1Ó.™`êB»Êy7TKƒM'üžãõ ñ\ºIðúŸ5ÿå›PüV§¦‹ï6üö „ïôå}ûî‘r¼ç:¡73Ÿªyë™.·‹¢Ùuï½Ié~á|7[k±›lŠ ÷$(Ý"ŽŸbð‰­W¸Ì)dJ’òáD‘E‚[$hv´,0‹œ[Ø¿EÕÒyô£ÎM>€m=÷_ºƒ‹ï”@ßÿ{Ãü‚‡7@˜^þ?vøÓÈpÿüšpa²¢ezÏ;;ÉèçÎBA·ȼ…^ÅÖKÁa ¨ Ùµ ä:#7CêçÄaå%‡#öÄ®\h4´ÌáµùÛ×dËÅ0”·’dˆ“-¬ì=Áû)€^¼méRʧB¦Ú´Ç±óËh!a«±,o|•‘»[°,)Ä .ÖP4!- a¤Æ+›‹®‚¡éš&`‡Æk&ðm#{K• ôÔ5&±6ØÖèãS§Ûe†ðÏäÒ“ÙÔ@šB+t7GD9‚Qy!=@¥èÙ>ÍÞ‡C~µ†(+,Èç’$Mg¿c’W?Çu0îÛÀ-0¢Â¡5½íVú˧QÈìa!Ii½ø¸*Œ|HÕ5L“¡V nÄ:·Ê £šX»R?ø¦Œ—ƒ×h †Q•\£TÖzó®ÌKÌ3»ìȯ¯{ó‡ŠÃÊɤÞy2:MBfpÎ+‘-"9\É‘M3úÑ;@'ÑH< ð¤Ð–¹Ø3Ǧ¦Ï×¥ci8ôò*ëU_ß×xÆ’±qIÒöã9!Ô„+S¯³G8-`žÛq_² :üáéc߯0_Û+?éò•×<~sY0Ÿ¼¿÷â»ç–]æ÷>‰-ͯOö‚€«@»ï‚yn§<ƒàþ‰±ÿ¼1ÿü?H¶ã¸Ue"þÄwìÏÞ dÒ©%Dëù Ó‰É^û±|È=ä½{ðO ë±%/× N®WæIÜ­,EE0'ÔBê¡Ï˜çö™ÄG‚Ì]HnÃrIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.726648 PyQt6-6.6.1/examples/quick/animation/basics/property-animation.qml0000644000076500000240000001013314532151332024114 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: window width: 320; height: 480 // Let's draw the sky... Rectangle { anchors { left: parent.left; top: parent.top; right: parent.right; bottom: parent.verticalCenter } gradient: Gradient { GradientStop { position: 0.0; color: "DeepSkyBlue" } GradientStop { position: 1.0; color: "LightSkyBlue" } } } // ...and the ground. Rectangle { anchors { left: parent.left; top: parent.verticalCenter; right: parent.right; bottom: parent.bottom } gradient: Gradient { GradientStop { position: 0.0; color: "ForestGreen" } GradientStop { position: 1.0; color: "DarkGreen" } } } // The shadow for the smiley face Image { anchors.horizontalCenter: parent.horizontalCenter y: smiley.minHeight + 58 source: "images/shadow.png" // The scale property depends on the y position of the smiley face. scale: smiley.y * 0.5 / (smiley.minHeight - smiley.maxHeight) } Image { id: smiley property int maxHeight: window.height / 3 property int minHeight: 2 * window.height / 3 anchors.horizontalCenter: parent.horizontalCenter y: minHeight source: "images/face-smile.png" //! [0] // Animate the y property. Setting loops to Animation.Infinite makes the // animation repeat indefinitely, otherwise it would only run once. SequentialAnimation on y { loops: Animation.Infinite // Move from minHeight to maxHeight in 300ms, using the OutExpo easing function NumberAnimation { from: smiley.minHeight; to: smiley.maxHeight easing.type: Easing.OutExpo; duration: 300 } // Then move back to minHeight in 1 second, using the OutBounce easing function NumberAnimation { from: smiley.maxHeight; to: smiley.minHeight easing.type: Easing.OutBounce; duration: 1000 } // Then pause for 500ms PauseAnimation { duration: 500 } } //! [0] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4082897 PyQt6-6.6.1/examples/quick/animation/behaviors/0000755000076500000240000000000014532160402020256 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625828 PyQt6-6.6.1/examples/quick/animation/behaviors/SideRect.qml0000644000076500000240000000454114532151332022501 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: myRect property string text width: 75; height: 50 radius: 6 color: "#646464" border.width: 4; border.color: "white" MouseArea { anchors.fill: parent hoverEnabled: true onEntered: { focusRect.x = myRect.x; focusRect.y = myRect.y; focusRect.text = myRect.text; } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623847 PyQt6-6.6.1/examples/quick/animation/behaviors/behavior-example.qml0000644000076500000240000001053414532151332024226 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { width: 320; height: 480 color: "#343434" Rectangle { anchors.centerIn: parent width: 200; height: 200 radius: 30 color: "transparent" border.width: 4; border.color: "white" SideRect { id: leftRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.left } text: "Left" } SideRect { id: rightRect anchors { verticalCenter: parent.verticalCenter; horizontalCenter: parent.right } text: "Right" } SideRect { id: topRect anchors { verticalCenter: parent.top; horizontalCenter: parent.horizontalCenter } text: "Top" } SideRect { id: bottomRect anchors { verticalCenter: parent.bottom; horizontalCenter: parent.horizontalCenter } text: "Bottom" } Rectangle { id: focusRect property string text x: 62; y: 75; width: 75; height: 50 radius: 6 border.width: 4; border.color: "white" color: "firebrick" // Set an 'elastic' behavior on the focusRect's x property. Behavior on x { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] // Set an 'elastic' behavior on the focusRect's y property. Behavior on y { NumberAnimation { easing.type: Easing.OutElastic; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 } } //! [0] Text { id: focusText text: focusRect.text anchors.centerIn: parent color: "white" font.pixelSize: 16; font.bold: true // Set a behavior on the focusText's x property: // Set the opacity to 0, set the new text value, then set the opacity back to 1. Behavior on text { SequentialAnimation { NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 } NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 } } } } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626675 PyQt6-6.6.1/examples/quick/animation/behaviors/tvtennis.qml0000644000076500000240000001043014532151332022643 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: page width: 320; height: 480; color: "Black" // Make a ball to bounce Rectangle { id: ball // Add a property for the target y coordinate property variant direction : "right" x: 20; width: 20; height: 20; z: 1 color: "Lime" // Move the ball to the right and back to the left repeatedly SequentialAnimation on x { loops: Animation.Infinite NumberAnimation { to: page.width - 40; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "left" } NumberAnimation { to: 20; duration: 2000 } PropertyAction { target: ball; property: "direction"; value: "right" } } // Make y move with a velocity of 200 Behavior on y { SpringAnimation{ velocity: 200; } } Component.onCompleted: y = page.height-10; // start the ball motion // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { if (y <= 0) { y = page.height - 20; } else if (y >= page.height - 20) { y = 0; } } } // Place bats to the left and right of the view, following the y // coordinates of the ball. Rectangle { id: leftBat color: "Lime" x: 2; width: 20; height: 90 // ![0] y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } // ![0] } Rectangle { id: rightBat color: "Lime" x: page.width - 22; width: 20; height: 90 y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; Behavior on y { SpringAnimation{ velocity: 300 } } } // The rest, to make it look realistic, if neither ever scores... Rectangle { color: "Lime"; x: page.width/2-80; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2-70; y: 10; width: 20; height: 40 } Rectangle { color: "Lime"; x: page.width/2+40; y: 0; width: 40; height: 60 } Rectangle { color: "Black"; x: page.width/2+50; y: 10; width: 20; height: 40 } Repeater { model: page.height / 20 Rectangle { color: "Lime"; x: page.width/2-5; y: index * 20; width: 10; height: 10 } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625616 PyQt6-6.6.1/examples/quick/animation/behaviors/wigglytext.qml0000644000076500000240000000777214532151332023217 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: container property string text: "Drag me!" property bool animated: true width: 320; height: 480; color: "#474747"; focus: true Keys.onPressed: { if (event.key == Qt.Key_Delete || event.key == Qt.Key_Backspace) container.remove() else if (event.text != "") { container.append(event.text) } } function append(text) { container.animated = false var lastLetter = container.children[container.children.length - 1] var newLetter = letterComponent.createObject(container) newLetter.text = text newLetter.follow = lastLetter container.animated = true } function remove() { if (container.children.length) container.children[container.children.length - 1].destroy() } function doLayout() { var follow = null for (var i = 0; i < container.text.length; ++i) { var newLetter = letterComponent.createObject(container) newLetter.text = container.text[i] newLetter.follow = follow follow = newLetter } } Component { id: letterComponent Text { id: letter property variant follow //! [0] x: follow ? follow.x + follow.width : container.width / 6 y: follow ? follow.y : container.height / 2 //! [0] font.pixelSize: 40; font.bold: true color: "#999999"; styleColor: "#222222"; style: Text.Raised MouseArea { anchors.fill: parent drag.target: letter; drag.axis: Drag.XAndYAxis onPressed: letter.color = "#dddddd" onReleased: letter.color = "#999999" } //! [1] Behavior on x { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } Behavior on y { enabled: container.animated; SpringAnimation { spring: 3; damping: 0.3; mass: 1.0 } } //! [1] } } Component.onCompleted: doLayout() } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4051878 PyQt6-6.6.1/examples/quick/animation/easing/0000755000076500000240000000000014532160402017542 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.628391 PyQt6-6.6.1/examples/quick/animation/easing/easing.qml0000644000076500000240000002031614532151332021527 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320; height: 480; color: "#232323" property var easingCurve: [ 0.2, 0.2, 0.13, 0.65, 0.2, 0.8, 0.624, 0.98, 0.93, 0.95, 1, 1 ] ListModel { id: easingTypes ListElement { name: "Easing.Linear"; type: Easing.Linear; ballColor: "DarkRed" } ListElement { name: "Easing.InQuad"; type: Easing.InQuad; ballColor: "IndianRed" } ListElement { name: "Easing.OutQuad"; type: Easing.OutQuad; ballColor: "Salmon" } ListElement { name: "Easing.InOutQuad"; type: Easing.InOutQuad; ballColor: "Tomato" } ListElement { name: "Easing.OutInQuad"; type: Easing.OutInQuad; ballColor: "DarkOrange" } ListElement { name: "Easing.InCubic"; type: Easing.InCubic; ballColor: "Gold" } ListElement { name: "Easing.OutCubic"; type: Easing.OutCubic; ballColor: "Yellow" } ListElement { name: "Easing.InOutCubic"; type: Easing.InOutCubic; ballColor: "PeachPuff" } ListElement { name: "Easing.OutInCubic"; type: Easing.OutInCubic; ballColor: "Thistle" } ListElement { name: "Easing.InQuart"; type: Easing.InQuart; ballColor: "Orchid" } ListElement { name: "Easing.OutQuart"; type: Easing.OutQuart; ballColor: "Purple" } ListElement { name: "Easing.InOutQuart"; type: Easing.InOutQuart; ballColor: "SlateBlue" } ListElement { name: "Easing.OutInQuart"; type: Easing.OutInQuart; ballColor: "Chartreuse" } ListElement { name: "Easing.InQuint"; type: Easing.InQuint; ballColor: "LimeGreen" } ListElement { name: "Easing.OutQuint"; type: Easing.OutQuint; ballColor: "SeaGreen" } ListElement { name: "Easing.InOutQuint"; type: Easing.InOutQuint; ballColor: "DarkGreen" } ListElement { name: "Easing.OutInQuint"; type: Easing.OutInQuint; ballColor: "Olive" } ListElement { name: "Easing.InSine"; type: Easing.InSine; ballColor: "DarkSeaGreen" } ListElement { name: "Easing.OutSine"; type: Easing.OutSine; ballColor: "Teal" } ListElement { name: "Easing.InOutSine"; type: Easing.InOutSine; ballColor: "Turquoise" } ListElement { name: "Easing.OutInSine"; type: Easing.OutInSine; ballColor: "SteelBlue" } ListElement { name: "Easing.InExpo"; type: Easing.InExpo; ballColor: "SkyBlue" } ListElement { name: "Easing.OutExpo"; type: Easing.OutExpo; ballColor: "RoyalBlue" } ListElement { name: "Easing.InOutExpo"; type: Easing.InOutExpo; ballColor: "MediumBlue" } ListElement { name: "Easing.OutInExpo"; type: Easing.OutInExpo; ballColor: "MidnightBlue" } ListElement { name: "Easing.InCirc"; type: Easing.InCirc; ballColor: "CornSilk" } ListElement { name: "Easing.OutCirc"; type: Easing.OutCirc; ballColor: "Bisque" } ListElement { name: "Easing.InOutCirc"; type: Easing.InOutCirc; ballColor: "RosyBrown" } ListElement { name: "Easing.OutInCirc"; type: Easing.OutInCirc; ballColor: "SandyBrown" } ListElement { name: "Easing.InElastic"; type: Easing.InElastic; ballColor: "DarkGoldenRod" } ListElement { name: "Easing.OutElastic"; type: Easing.OutElastic; ballColor: "Chocolate" } ListElement { name: "Easing.InOutElastic"; type: Easing.InOutElastic; ballColor: "SaddleBrown" } ListElement { name: "Easing.OutInElastic"; type: Easing.OutInElastic; ballColor: "Brown" } ListElement { name: "Easing.InBack"; type: Easing.InBack; ballColor: "Maroon" } ListElement { name: "Easing.OutBack"; type: Easing.OutBack; ballColor: "LavenderBlush" } ListElement { name: "Easing.InOutBack"; type: Easing.InOutBack; ballColor: "MistyRose" } ListElement { name: "Easing.OutInBack"; type: Easing.OutInBack; ballColor: "Gainsboro" } ListElement { name: "Easing.OutBounce"; type: Easing.OutBounce; ballColor: "Silver" } ListElement { name: "Easing.InBounce"; type: Easing.InBounce; ballColor: "DimGray" } ListElement { name: "Easing.InOutBounce"; type: Easing.InOutBounce; ballColor: "SlateGray" } ListElement { name: "Easing.OutInBounce"; type: Easing.OutInBounce; ballColor: "DarkSlateGray" } ListElement { name: "Easing.Bezier"; type: Easing.Bezier; ballColor: "Chartreuse"; } } Component { id: delegate Item { height: 56; width: window.width Text { text: name; anchors.centerIn: parent; color: "White" } Rectangle { id: slot1; color: "#121212"; x: 30; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: slot2; color: "#121212"; x: window.width - 76; height: 46; width: 46 border.color: "#343434"; border.width: 1; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter } Rectangle { id: rect; x: 30; color: "#454545" border.color: "White"; border.width: 2 height: 46; width: 46; radius: 12; antialiasing: true anchors.verticalCenter: parent.verticalCenter MouseArea { onClicked: if (rect.state == '') rect.state = "right"; else rect.state = '' anchors.fill: parent anchors.margins: -5 // Make MouseArea bigger than the rectangle, itself } states : State { name: "right" PropertyChanges { target: rect; x: window.width - 76; color: ballColor } } transitions: Transition { NumberAnimation { properties: "x"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } ColorAnimation { properties: "color"; easing.type: type; easing.bezierCurve: getBezierCurve(name); duration: 1000 } } } } } Flickable { anchors.fill: parent contentHeight: layout.height Column { id: layout Repeater { model: easingTypes; delegate: delegate } } } function getBezierCurve(name) { if (name === "Easing.Bezier") return easingCurve; return []; } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.406176 PyQt6-6.6.1/examples/quick/animation/pathanimation/0000755000076500000240000000000014532160402021130 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.630779 PyQt6-6.6.1/examples/quick/animation/pathanimation/pathanimation.qml0000644000076500000240000000651714532151332024512 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = pathAnim.path context.stroke() } } SequentialAnimation { running: true loops: -1 PauseAnimation { duration: 1000 } //! [0] PathAnimation { id: pathAnim duration: 2000 easing.type: Easing.InQuad target: box orientation: PathAnimation.RightFirst anchorPoint: Qt.point(box.width/2, box.height/2) path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } } //! [0] } Rectangle { id: box x: 25; y: 25 width: 50; height: 50 border.width: 1 antialiasing: true Text { anchors.centerIn: parent text: "Box" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4056904 PyQt6-6.6.1/examples/quick/animation/pathinterpolator/0000755000076500000240000000000014532160402021673 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.637475 PyQt6-6.6.1/examples/quick/animation/pathinterpolator/pathinterpolator.qml0000644000076500000240000000701414532151332026011 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: window width: 320 height: 480 Canvas { id: canvas anchors.fill: parent antialiasing: true onPaint: { var context = canvas.getContext("2d") context.clearRect(0, 0, width, height) context.strokeStyle = "black" context.path = motionPath.path context.stroke() } } //! [0] PathInterpolator { id: motionPath path: Path { startX: 50; startY: 50 PathCubic { x: window.width - 50 y: window.height - 50 control1X: x; control1Y: 50 control2X: 50; control2Y: y } onChanged: canvas.requestPaint() } SequentialAnimation on progress { running: true loops: -1 PauseAnimation { duration: 1000 } NumberAnimation { id: progressAnim running: false from: 0; to: 1 duration: 2000 easing.type: Easing.InQuad } } } //! [0] Rectangle { id: box width: 50; height: 50 border.width: 1 antialiasing: true //bind our attributes to follow the path as progress changes x: motionPath.x y: motionPath.y rotation: motionPath.angle transform: Translate { x: -box.width/2; y: -box.height/2 } Text { anchors.centerIn: parent text: "Box" } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4095745 PyQt6-6.6.1/examples/quick/animation/states/0000755000076500000240000000000014532160402017577 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633843 PyQt6-6.6.1/examples/quick/animation/states/qt-logo.png0000644000076500000240000001203514532151332021672 0ustar00philstaff‰PNG  IHDR.7s`xdäIDATxœbüÿÿ?Ãß™™™˜ÿ>xñXféžU ‡/ž¶y÷é­˜¤ò?~Q¹¿üÌ?øþýÿÇÊÅÆ÷Fœ[ö–$¯Ò5)>¥ËÒ¼J×ÄxdïpŠ>ccfÿÅ€ügøÏôïÿ?&†ÿ Œ Œÿÿ30Bi ÿÿbüû÷/3ÓßY›¦TÏmí}óæ /Û{/aFYEN†Œ ÿ™þýÿÇðçßo†ÿÿ00002°0±2p²ð|ãcz&Ì%u_œGî¦Âu ^…›¢\R÷8Åž±³püÀnõÆÿÿ1Ã9$zÿÿbüÿÿ?äµ³sò»ó&sò ÿcgcûï,Ä !ÃÆøíë?FFˆ9Œp ™þ320üg```øÿÿ?Ó¿ÿÿüÿñп? ÿþ3°0²2°³pÿåg~!Ì%y_ŒGâu …ë¢<2w…9%žp°r}Åç¡ÿpKÿ1bñÿÿl’½ Â0F¿/Ò!ƒÆAÅ]p쨻Ïâkºvp(¨ƒàÖ±ˆ $÷:ˆ[^à6·Ëv:ž…ê⇲«KS¦x¿fgL þ ©Äd¢D$‰H¡*0,0.¬¸‘ïü$¬ïí?÷ÿÿ"Ùáÿÿ10pp23|ûú‡áôÉÇ R\ê ^&> ƪ† ¢" ŒŒ _~}`xöéõ×'®¾:Áðõ÷'nV>œŽgdd`€•JLŒL ÿÿÿgøOÀÿÿ"ÉáÿÿC}çÆ†£ûÞ2T„T0…g0°³³2ü‡TépµZb ®*Ñ Ï??`Xsu"Ãé';¸Øø0‹M†_?ÿ1°°°002ýeøöû   +;^Çÿÿ":;þÿÇÀÀÎÁÄpãòW†k_0Ì.œÎP—ËÀÂÊÄð÷ß_†ÿÿÿÁ+›?3üþ)Ò$yår-úBtò¾ýúÌÀ-þÿg``ecdxõìÃ’Y<ÄKº¼62ÔØ/f0”tdøñç\-6ÿÿŒÔ!Â@@Ñ?3»u S‚D5X$¦ áxnĸ i I1]¶ƒB’p‚ÿÔÿ þ<î™ËùÊid»nèSBE15DÓ€I X¤ îdÏ4‹›ùŽ®¢b¸;ªÂ­}½¤®VŒâ”j¼dRÎx øýäÿÿ":Ä™î~Π©¬ËP•ËÀÀÀÀÀÊÂÂÀÈÈÈðÿ?$™Üx{’¡fC:ƒOeÃÚC[ !ƹí<EAm†Ÿ¾10313üÿÇÈðôñm%UQi¨cþQÿÿ„Ô+Â@FáóߦLë@ P, IuÉX Š-`p$xb ¶w°ÂŽørþ†§ âéM<Þ™M*B^д ’ðäHâpݳØL‰¶åÖÝ1ž—,×+LÂÝñÔ’gQ¯¢ö™x=ÄåüdØ|í4Ãd˜ ýàòÿÿ"âÿ!eõ+„Äü­=˜¡-0Xdn¾1‹áßÿ¿ ì  ¦æ’ rš" U3Ú¾ÿ‚„.#´6”t`áWf`býÅðòÅg†ß/ß3Xé˜ ,c``øõ÷;Ã×ߟ¾ÿùÊðë/öV1ÿÿ"èp&f†ŸßîßûÈ`©cÄ %, åÿ ÿ™>üxÍðàýU.†?ÿ~3üþó‡ASGááãû .…„æÿ ÿýe`gádàýdİbþC†dÓF†Í3v0¸˜8@RÈ)j3˜É¸3hˆ˜0Hò(`uÿÿÂ[þÿÏÀÀÂÂÈðþÝ_†ïï0XéšBñï3¤¼edddxùå!×_ØY¸ Éâïa16æ §®cð4s…çMQ3†wúTÅ´4åÕþþû u8$-e½,d<™ž¾Ïа/ÃmÿÿÂâÿ˜˜Þ¿ýÍÀð™A_E‹ÞƒDí›oÏþüûÍÀÈÀÈÀÈI«œÜL Ì\, 7߃ëad‚èÓSÑdàâãgøó÷n‹ T@ÿÿ"˜T>¼ÿÅÀÄÎÉ  !ƒ†ÌèO?ÞBš¡Pþ¿ ¬¬ Üܬ Ïß¼„XÄÈ×'%,Á ©&Åpñþ%†§¯ŸÃCþüýËðûÏ?»Ðÿÿ"\sþg`øüé7/7ƒ(¿0Ô3ÐNTɷߟQ<ÂÀÉ, ï?‚ëù INvN†ˆ(-†ÔÎdi†ÃS72üÿÿŸáÃ?fFf†í72캽‚A„[’©ï€ÿÿ|•M € DŸùCˆP÷¿['ˆ6-41ýZ¸Šöó†˜pÕwžb!ø…àç,ß‘ñ,DzSÎiâ•(µ`µ†0)…·+ÖŒzôÔNö¼‘ä ¶ŠÓóËóÿÿ„—Á €0 C_·®›ÅÿÿW­ždï!yäLjd³AW[j"c:" Z8âäºc‚ó¶“™|{zMŠTš ¬:]}™ùÿÿ"ªÿû÷? 33²ùpiõ¡»’±ÿþû u *`ebƒ&liÒ:üÿÿÎZÿÿ"²­)öqöç°—ŒP)l²LŒÄ !àÿÿ"ÊáLLŒ ÿýcø‡¥IÊÀÀ€½Z†:˜‘{¹@iÏÿÿ"ª8da…¤Õß~Ã… XY±¶ÿýýÏÀÌÄÄÀ„e€æ÷¿ŸÐ¢Ž¼‘8ÿÿ"⌠ìì, ß~|gøñ {»•™Ãþÿ þþc`eee`aFv8$üüù-"Éÿÿ"Xs2220psCú–¿~‚ ÿ‡;Ž“•›2¨‰pÚÿ ¿ýeàd瀅P X>ùúë#$‰‘érÿÿ"*óò±2|ÿñáåû×ÿG8‡M€)ô!ÿùó//Dª‰‘‘áÏ¿ß Ÿ~¾c`fd!Ø·ÄÿÿÂïp¨øÙþüd¸÷ì!Ôᨖ pˆ¢t³þüT\b‚B žÌŸ~¾ƒ8œ‰…Ü ÿÿ"âÿýgàda``a`¸xç*š¿ a.Â%ÅÀÆÂ )) í÷Ÿ?þ3üüö‡A^BîYXè¾üòˆáë¯ ÌŒÌd§qÿÿÂëpFF†¿þ3ðð11ð s2œ¼zŽ^A.Ê-à À.ÂðÚOdbf`øüáïÿ ºÊšPÓ-¾{ï.3üþû šÆ‘ŽHNLŒL ¬,, ÌÌØË{ÿÿ"\åÿc``eg`PPâg8{ã2ãW¡]6Hûúßÿ œ¬< JB: ¿þýd`d`b`bbdxúè;+'/ƒ®Ä"¤nصW'X É¥<‡ú‡Máëï /ß½ax÷ñ#Ö"ÿÿ"ª8ü÷÷?ƒš/Ãço6ÛÉÀÀÀ€QÛ+†0üûû—™íÃÏoL §Ž>`uòfP“Qaø÷ï##$$Ÿ|ºÃpûíEV.V6&†Ïß¾000@jfXmj%ïÅ`-’À ü'€!Uwƒ(4$†<ÿÿ"ªúýë?ƒ„ ƒ„Ãôõ‹~ýùÅÀÂÌÌðŸá?|äI[Ì‚!L/ŸáÓ§ï [Ö=d°Õsa˜˜× 5ƒ‘áÄ£ûï­bøúë 3ƒ˜'ÃÃOž¿{ pHó² 3¹¶0´%´18é:3À‡çšÿÿ"®­ÂÀÀðŸñƒ­“ÃÕ[¦¬›ÍÀÀÀÀðûϸÃþÿÿÏà§‘ÁPg·†aMùF†½×0ˆð‹@ÆVþ203²0Ü{w™áЃõ Ül| ¿~ýfP×ágøøñÃÊ=› öüƒå´!8,9ÿÿ"jŽ‘‘á÷Ïÿ 2, Öî2 •SÛL5lu-~ÿùÍÀÄÄÄÀÌÄÄðÿÿ?U)UU)H)I¿ÿ˜Y>ý|Ç0çl-Ãß¿ØY8~ÿþÇ $ÆÌà(Ëбª›A\X”!ÄÞŸ™‘áÿÿ Ÿ}`xøá:é';Þ|{ÆÀÊ̆ÒRÿÿbäñûÏÈÈÀðëçYEv·@Üûÿÿ30pp03œ:ò–áæù¿ Kkf3xY:BÊuhþ÷ÿÃÿÿ’6žøäãm†é§Êž~ºËÀÉÊüüÿŸ‰áË—_ /_~eP“QfcøñçÃûï/>þxÏüèÿÿ"Éá0Ë89YÞÿÌpñôGoýP†dÏx%MVhoæào¿?3¬½:™áðƒ þý‚Œ ØÂ†¬YX˜~üúÁðûÏÈŒ+´äaÄ:Ê ÿÿ"y‚‘‘áû·? 2rÜ ~áÒ w71%X1´.îc````øûaÉŸ¿Þ_ËÀÀÀÀÀÅʋՌLQŸ?ÿ203°1p°r3°³p203B' °Mÿÿÿ"kò„‘‰áׯ ?¾ýePSg”àeØzl33<Éð± 3¸©Æ0|øñŠáãÏ·Ð4=*Pz=xÛ0ÿþÿÿ"kFnÑ?†ÿŒÔ5νÊpéÞ=%È€´v ÔÊfáSexñéñ'›>üx…³ýN„­ÿÿýÿÃÈÏ.ú ÿÿ¢lºŠ‘á÷ïÿ 꺼 þc˜±q!ß¿à 1FV+9† ,^6†¿ÿþ0àÌ@#ã¿ß2¨ íÿÿ¢Èጌ ÿgà`dpt—e˜¹v1Ãö{ØXÙàÿÏðŸˆù¢Àÿÿ ÿ™˜™Ø~;(Ïÿÿ¢x‚‘‰áç Ú†< ö> i“2flšÏðáóg†ÿÿm”o¿?3üùÿçÈÓÿ322ýcbdþÃÂÄúûý÷WŒ ¡SÔEŽÿÿ"¹8Ä`eü·ï¿ž<ýÀ ) Å ()ÇÀÎÆÎðý÷g†?ÞAG¼0Ó6dbº‚ºØà?Ã?æÿ þþûýï÷ß_L¶òA+RM[bX˜Xþÿÿ";sbXÎÈÀðãû_ff51†_¿¿1Üÿx >µ fùY ÁoãþgøÇü÷ß_Æ¿ÿ~3þý÷‡áï¿¿ Œ ~,+ßqN±Ç¢\2·ÍdÜ—šËz¬‚ ´ÿgÿÿb¬zøO• pHóú?ÃÏþ32²üçdeƒ/×ø÷ÿ/óßÿûÍøç߆ÿ k^Ø ü*À!ÿX”[æ¶$¯ÂuI^Å«’¼ 7E¸¤ðq½fbdþÇÀÀÀðÿÿ?&h¬ÿÿbùóçÛ?†ßL$%?ˆSÿ322 …àæÿÿ0þþû‹ñïŸßðdafgàfåû*Æ!ÿX”[úÄJW%xnŠrKÝGv :€,ÈùÏÀÄÈ Ïåÿÿb~òôísYvfî¿ÿÿ30cw<ã¤Å.(i‚3Yaä}"Ê-s[‚Wắâ5 …›"ÜÒ÷ù9„^áràÿÿÿ˜ÿÃcº‘ñ?–![ÿÿbÙÓ¿Á.¤.nÓÅ+—tY˜¥þBS™þ31"Výýÿ‡ñÏ_È †¿ÿ¡!ÈÄÎÀÍÆ÷]”C‚<Š×$y¯IðÊßå–¹ÏÏ.ôЉ ·ÿAÌ@²„‘é/±‘ÿÿbüÿÿ?Ãëo„½J¢7?þvÙ28Fîß×oß™þ3@2Y™Ø¸Xy? pˆ=á–¾#Á£pC’Wáš8üMQn©üìÂxˆ-‰t^ÿÿbüó÷33óßWïÞófÏNÞ.¡ýVO–Oý¬¯Âui>•KR¼Š×ĸeïpоdfbÆÞâùÿùÃ?hÖi©Ùx‚ÿÿ<¦䨞IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623165 PyQt6-6.6.1/examples/quick/animation/states/states.qml0000644000076500000240000000744414532151332021630 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: page width: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // ![0] // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } // ![0] ] } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.623222 PyQt6-6.6.1/examples/quick/animation/states/transitions.qml0000644000076500000240000001150414532151332022672 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 /* This is exactly the same as states.qml, except that we have appended a set of transitions to apply animations when the item changes between each state. */ Rectangle { id: page width: 640; height: 480 color: "#343434" Image { id: userIcon x: topLeftRect.x; y: topLeftRect.y source: "qt-logo.png" } Rectangle { id: topLeftRect anchors { left: parent.left; top: parent.top; leftMargin: 10; topMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to the default state, returning the image to // its initial position MouseArea { anchors.fill: parent; onClicked: page.state = '' } } Rectangle { id: middleRightRect anchors { right: parent.right; verticalCenter: parent.verticalCenter; rightMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'middleRight' MouseArea { anchors.fill: parent; onClicked: page.state = 'middleRight' } } Rectangle { id: bottomLeftRect anchors { left: parent.left; bottom: parent.bottom; leftMargin: 10; bottomMargin: 20 } width: 46; height: 54 color: "Transparent"; border.color: "Gray"; radius: 6 // Clicking in here sets the state to 'bottomLeft' MouseArea { anchors.fill: parent; onClicked: page.state = 'bottomLeft' } } states: [ // In state 'middleRight', move the image to middleRightRect State { name: "middleRight" PropertyChanges { target: userIcon; x: middleRightRect.x; y: middleRightRect.y } }, // In state 'bottomLeft', move the image to bottomLeftRect State { name: "bottomLeft" PropertyChanges { target: userIcon; x: bottomLeftRect.x; y: bottomLeftRect.y } } ] // ![0] // Transitions define how the properties change when the item moves between each state transitions: [ // When transitioning to 'middleRight' move x,y over a duration of 1 second, // with OutBounce easing function. Transition { from: "*"; to: "middleRight" NumberAnimation { properties: "x,y"; easing.type: Easing.OutBounce; duration: 1000 } }, // When transitioning to 'bottomLeft' move x,y over a duration of 2 seconds, // with InOutQuad easing function. Transition { from: "*"; to: "bottomLeft" NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad; duration: 2000 } }, // For any other state changes move x,y linearly over duration of 200ms. Transition { NumberAnimation { properties: "x,y"; duration: 200 } } // ![0] ] } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4270408 PyQt6-6.6.1/examples/quick/canvas/0000755000076500000240000000000014532160402015570 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4267125 PyQt6-6.6.1/examples/quick/canvas/bezierCurve/0000755000076500000240000000000014532160402020055 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.62349 PyQt6-6.6.1/examples/quick/canvas/bezierCurve/bezierCurve.qml0000644000076500000240000001117014532151332023057 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Bezier Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"red" property string fillStyle:"red" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); //! [0] ctx.beginPath(); ctx.moveTo(75,40); ctx.bezierCurveTo(75,37,70,25,50,25); ctx.bezierCurveTo(20,25,20,62.5,20,62.5); ctx.bezierCurveTo(20,80,40,102,75,120); ctx.bezierCurveTo(110,102,130,80,130,62.5); ctx.bezierCurveTo(130,62.5,130,25,100,25); ctx.bezierCurveTo(85,25,75,37,75,40); ctx.closePath(); //! [0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.727472 PyQt6-6.6.1/examples/quick/canvas/canvas.py0000644000076500000240000000455414532151332017427 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os import sys from PyQt6.QtCore import QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtQuick import QQuickView os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) view = QQuickView() view.engine().quit.connect(app.quit) view.setSource(QUrl.fromLocalFile('canvas.qml')) view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627549 PyQt6-6.6.1/examples/quick/canvas/canvas.qml0000644000076500000240000000577514532151332017576 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../shared" as Examples Item { height: 480 width: 320 Examples.LauncherList { id: ll anchors.fill: parent Component.onCompleted: { addExample("Red heart", "Draws a red heart with bezier curves", Qt.resolvedUrl("bezierCurve/bezierCurve.qml")); addExample("Talk bubble", "Draws a talk bubble with quadratic curves", Qt.resolvedUrl("quadraticCurveTo/quadraticCurveTo.qml")); addExample("Squircle", "Draws a smooth squircle with simple lines", Qt.resolvedUrl("squircle/squircle.qml")); addExample("Rounded rectangle", "Draws a rounded rectangle with lines and arcs", Qt.resolvedUrl("roundedrect/roundedrect.qml")); addExample("Smile face", "Draws a smile face with complex paths", Qt.resolvedUrl("smile/smile.qml")); addExample("Clip", "Shows the canvas clip feature", Qt.resolvedUrl("clip/clip.qml")); addExample("Tiger", "Draw a tiger with a collection of SVG paths", Qt.resolvedUrl("tiger/tiger.qml")); } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.423868 PyQt6-6.6.1/examples/quick/canvas/clip/0000755000076500000240000000000014532160402016517 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.62581 PyQt6-6.6.1/examples/quick/canvas/clip/clip.qml0000644000076500000240000001165514532151332020173 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Makes squircle icon with clip"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:2 property int nSize:nCtrl.value property real radius:rCtrl.value property bool fill:true property bool stroke:false property real px:xCtrl.value property real py:yCtrl.value property real alpha:alphaCtrl.value property string imagefile:"../contents/qt-logo.png" antialiasing: true Component.onCompleted:loadImage(canvas.imagefile); onAlphaChanged:requestPaint(); onRadiusChanged:requestPaint(); onLineWidthChanged:requestPaint(); onNSizeChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onPxChanged:requestPaint(); onPyChanged:requestPaint(); onImageLoaded : requestPaint(); onPaint: squcirle(); function squcirle() { var ctx = canvas.getContext("2d"); var N = canvas.nSize; var R = canvas.radius; N=Math.abs(N); var M=N; if (N>100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } //! [0] ctx.clip(); ctx.drawImage(canvas.imagefile, 0, 0); //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4189198 PyQt6-6.6.1/examples/quick/canvas/contents/0000755000076500000240000000000014532160402017425 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.628776 PyQt6-6.6.1/examples/quick/canvas/contents/Button.qml0000644000076500000240000000572214532151332021423 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: container signal clicked property string text width: buttonText.width + 28 height: buttonText.height + 14 BorderImage { id: buttonImage source: "images/toolbutton.sci" width: container.width - 10 height: container.height } BorderImage { id: pressed opacity: 0 source: "images/toolbutton.sci" width: container.width - 10 height: container.height } MouseArea { id: mouseRegion anchors.fill: buttonImage onClicked: { container.clicked(); } } Text { id: buttonText color: "white" anchors.centerIn: buttonImage font.bold: true font.pointSize: 15 text: container.text style: Text.Raised styleColor: "black" } states: [ State { name: "Pressed" when: mouseRegion.pressed == true PropertyChanges { target: pressed; opacity: 1 } } ] } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626779 PyQt6-6.6.1/examples/quick/canvas/contents/ScrollBar.qml0000644000076500000240000000647714532151332022043 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Mobility Components. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: scrollBar // The properties that define the scrollbar's state. // position and pageSize are in the range 0.0 - 1.0. They are relative to the // height of the page, i.e. a pageSize of 0.5 means that you can see 50% // of the height of the view. // orientation can be either 'Vertical' or 'Horizontal' property real position property real pageSize property string orientation : "Vertical" property alias bgColor: background.color property alias fgColor: thumb.color // A light, semi-transparent background Rectangle { id: background radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) color: "white"; opacity: 0.3 anchors.fill: parent } // Size the bar to the required size, depending upon the orientation. Rectangle { id: thumb opacity: 0.7 color: "black" radius: orientation == 'Vertical' ? (width/2 - 1) : (height/2 - 1) x: orientation == 'Vertical' ? 1 : (scrollBar.position * (scrollBar.width-2) + 1) y: orientation == 'Vertical' ? (scrollBar.position * (scrollBar.height-2) + 1) : 1 width: orientation == 'Vertical' ? (parent.width-2) : (scrollBar.pageSize * (scrollBar.width-2)) height: orientation == 'Vertical' ? (scrollBar.pageSize * (scrollBar.height-2)) : (parent.height-2) } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.630359 PyQt6-6.6.1/examples/quick/canvas/contents/Slider.qml0000644000076500000240000000751314532151332021372 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtQuick module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id:slider property real min:0 property real max:1 property real value: min + (max - min) * (bar.x / (foo.width - bar.width)) property real init:min+(max-min)/2 property string name:"Slider" Component.onCompleted: setValue(init) function setValue(v) { if (min < max) bar.x = v/(max - min) * (foo.width - bar.width); } Rectangle { id:sliderName anchors.left:parent.left height: childrenRect.height width:childrenRect.width anchors.verticalCenter:parent.verticalCenter Text { text:slider.name font.pointSize:12 } } Item { id: foo height: 6 width: parent.width - 4 - sliderName.width anchors.verticalCenter:parent.verticalCenter anchors.left:sliderName.right anchors.leftMargin:5 Rectangle { height: parent.height anchors.left: parent.left anchors.right: bar.horizontalCenter color: "blue" radius: 3 } Rectangle { height: parent.height anchors.left: bar.horizontalCenter anchors.right: parent.right color: "gray" radius: 3 } Rectangle { anchors.fill: parent color: "transparent" radius: 3 border.width: 2 border.color: "black" } Rectangle { id: bar y: -7 width: 20 height: 20 radius: 15 color: "white" border.width: 2 border.color: "black" MouseArea { anchors.fill: parent drag.target: parent drag.axis: Drag.XAxis drag.minimumX: 0 drag.maximumX: foo.width - parent.width } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.632076 PyQt6-6.6.1/examples/quick/canvas/contents/TitleBar.qml0000644000076500000240000000541214532151332021652 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: titleBar property string title: "" BorderImage { source: "images/titlebar.sci"; width: parent.width; height: parent.height + 14; y: -7 } Image { id: quitButton anchors.left: parent.left//; anchors.leftMargin: 0 anchors.verticalCenter: parent.verticalCenter source: "images/quit.png" MouseArea { anchors.fill: parent onClicked: Qt.quit() } } Text { id: categoryText anchors { left: quitButton.right; right: parent.right; //leftMargin: 10; rightMargin: 10 verticalCenter: parent.verticalCenter } elide: Text.ElideLeft text: title font.bold: true; font.pointSize: 20; color: "White"; style: Text.Raised; styleColor: "Black" } } ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701368537.63895 PyQt6-6.6.1/examples/quick/canvas/contents/ToolBar.qml0000644000076500000240000000500414532151332021503 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: toolbar property variant labels signal buttonClicked(int index) BorderImage { source: "images/titlebar.sci" width: parent.width height: parent.height + 14 y: -7 } Row { y: 3 anchors.horizontalCenter: parent.horizontalCenter Repeater { model: toolbar.labels delegate: Button { text: modelData onClicked: toolbar.buttonClicked(model.index) } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4234354 PyQt6-6.6.1/examples/quick/canvas/contents/images/0000755000076500000240000000000014532160402020672 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.635059 PyQt6-6.6.1/examples/quick/canvas/contents/images/button-pressed.png0000644000076500000240000000107314532151332024361 0ustar00philstaff‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ.!Ä3tEXtCommentCreated with GIMPWšIDATXÃÕ×½nÔPàoîÞì&«h¡áM"Äñ˜©hBhyz$ BÁÏm²¾ëý³D {*[wF>çøŒg—Š+?ý6S)º=}'žÈü0+#ÏÅÎq[Iб/¾ùFUž9÷Áut $yéOå{ä™cçÞšZªjn펉 œù,Ó÷ÎÄÔ²õ¦YE¶páµJ†+SK‹–‚mJ¹@6—$X¶zÓÈ!,ÍëwÐz›Ü݇IG#º ¾¶M(µ‹º¶ž®/:£ø¡Xcî«Züµ¹ |k›¾Ò)ógi­|»;·ú[Ã’D >:A vÁ“vUì ææ¢ü¯§÷«Þ½kÖõIµG!¶ ›ôÔZÕ{µ¼UÓ6«M­9v㖵衶*÷ª]e—èJõ"6Ö(3ÅÐxvì=&6é‡x@vHŠ¢’¨QCR a ËÌz_³ÜG«ý?–áØ(¿«òÂıÜ7w&ûèW à޵˯€,8õÊ7#qiL9Òë̘ªÌLˆ§2#7qݱ}rè^z«G×F˜IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.624372 PyQt6-6.6.1/examples/quick/canvas/contents/images/button.png0000644000076500000240000000106414532151332022716 0ustar00philstaff‰PNG  IHDR^ÙÚ‚”sRGB®ÎébKGDÿ‡Ì¿ pHYs!›ò3tIMEÙ-‘ ëÏtEXtCommentCreated with GIMPW“IDATXÃÕ–»NÃ0†?'Nz‘€‰7a@b 11ð¤,0 6Ô`ae)ˆ–*MBíÃK“¦­!!ûxðåØÒç“?ÇGM”¿,fh˜ƒŒ <·ä$$êʘ{&Ìj·rTj`0sÊï2Sê•¡<ðÈO‰­º€”ȶq€s®ùPDL0X,Á–¤n¶öýwk£W+Ë3chP$ =¥úUëÃ#õ‡ªž»+ìfÌ¥PÆ ]¸W-lëØÚ·@X®ëµ¶L+B›ñ’Þ~§›³î9)¡7ƒªÛ·S-¡Ð™õóö;-;Æf vq!]¡[‡óú®ZËÆ]øÝ¦AÈÉXy]é_ä¤^ÁëfŸ–/¬aªVÈ<‹¼)ûÍ[ø:Ï+@·•ëº(1CpVõÝw8$ZÃ`Èö<ê®%ʘQQ˜å\pGˆÁz !Ð ¸dI€ŽYp<±ÜS¹”_FœqË 1jÊ'¹ wÊW­¨zç¼:AM¾ùbA^Æ®[HÌ1‡üèÑìêBûÏÂIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625167 PyQt6-6.6.1/examples/quick/canvas/contents/images/default.svg0000644000076500000240000001644214532151332023050 0ustar00philstaff image/svg+xml weather-clear January 2006 Ryan Collier (pseudo) http://www.tango-project.org http://www.pseudocode.org weather applet notification Garrett LeSage ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625292 PyQt6-6.6.1/examples/quick/canvas/contents/images/gloss.png0000644000076500000240000000232414532151332022532 0ustar00philstaff‰PNG  IHDROOª4˜†sRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÙË’¿tTIDATxÚí\ÙR1l­—`Ìmã¹øÿ/ËGxòàqP ­VÇèXª(\®•½jM÷ôÌ =á8Hûñ{êu‰yPJ¡Å1ÐïL7o{O‹SóÌkc爨EGÃÌ¢HØy€À z÷5‰ã0‰Sר J*GÄ97„ÉÚ ê‘çC9×¢”,ªú‚h¥sMGí¦¦Úµ‡ „€ï¤ø‰Ò¥At=£È.§ÞŶÃàh`ÕÏ.“LŽI©H”h‡)M³Úœ1‚ªÈpÃY+„yÎúÙe’i¢îÕ‘œ MÕÒ¨úÙ¤mŽffޤ!ÞÖŠù>Óª²†´Væ-2Ï´*>Ѳ¤J#ǦýÇÀe’kéÖuBt+Vï|œÙʳR»ÁS‹Ê1Ï)WSÙ6ôáMi‹‘Ò{Ö<ø `ïb¦@,åæÚa"²£ˆH1x?œŒnrêq ý³%çÍÝSè÷y½VZéqà7€­åñÐg]r5OµÛ) iQ˜k×KQMôù× àìÇ0JP'Wä‹1F9– îY ¯Ö­j‘ïl—r®<øàKÊQd’¢„ävp=9Ï«i¯%”¬‰CzKK±ï zâÁ¶æ–A¼[hÛìàçmZV¾g¯m«Z™7Wr §íŒn<¸iØbd‰D‘sD´b[ó`S‰rÅ“ØÉŽÄÀWŽÄQ:Z$牟»bGÖÄgMs,*&‚Åt9Ûé?MoÄ»™Hl…âÞ 9Ê@^²ÙÞrÝÜU“À/zšAp84Z˘äL@l¶wš6Öl‚ÖɶÑxÆ™zÏ™zh­~nóo1í´ÞñÏ¥…ÖU*”æÁ³ÐúеQ§uû²(ð,´Þr¶Þ8ª˜lïE‚gé1^øÆÚxV¨ÒÀâÁ3@\kü\Ø\çiI5Hé/œ\P… }¿ž%Á<0ˆf)X¯“¼0õÙ¥?xF‹l‹cÇûâÛ䌑¸çÙ:Ö\JðŒÄòÈ ®B#ñÓ‚g€¸a*ï ³m’…}âÞÎæÌšëž½ì;ÍÐZ'y! ÞàxØóf*óvðÜ žNˆ½àíøôÈ ŒÂ+pl΢ƒg°_X W¶q î¼Xwðâ}ák/ÀŽ]}ôÑG}ôÑG}ôÑGãàì^QÒ.ÁIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.728564 PyQt6-6.6.1/examples/quick/canvas/contents/images/lineedit.png0000644000076500000240000000260714532151332023204 0ustar00philstaff‰PNG  IHDR,&¿ygsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ*g?…–tEXtCommentCreated with GIMPWâIDATXÃí™Ûk\UÅûrÎL&“Û43I&öõRªö¢¢/£ú$BE}SŸ‹à“TÿýÄ•¢/‚—*úPƒ ´Z/µµj­iÒÆ4éäÌ9ûû|˜LLl5IIšûÁæÀÌ>gÖ^{íµÏ^c˜W[^®l«(ßÚG¾?‡i³š ׺\sþô8gþN±¿}xðžÁDZŒ€j÷@ÉnrïìzzW­tK A2¡‘e¤.Å©ÃZ»¬4Æüç÷ª:÷LYpO(ŠÈƒQÙ‘sœ:r’Ï¾r_çÆî7ïyioÍÇ–z’¥sª@WW‘æPιgq>`UŃª""Œ]e4;GÏ@_àcgùõý_†½-ÚG·>±¹æ½eòìLÅ<}ß3ìÜE¹¯Œ·~Q¶VºD„ŸÆNòñW‡øàÛ‘›aàö ãÇÏÕÜÆC#Û÷m'kdÌrà±—¸ó½tt‘F˲å°TP-´Ø_]¾=›öPŠ7ðÙWÄ(£{¨Œ­l)cÔñç…Iöݽ۪·|@Œ@¬`´©¹ +ÚŒ¢h¹k«!ŠD`bÃ;`÷à^’É¢/TÚIÒ:~̰»'¨»Üì8£¿‘³«*ƒ²iL)¹\LmKO?ú„öþN¼”¬!tº¹ihÎúJ³¼Ë-[Ǫºdiõ]p(š†ºª8õD.‡ÏHêÓÓä}®igšÚIJ”Ë/ ÀÕØZ«ß•ú2\Î’%3ÄŧyÀâ½Ä `Å6§Åò¦­iÞ¹hÉ–[‹=ϹUÅ{UCrqªi…‹N­„e³»šeW‚5¼žÀ]ÃÆºë ðº×ð?ÁëÖ·†×=ÃÆk¼ŒÌ£xM€Íߪ[WUÅrÕ À7ÿ/_W>¼î6Æâ‰xÝz`×Ó<ã©â8× !¤dYcÞîÆ\ ±V»œª‚5(‚3Ž4 Xk±"ÍSªÅÎW¬›eY³©W™=>a±Xœ,̶æ²-9MSÜ„(óßTEȲ ïc2¬Ÿ}ߌ1s2ˆ¢hMÝaÁš²Ðiöø8F¬µ¨ÌŽN :—Ò\óÅG=Ì N‰}ŒMê L¤Ô“:?œø~vxM°!Ì*EUKYt-¢Žø†¨£™Øééi¬·LLM0òå©4šzFš‰¥¬‘KÐ4ƒFšpäË#˜vê‹ bŸ§¼µÂë‡ßàȱ ‚†«vŠ–¤þ«‰!Bs‘kë3kXÃÁ2üã0…jžôB‚s޽׳¹ô\ys…Ñé?8üùaH½¥ Ý]‚Á¬Ê4Æ4½ÕÚË¢«Ÿû•×Þ}•·>|›ÒŽ^ú7V9}èfCyÃ#mÑþÚþ‡jI{Â…ïÆ?1No©—¢-R¤™x À³,»,¦j±¬ c—Î3îÆè½©Dyk™ñ£g™ü¢þ‚© š4 wl+¾xד»jmC4FόҘšA&SdxïW4Š šýë}Æ@W_…îùB‘ó__àø¡£¯ú /7ÿã¨VsrIz(ò|ùŽÊΡ"m¥<¹®6êIƒ¼Ï³\EÈ"‹U5\1lIdæâ%.žš¢1>)ÝYzÊü¸qFþ¢æc¥‹IEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629985 PyQt6-6.6.1/examples/quick/canvas/contents/images/lineedit.sci0000644000076500000240000000012714532151332023171 0ustar00philstaffborder.left: 10 border.top: 10 border.bottom: 10 border.right: 10 source: lineedit.png ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627024 PyQt6-6.6.1/examples/quick/canvas/contents/images/quit.png0000644000076500000240000000450114532151332022364 0ustar00philstaff‰PNG  IHDR**ÅÃÉ[sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ/•ô~ótEXtCommentCreated with GIMPWœIDATXÃíØËkÉðoõhf¤éé׌4ï‡Þ¶%?Ö"x/YYX‘Ü–`È?`̲çÜBbr98à@r2ä’Óö#,¯¬@bX­¤ÑŒç©yµ¦»§»§»*‡íÅÖëä\ÐŒ˜GÕ‡_ýê÷+¼ïÇûñ?€tóEpŽ\X\ü<“Ͳµµܹ€ùb‰Dš››ûb€S‡ï,ȥť»“ÁÉß]¹rÕjµÏçŠõz}û]‘³ùü׫««ŠišK’¬v:ï %‹ wƒÁÀýkWW‰F‰(888(d³Ùb£Ñ8V„T*‘ܼvíj:7; Q”Ðn·×%I:ë;q»ççïƒÁû««W ñÐ4 “S“ˆD£(•J…l&[l4φ]]]½îóù¯\¹’H¦Rèi˜šš„,ËhµÛë¢(ªÝnwã¼P2?7w7Þ_YYχ õû ŒÂ¶m𡢑J¥R!“É›Íæ‰Ø•••뺮uyùR$•N£Ô‡ë:°-!>I’ÑétÖAP{½ÞÆY¡\6“ýÕäääo®^]ÏóèõÁÀÀ{‰N£\>»¶¶öCUU¿\^^–Òé4TU…ã¸`ŒR Û²À aH’„n·»Î󼦪êã³@ŸÏ÷—Å……©l.‡^O…ë¸ ` #èxpÓÑ(Jår!N_Ã~øá‡Ÿþmii‰Ïd2P»]¸Ž ÆÆØøu8´¡( !(•J7 Ãøë4èÀ4ÍÃáð¶pb,6Ó4áº.(õŒ1P`ŒF£(—Ë…d2YlµZÛpëÖ­B£Ñx´°°Èf³èt:p` ŒÑÔ{¢€~¿gÏžUÆÇ^¼©ˆ¿µŒ¤’ɯ—––Óù|ÝvCê‚B(¥ã/ʲ Ã0°½½©©©_„ÃaõðððÑüü<¢(0 [[[=Ó4?Õ4mó¢zý«ëúC˲n³Ù,4Mó FåfT(¥ãss\†‘ˆÃ0°µµÕðY«ÕúꬋûÎy¡ÐuÃÃRJÅL&]×á8Ž=ê•J¥`Ì£ Ì¥Pï°m?Û¶'|¾ŸÖjµ¿Ÿ÷Žyî!BÖï÷Aà>úè#ìííaè8àØËïw2€C$A­VC¥RE(4ùóR¹üð¼k¾ÓÅU’åB8I’Ðl6aY(¥p)}­˜S ø&&0==ƒn§—ºÃn·ûÕ»¬yîˆæs¹;Ó|píê5ƒA4 p£&p<À8/žà÷û‘ÉdðíÎJu˲oiý~ù<ëž+GsÙÜËòá0v«Žpà8B|ã®EȈ;ú›R ]×1?7×¥a­ßÿl0< _84ŸÏß±-ëÁõk7À‡y´[¯ì Çyµ4xkŒöFt]ÇÜì,c¢mÛ· Ã83öLÐÙÙÙŸY¶õàÆõ„óh·ÚãÚéA8€ùÙY˜– ÇvÀq^´9â=` †n ÿXß™–õ§×op¡ÐËHBÀqÜø5 ™Lâñã€RŠT*Ë´FŸ   ”a`ÈçgÁpvì‰ÐL&ó©mÛþàƒ&xžG§ÕÀ@àóùÆóûýH¦RØßÛG½Þ º¦“x,Y‘aYæk)@c. ÓD>Ÿc‡Cû¶®ë'bß M&“ŸPJÿzóæÍÏóèv» x5Š^„ü~?âÉö÷v±»·W9l.ÇcñUkÕB4…$I0- àç¥ 0˜Èå²à8N´í“±o„Æb±q÷hmmMày½^Œ1ÂÁǽÌI¿ßx"Žâþ>v÷ö*Ífs @³ÛënÇãñâ‹j¥F!J,ËúNõöJ¸išÈdÒ db„ÕÞˆ}TšœœÜ¼té²N§Ñi÷@Ùñ½óeÙ ˆÅcrw¯Òh4Ö4'ét:Û‰X¢Xyñ¢‰F!Š"†Ã!8Ž871J˲°¸8Û¶Å~¿ÿK˲þ`pÔV"Š=0ŸðS!H²Ë4G>/Çü~?fffppp€o¿­ÔõׯbãñD±ò¢RˆNG!,ËU4o.ŸÏY–Ðn·Q,Aùµ¦i_âe¿xûÖ÷ûýÇa>¬vºÝuQ” (2lÛw™ééi”J%ìììTêõ7#_Å&‰â‹Ê( D¶mƒÀCF" úý>ž?ÇqîU*•ß~yâa:::Ú ‚Úív×%Y‚,Ëp]QïŸøæ›o*µZíDäñhwÚÛ‰Db·R©¦§§‰(ŠpŠ"CÓ4<þá}¯\.ÿþMÈSËÓÑ‘º!„µÛí¬Ë²ŒD"ýýýs!ÇØvûŸŠ¢lV«ÕÂÌôL :…ªÃ{åré­È3|õHÝAít:ë–eagg§R­VÏ…<½^oG„z½V˜˜ðwww1ï•J'"ÏuËÊd2_(ŠÒû¾“eÒégffÔ\.÷ù»Þ‰O»»F.p>é¿|?þïÆºŸy3Í-EIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629887 PyQt6-6.6.1/examples/quick/canvas/contents/images/stripes.png0000644000076500000240000000040114532151332023066 0ustar00philstaff‰PNG  IHDRľ‹sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙøÛIDATÓͱ Â0EÑñõ•ÊŽ¹w‘!hÒ1k°3=ì+äh@"R*^{ôtwqÏÖ­µ pç³”Rof YDdú_†aöÞ/Ó:çU½u@¼¾XJÙ›Ù©ÖŠ™ÙxfUÍ«ìÿcœBYU¯"r\!ðx‚+žFļIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629001 PyQt6-6.6.1/examples/quick/canvas/contents/images/titlebar.png0000644000076500000240000000263414532151332023215 0ustar00philstaff‰PNG  IHDR1,ÌÔPYsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙ/+áƵtEXtCommentCreated with GIMPW÷IDAThÞÕš¿nGƳ·¤èVÒÚ0.’.Üp^ÁÏ’"mš<]j7VãÂÜ9MÞíΤØÝ»½ã‘’œÀ¤XÜwûç›ï›™%‡,™é¥Õ÷‡j6¹u4€«:ÕUŽÈ.Z®XæM×`¤º ˆzãÄÜ{>˪©º;YMYÐjó@ðÀƒ d™ì’Ø!AèÄúè€è

/ãêç~b9A«5Ͼû–³³3...xóæÍŸòâÅ {þü9>|àúúçM“\!ÆH#n/ï\æzxޣϊ%Å#šc… hžW* .ó§5#ù=ç]×ñðáC=zÄëׯñççç\]]qyyÉjµ m[‹"²µy&‡¶@@²œ™“^b£PcÖ³Q„_@¨³ †šfCÎ9®¯¯999áéÓ§øÕòïßÿE#ŽØTï}º·€ôj¾9ç·z$W€hÉ’6™t=f6b @Õz.KK³“Š]X,\^^òøñc|Œ‘ͦÃûDÓb±@UÙ´ŸY.—=Ý»ÙÈÔÛ” C5ñ#"Cx³$—X1Qƒh²LM-QMlªõñÑù†hÊf½ÁùofÄqnÐ~ˆƒœ4êH“5Í£èd†æçÓ\ AADÀ,[;$VÌ E0g ,VrŒiœ™!N™²¦Y$ºnƒY¤m#Ò86]›7¥ˆØ`Êj ˜…ѹDDè$î<«²¥‹1Š} «fëÁP«±I%¨hˆ:|c^p¼ÁQè›X¾0S®(Û êð:Û³ªºÅøœ4FbŒÉ'bŒÝàhý5êÖ"û&¿U*¾ľù‹‘RBVºªš|BuËš"’hÜöèâ ;7rãy¢2Ø€1¿f%+UíC|¢VðT÷ƒv·'ã‹™˜‚ï­|ÃMDP1¢FÚÐ%9•Á¦ƒeT“ŒÊuÎÚR9è]ZÉç@cîòCçZ"©ÆÁ±§´Þüíý3ìÜűç@ÔÃç|CUS"Ë©m[º®Kè3QrÇ.½‹H¿ï¢EveÄØb¿Ž†åMY·-~ÝnX·œs³Öþ’èó5Z‘z÷y+Èæô~¬m*A?—Dfµ¤MUq%ÑíC{ô ê_Ú(›%&nzù^2q웯¥®ª):Ý'ËÏ%A7w¬¨“Üìyé?œ`ÿOõ>qäõ÷Ý}™ük;ù š¦é¼ý—§ È9wÒò·A*"4MÓgör¶*_NíÜ7‚ˆ1öTuôÓIñCËÉ7âhš=Ölji¹£ŒTþ‡Ÿ~ä¾7~®~Ö_1[êjÑ¡ëu•¨«jŸOø;?Ø0XJ‘E8lÝÎ&`ú“"Ë?ÄšqÝîÐ,ìc£0ÒŸ) ÙúÓ**daÊFùA½)•£Îgº‰õ¥ü;'+²â3€Èqâç@Fzf|¦ä˜ÿ1'«Ñß"þ‡”ŒjDÝØIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.631823 PyQt6-6.6.1/examples/quick/canvas/contents/images/titlebar.sci0000644000076500000240000000012714532151332023202 0ustar00philstaffborder.left: 10 border.top: 12 border.bottom: 12 border.right: 10 source: titlebar.png ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633194 PyQt6-6.6.1/examples/quick/canvas/contents/images/toolbutton.png0000644000076500000240000000476614532151332023630 0ustar00philstaff‰PNG  IHDR@*]âbKGDÿÿÿ ½§“ pHYs  šœtIMEÙ  ˜Ž×ªtEXtCommentCreated with GIMPW ^IDAThÞZËndI=y«ÊíöŒºW´dFôPïPo@ò|BÀ°ààF¬áزdV³if7L¯[jÉÍ,,fÜn»\™,òfÞÈW•…%Ë®º·òfž§y|êŽ~¼mްÛíB€[M_®6ë?­V«/!zšfÕjõÇŸþø'8;;ÃÓ§OqttT,ÖN2ƒB隀1žHšdý¾ÈÜ`9~Z4DÍ=%õfågº D„»·X¯×¸¼¼Ä?_ƒ|õŽ¿vŒŸœœœüþÅ‹Ÿÿö׿ÁÅÅ®®®°ÿ‡gF´ µ“pÍâJpÂp´wüxvl"B˜_®§B8>>Æé'?Ä«W¯ð÷/¾ÀÇ=þÝ›Íæó³³3œŸŸãúúëõ!„áò{èÇÿ¹ØiQßý|ž0¹ùÞ0`[ |?1o.ì@ Üîn¡ª¸»»Ãû÷ïñòåK|óú5¾»¼øùOž<Áf³ÁvßÅØóþA‹oCC!P{sŸši’Ðy1‘æËÂ0 (Òý€‰xhLÓRìpssÛÛüèù'øößÿúl€õzcäääÞû,NË8>> "å¿`°L^ç¢ÁÎæÅ©T .ÇÏÚAÈãQWÖ1K‰Þ{¬×kÜßßcåvÛ-œsðÞcš&03&Øn·PU03D"R¨?ð¼È| P†RÜ @!y‘3*]öäIš×pÃHˆà&°¥ØŒÈ‡}³v~ …×ç[Ýn G@!0M¼÷ìv»9…˜]P—]ÜM4Ž`¥9䨤"b ‹¬ÀËŽ{Ÿ—²‰ !„Ë‚r¡‚% {¨`aÙyˆ(T "€s. ª!”»O¼|XaÞÍ À@|–Ô(h¨ñoymу2¥–)·+1]m²›¡ªy}"KèMpqqB4 ÎÍ4ˆªL%¨¿»v§,½, hs{oü,~õ8ŠY¦ð´Î”s²a€¹9º£fÏ,(ߤžåsA¤Éñ…JCÛÅŠÐä}Ñÿ €†ÉX$šduÇâôR¥ë´•&•À²cÕtÝ@}oÀφåáö¹6Ì z 0…Î ‡]`M_¢LU RÏÔ©43I´Ë­> ZÔLZ¿2d@ºBˆèªBy)p2µeÙq‹d­=ûúß‹ëa˜Ÿ?bXïš]#•„ÀÕ3ó• D ‘I¤FEÕÞõ½;¶XˆÂï[ ¯BÇŽÀ^/4`<Àæ ÊiÁÑw‚§ ‚qébKTæRx°c)Ï/ÅÏR.ÐìêØø~@¡@ÒúÌæ¨WQŒ•¬Äô²ú²Újr{ÒäÖb1 @#Ú¨;ºyÛš£yàè(!…«+GZÒ]Ì”½B*Ø,E} Ô¶ú†É¤Ü TÐÒ1§JƒX¶¦ »x©î×&ÝIå6›0*ØJÝMLz7Á$µÒ/˜îÏüÀƒl)º¤Á²“”¥€ª_ôHÊñ•ƈ <—ÛvÖ5X'hws6“2íÍ”Z±µ¯øEÙµ>ÂTx™ªb&åü^g¡:Ä/lK`zïá½ï§Aïý çÊo1*Zî µ#ãq“ÂÆ3r »&îA‚¼ï¢ùéJ•~nm6H½Áƒ@B?†öæ¡)Ûï&l,Îó˜šÖtï°ã!ÇâyÇ*Ø0#]Xïïg’Q÷)jÄTÌ£ña°ñSjO9Q6VF;9½¶¾-Z|€!p¨­6Ò›*mZ §^ÿÍööÔˆw=|YŽXÑm„ÒòYê,P•ÜTí¥ÒžóÛ+‚ι „V=ûžÚ”§$Cz¢Œ½®SŠçS—Y=†ÕGêI‹êÉ xôèì!i©ƒ-g;©C=úÞ×z™ÁÆ>Jö}¦rܼ_¢)ÕÈ»Ý.VƒÉ½ ÚÛeS³eÀÈîòìKãÃvû¾Šã{n@)A¶¡°Ûí¶Û-¶Û-¦GǢº¶("r{/÷YÕTÎڳƺ8"c¥»fãèzaÀ\ú»ø››ø‹›¿!ò©ˆ<öƒg¦n¯h3·%…˜J âH„ôžÒ‰1œxN¥öº«î'Ž¿ììTev~ÚˆYz^í_1˜"Oy¶â«Õ*ÿ=::Âùù9Þ½{÷õ÷ßÿ÷WnþŽÐ_///ñþúúùãDZÙlrLç qþnNü%è:/…Ñ\™ÍĉUB•9êÂìPUYžh¦iÊ º»»Ã›7oðöí[¬×ë_ÞÞ~ø–àôôôÙv»ýp·ý›sîSçxrݳ¿År}6Jd­¾êÝ«Ãè=ˆÍY@*§Ó&¦¶ßÕÕUžÄÿ\‡d‚ÕDIEND®B`‚././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.640388 PyQt6-6.6.1/examples/quick/canvas/contents/images/toolbutton.sci0000644000076500000240000000012714532151332023605 0ustar00philstaffborder.left: 15 border.top: 4 border.bottom: 4 border.right: 15 source: toolbutton.png ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.637286 PyQt6-6.6.1/examples/quick/canvas/contents/qt-logo.png0000644000076500000240000005573714532151332021540 0ustar00philstaff‰PNG  IHDRúúˆìZ=tEXtSoftwareAdobe ImageReadyqÉe<[IDATxÚì½ ¸Wu'~Nïo_´ËÚ,Kò¾¯`ÀØÆf !&™$@&ßL “I¾Ì|Y&_2ÉBaH2ÿø‡@°$a ‹/Ø€Á»%Yû®'ééééí½ž¹·ª_wÕ­snÕ{¯Z–ͽŸJݯ»ºúö­{¶ßÙˆÀ 7ÜxaŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸áFJ#wþÒVË›ôÎ!sÞó\yØ|î=ͫǂz–UÏ—©Ç>u Cz¡AƒË ¬.ô®ȯܶ®Ô³u]iyow¦¯A0¤.Ðð'3ê8¡þÞ§÷úêÇSê˜ O¿RA7$bèõé9‚1ð›É;¯Zm@>×üÍï×§ÎÎ5 XÈ„.ç}Oë:ø~ƒð[Zç#DnLèZ¹Pà¡|3jµ§fê0З ~¦9ßJ¥Ù,zGp.Ù ÂÈéòCýYhÔ)ðYãùµ¢öõƒ¿1¼FÁµP¯ÿÞK¿å¨z1„žÒ(©c›:nRÇeêØ Žê ªÇ!uŸzÕcAx^?åá’ÝpÙ†.X9”ƒîb2‚Z]m8b †7zœRލ?vª7v7êØ£ŽquL¹[ï†#ôôÆÍŠàÞ¤ˆñUêPŽÙ”ŸšË+‰±zU ^|E/\ª¼¯;uõZ]½WW\«’!0*xç%©b´Eý±Å~ZÂi¼Ö4#ØÞÔÆÔ1á¶„ŽÐ“׫ãWÝ.êËóÚ˜Rm{úòpÇupí¶nèVªlE÷\…ª,jí<Ç©€œJ‹ÁÇ’OüÞ¼NY½H=9¨žPÏ5ñ?¥ýÚɦà†ŽÐ›ã u¼WÑÛXS/hni¼¦ôø‹záî›aõp*ŠèçÔ%Ö í¼ÐüÅ‚[ maBPTÇÖæ|½Ò$v}VÇÓêx¦ùüXS DìÆ¡ÿŠÚñïU!,ˆÃw>!½ô¦¸ëÚ~e+ºÜˆVmðÅBÃh{”"Aº@( ~μ&Z@HkðÀQuWÝ•Ëâ³M àp“)Œº­åÆ Ð»Õñ!µá©E6§ˆ\üÄ­ËàæËz ZóA6žç%¹Ié(0Ä©òæÇÐPšDNh0‹  À…þ/î*¶øFU#ꯑ¦ýÿtÓþ×Ä¿ß17ž¯„®‰üSjï¿>ìFÖã7M@¯érȵ§–ÝM Ñbø1b£„ØBÝ!ª˜®ªàuáÌáµ\@ ½ëÕÓõêï½ö]kŠà¨Ï<ÉÿL“€6ØpÛÑó‘лZDn£Ï Ô î¼yn¼¤Û'ò°šl¨˜ÐÎ|nžx‘)O‚ýo9‘¡ï÷%,B=ñ?‚š¬Q¯Q/]«_Ô_Q,`M=;«Þ?ÚÔô¡=»š `¢i&¸áF§ ]T}ÿRmÚ×Gè iî)µW]Ü w\Û¥®ûh!hbìu…÷QøLPc0ƒNl R ¨Ã˜‹9 ¢ZÒBú¸ªý>icfR£UþÝâßÞ4s¹áFg$ú»ÕñöжÙåJ’-+Àk_4šÄ[UVUÜ$vÃîºÝ"›ð~[ߌ€ò×·¦hšeJÃDã7˜jBÖ&BuÐUÆ$&š*ÿ¾æãŽ&˜gܶv# B¿Zd=ƒÑ†ï¾aú{2P¶¹ÏB*³à kÅ0_áe©ÓˆlIਖAîÏ„B[›Ä¼ÍN=j]§_sUKh‡4­NÙ`Ï6Á@mœ è}C'Áü©ÚPݬûšs¥UpÉE½påæ.ÏO&Ì !’!´Ñ.ÑCÏc3ÖÕ "äÛbÂØÎÃÑ <ðÃyÌר¼ASð_êQOt÷Ñ~X==Ò$þgš¦À‘&˜tdàÝÜp?¥öÐ]@‚7éMmÌL>/¹²¯iššRÖÊ$•,Qqf ¦ Às"â¤'X˜‰ 2‰&&EÆZ’ÀÌ$$3`–PðZ(˜¡uîU^ª^SÝÕÖ`”àýkªÿO5ñ€ãM3À…ÿXz{¯ißñÿˆ€o6Wµ²Í7oì†M« P«âã²É‚ꬸ!4*€cJ(¼™=av¦ ¡þ–MѾ‡¨ª$š4œFÀh,¬™BJ€­ê¹Ž¼-pþŒ:õ„zz¬iû]ŽüHô;Ô¸Á&t£f%Â5Ûz¼™ZƒbÐ-&59µÂ@ÃQ’Ä⌠â‚m6)ΨóÄØ÷Dvð"bròÿS 7fl{M]œ_£nõ÷…þ·¶l¶ ÌôvgÇÔtŽ6‰G ˜Oš ü‚èoìi7cÙ{ûò°umÑKR }P¿L´:¢y“¤ÅйMãŽ|Ùüu…ˆ<ÉSÀé´èM@øY…a[ŸchsûInC€P X@P#á1ˆnEì:@jZ››ý9xçk7ßx6ÕÇv5q€=ÍG­L’Ÿ€èÆóŒ[éItAhHjû–µ%èëÎz~ó01K”ÌhbæÔ]äÔöùÏPˆ!æµy" †É ð9ŒÃ(æ»c˜^(†€„õãp  Ä0ð™¿é1±€ZR«³Y\­^º9`²èpೊßïéíÎìQŒ`¿úè<¨µ‚ñæ9nœG„~›º‰ËmÀuT³Fذºè%¬D$×|`ŠuŸ ]€¡¬Ú†Ï mhîËQ0¸ï§°-.¡ñh†â&Œþ ùÙm® À?ŒÁȲޏdfÐ`âþµt4àruêòž®Ì->ÿôÞ×ÙKgÔÌ«ý{›ÒgÔ•\4às`£ë[w7«úJvºFÛ ظ¢µ:ㇳÚÁ‘1>éP–ÚUbƶ ÷¢Í Ñ9GlsÁoÏ©ù¶RH÷4>v®† Ñú]`‚“æ$σ£ ÛMmµÝÓJ2Ͳaê µ<£Þßßý´ðTóQ×Ðy.°ƒ}­Zü+-΄«÷÷ä ¿7ëÕ‹J#KJœ±ÜXˆ6$¹T‚ Îþ(Ð3íéz/0‡ ú"DÁ F¥qD}_Hì>صóžD€À„ÚZ˜tÄ£b*C깟¼Îø*¥x)À‡›  šww BߺÞ%ìæ•a¶¼/…6÷YœBV¬*º1Ñ.±¤fU¡-ó3‹-s3CÉž—MäÄSmçаÉCDÌ1´ 8óÃÐàZL¦bvCê‰:¼hÀ×Öt¬)é4mÿ¯57Aè:ïzÐj“3L»¯'ãU?­Ô¢„d R$‹LHf1ËJ0*&Bb7\DRØÖú·QΉ.)äø¯\ñ ´üHüA 3 Úþ‚fD÷çóù¥ @DÈÄ-"4†Õûê ]ðnuÍUŽÐù_×`Skµ-9¦(3ÍÒ¿†»HDô8‚ò—bP Ä’o›×')ùi‹j-cÒÃR.¢!Øüùæ:0×±bÁŸ§áp8‹i»Y¦@ÍÐ6J›.TüÓE:Àr«éÌÑ‹Ú]…`ýo§ð¦77[ˆˆ‘î2ã@#ŽÈš‚„ a¡EJCô÷]t¡úèÀ0¨ùy L uš«‹.¢§PõƒïÖ½u$`Ž{DÞö·*w­àwSà÷Å]ÇÅú È™EïA.ƒÑ0PNz cŸE¤(Ê€€ˆçqñç  ¢͆¼ö`Sm ã%iDÆõgêÉØL&Â+­#IøCð#h˜@h0†É‘a6 s2ˆÙ¬ÿü\d¹1jž9¢_¡7"{.ÖôC/ï¼-q‘Qݸ äÖÜœ1ª¦âjj`‘”$øúQb2À¤¸ãÆâ$:ZL^.i 1jÓ¡%úJ4™@²dBq€P¤ì2‡ê"I!µ @e.’LжRÕÀÐæî3|Ù€¼G!T;ßäeÑcηÏadh(Ä{X“Ã5gJHáyR@Ú# ŒÊ¥ÙèR$ ø§ˆ:7Ëqe›Œ‰  †þ˜ ¢ žF’Db ^°ª= ¡´KÝ›¶hAFuG‹ú…œyb¸C9Œ9Õ¢¿ÛÔˆBŒš3a .R§Ÿ,š‹z$+™¤²"m.65“kx`‹0“¤:, ÚK2Ï“©R{ýÔ¨IcÄ0,!wSu#o6Ÿt cb‰3X*Kº¦JÚ f˜Ì™Í‚BŒHú±e/š•vÑ©íK'tIEídLÖY>ÅpŠJV´eÛ`NÖ&b¢ŸÍ誧~.½.œ¡ Ø6¼ ‡ ¨ÖjP­W½Oe1£ÎS‡zDõÙl&ëýŽ:4€ºõT~ YunN—ó ö ¢…fÜ\c‹v€PÜ’Ø´¶|~Û¢ûIŠŠ`¦5å6¸6`q)º±xB —t#5ÐÐú…î·pƒ†=k¨„¼œGó³YEÔ¹¬OÔ3åœ:SƒSU¯ÀÈ™2ŒNͨÏä` Ø—¬Ü[Öl ‡VÂêþe0ÐÝC½CÐSì5Ãk V¯Àtuʵ)˜,Ÿ†³•“p¶<c³GáôÜQõú4TÔ9̪ïÍ+Û)•„d³€73BÕp‘—rfs íg›X§ !gÛA ¢‹Â± élM 'Õ—FèIX{ÛDJ+3ÅÑÂ5šóÈg½Ž¦0>Uƒ]‡Ë°ÿè8U†³S€ÉiÅr°iíEð–«nƒ».½®ß| ¬è„®RׂºÖÐ à œ˜Ú‡&ž„ãÃÈ̘©MzDŸSD sšD°¸„$ÉÑ.‰AhL­ùD›E0»ZÅ1‘aJÄw¾ M—ëVkf̹±pB—âlÞ+ˆC‚S ‘MO$¾ë)Ðj²®|£QÈ'+ðÈŽ)Øuh¦±C½®(rò}ð“/}¼í%o„Û/)tº–¾Ð™‚ÒVyǶe·xjýèÌ!xvì!Ø>z™Ü5š…B¶KM7ÃpI°‡ApÍ!/ÁÍë„*ÔšRž€/®È¥E»›g$=“oÒ˜Œ 9“ .rtž2—0Aî]Î1€Ó,Sd‚t(U= FmÖB>GG«pß“ðÔ¾i r]ÛJo/*ýýž[ß¿ùêÿ×lº²£ ¯‰yEÏ&ï¸uÝ=°÷Ìá‘c_„gÏ<•†&ø’A˜ø†€Œ&ªª |2J5S]1†~É‚Ôr&DPëð÷J H¦„Gƒ°‘ óÎÅKt9kl»œpR<ÔÑÄ ÕIٲɼÓßk UC¸÷‡ðàgav¶®Å¬:Ôùåi¸fóUð'?ýß᮫n?ç7Aý–᛼ãÀøcpÿ¡O®37íøFsj4 èu¤‘…Ù«@.mÍ€hdÚJøÇƤý.EOT6Üä¡; eU3bTGa|ŒKÌ0‘{ K&ƒ©1Ÿ8S…/>xžñ%xAy­ª$y ~å•ï€÷½ù7¡¿»ÿ9¿!›¯…M×À£#_oü(Œ•{ê<Ÿ4CQ@“Ѐ=¤†– C$°úW%€ÎR`’­©ÏµäPz±€‡ó£§d£Ç©õ‡˜'v®Eq!§T9)Z?ެŠy„‡çàóß9 ““5ŸÀõ¨V '_€þ‡÷Â;_þsç×]Qs¿nÍkᢡá+{>OŸþ6ä3Eõr6Þk· ]`›ªºWÈ“éÂR©U¼óµ{‘š®B}FÆsfÕcÖÇPŒ<`x„ÁLˆx&âF•ð'ÎÓAÝžÔÂæ¤ƒÝ³Õý7ƒBP° ¡¶%EÔîžUD>ªÔvµIóØ"ò¾b|æ¿üxÕÕ¯8ooÎ@i%üÌåÿ ÖüÜ{ècê'5<—œŒwp¸‡Xëœ2aþí¡3pøØœoÊ4¯GÕYøã{~n¿ìF>S•1˜¨œ‚ÉêÌTÎÂLU™@µ ˜©…:Õ|€¹¨t;äRhÝC.((®¶“èK#ô$ežÍól%¹#¡¦RŸrˆW#Ïýk—òøÑîøÜ·G¡¡ÛBe›ç( Õ_ê†ÏüçÃ+¯¾ã¼¿AÚN¿mÓÛѯ†Ýó~¨6æ §¤;«.Ĭa”¡ê¡™Ù:l?0 “ã<ú«+)ŸƒkW¿Öõ]¢Ž(8Y©Ï¶ŽÉòì:ý •½^kTù(’d$™[ë(ÀSuØ=Gº'Õë°eíFزf£8'ô†a¸ëØ8x%lºÖs’dÏŶ޶€Áf3®&ŸK t[²éùÁª$IK$q)`¤júCÁœX=DäE¼}ûÑ 8xhF‰ö@ y¥ o¸þìžß~AÜ´Ö¾n½à-žml¯^m2Z4¬#„ÙrFNWÂkÛh@¶Ô×®»x‰3‰”ãZQ§¦ ç:OUu—´)[ÜC¨ðŸ®(u%9 /ä¿7BiÕ¿|.û•áÁ§&ÚèºwnP‰ú¿üÙ߃¡ÞáÌ»ëÂÿ ÞàEÑ…AjªÀ0cmŸOÕáÌdÝWÛçé¦^ƒ †×À¥ë.Yœ¦gÞ_Š)³Ízd ñ»‘²ê.5iLk{ƒB«9€L> •WÈ{¹V#øê#gö¦~{nÞñÒ7ÃWÞö‚ºq¹l~b˯Aw®O©ñ5Ö”aoLàêTÜãÊ>¯ê0à fߨÁÕk·@_Wß͹µÏ6™ÉÈ|pâDŒ=ŸX•ü±‹ µu Õ2ˆKK¶„`²àtölŸ‚ÃGgü°ÖùQ¯Â²¡•ð?ßðžs²˜;Gž¿¿ï_à™#û U%13°^IÆ›¶Þ/ßv#¬_¾>Õï[Õ{¼|ÃÛàËûþŠÙœ\÷\(â¡_щ=‘[£$ú­j¾‹ÖÔ‰iÃ,¹RDÌ%@å jïFrBçÜš¶jÉçÂ$£ýÄØ*$fK"ÿïŒ:wz¶÷=9è[Þ¶Íßsç/À†” Ì'§÷Á‡ÿùlŸ9Ÿ…SGgý¹dÔd¾þw°|h5¼íÅo€ÿöêwÁš¡5©}÷ͼžý6š|ò™#-РŸ•+ÇO@œ6uò%¸~ã¥K4Í¢ÍAˆÉž‹Évtc ª»Àm½×Ø ®ÆE‚jyðæ†n _ñSp힆±±@°‡'•*°våzxÏ]oïè>uâ›ð·Oü üpäKÍÕáæËVÁ¯¾q#¼êö ÛÝ£&Ø ÐÕ £SgàýÿöWpÛ¾¾ûì÷ÒãÔ™"ܾñšåñþkdš+êŠ7Ú>Ÿ®Ãèx­½ šhûðà ¸fãU‹·Ïi(¨–Çöfì}gçD蔑i{q­{l-•¸ˆ9F•k~™v§ÍÎ5à‘ÓÑK)iþKÊ6ìêØâ=6òeøì³¿³µ)(åz=b«TÐh4àökúàM/_Í|¼È¼<@÷ì9¯ý³·ÁןüVjóØ:| \2|«ÂsëjÍÔÔ„”}®‰¼16ÿñã¿•j9•9m¼.¼É‹…ƒ•fë+¿Äƒ,òìó`i.ýò¸qýRìs£‰†ØÂY(h¸fm›,‚À…:%òh¹ásá`ˆ$ÛÛËl÷㟯Áõc§«pðøœ/Íçç¡+<æ‹ð‹/þ©Ž-Ú÷}On÷«À × bþWèÄN‚W\?½ý9_…Ÿ¥xð™‡à£÷}:µyݰúu^Ú(‰Åãý×´Ú>5S‡‘±j;Ù‡üµëí„ë6_½xs®ÕsÎdæ(„Ã"“~ 1µç ì½ØÝHÏFÃZ¸¢~Wmr†ã7‡®ÜúôYhh¿yð’Jõ¼|Ý6¥~ÞÒ‘›¬ŒÁŽ}ò^僀¡µŽáþ,ÜtYŸOèAÈà}_þk={*•¹é 5«z6C]Çœ[’G´Ú~êlÍ#vÓ>¿tå/XfI›ÀŒ¡™9YÌ7‹¡˜÷ÝX¤.qo©U“ÙÿÛ–#-EE!R‚A˜Qjñ³‡fÛ]óŸ­WáMJmÏçòY°gN~ ÆæŽ*A˜àúÍß]UÄ~Ó¶è*øEâç‡"ô£'Â'þB*sËg‹pÅò;üì6KOµlàöŸ×Œà“Z®½ðjÅDs‹¦q±¬“„ž³ÀY –x°˜¦ n¤ ºÛz°E†[ãZƵjÝnݤë¿UõÔíR o²\©ÞpÝÝY,¢:A 4Ú §VÛ÷(ÛœªML¾DºdÍEžêÞ‰qj朘ÞëKsª£°þ`ò„ç•›»]ëN‘/ÀÓ‡wÀC»~ÊWön† ýW)š­BW1]êû¼Ç’ÿHX†S“°{dÒ‹5ÐÕv¼Úyú(vÁ‹¶Ü°DóÍhúHF›)©±D”5÷NÀE(õ±w~tq,¾”—ÐB6?†×@ @ìÍ âEtU°÷è\”¹¨Ízç%·@1ßÕ‘Å:xöI˜®õ|æ‘„¶*mû÷Ö¥¯ÎÚe8r¢Y²©YÈ‘±}þG_ójȧ1¶ ߟ}ä0>>ÛüþRo½å•pÙêÕðøºïÂÙeÓpjnÚÓ&fg&`˪ °iùº%Èo¿ ©{†f'¶Î94kÊ“€c–ãºÜz—uªûÒ =Žø­þô8ãžë)ÎwiшñØD NjÄ8c0œln¿ä–Ž-Ö³{EÂs4ì\.`ý¶‹ºPåEëJpäØlíÎæá=A¹2ÅBiÉó¼xÙͰçPž}v  k›Š ß}Ë­ðÓW½^¿Ô¨CUÿÔÜŒNœR&QJÅî%¨‡YVëT¨ê{‹Fç]{þ½Fò{ÐéRYDÞQj!²’ÂIn,•ЭDŒ|²õ\&‹D7o¾oŸ8Q†ŠŽèÊ\xjÓ.ë_7m¾¦# U­Ï)µ}Ÿ·1yÄ—©äb”YÖ­_YÌeÂj¹ìÙOmk¶,y®Ã]ëauïzx6?Ö®z«×7›QVC¥}'”M®Kk ÷yÇRÇ…ƒ×Â;¯ù+Å<ÊPnÌx$çjS0S÷¢öfjêïI˜«Ï¨¿g<†0Uƒ:UÃ1îlÅWà÷‘¨E¹‘¡KEC¤b3?³.¹=yA¿=2ZªJm¿xíX5¸¢# 5Q>“•Ñf•ScÞfv˜ÐF»ÚÖç”)œ9ͨ™X³³Sðƒ½¥Bèú¶^ºò ¸¯þˆšKñœm¦b®Ç ÜI24ák7à—vžý†WÎZ–âR—V´›tc`ÊÌ4^g2‘i.öÝpºÛR©u4\àЩŠzƒWµô†õ—úˆxÆ™òˆ×%ÕSÝM°™>`ŒËGÛ°=]J‚öå}@®eÝ §‘<~xGjóÕi±à¹)Fózn†.,Ù•ðð"©Ùƒqó1Iœ‹#tZÀ¢AÜD2‡nU AÃFçš ´/31­+¢ÔÚöyàš/¹øÆŽ-Ôèô¡vy+DÓææAFðû /X–GÉy—ÊÀGw§æ ¾eëPÒ…#Îs€Š a˜z¦Ù'mFGԗ趪2A .¦­F«·&i¼®#]OOÔ¼Œµ0óh@©ÔW^pqÇêôìÁh-6I­‰Dn’IÔoX>˜ò3%}: “³“©ÌW÷nß¶b@tþ$nŒfBtÞj,Ï?B—î…ï®/BÝ8à«¡­–yE&tè&錌L`õ:¬\ «›Z™Puo J°ľßh¯ºë`ýFàÔLŽŒŸ‚3)z±Ð—ëäí^˜®~)PdT«!ˆ–•v6z ª»MÚƒ´ß‘iÚGa©N‚‹(’ù¤£G=·šiŸ«Í¼qÅzêë ¡75Ï>×E&ùj˜l…lý†ž¬ßëÌ`j3•Y8pêPjó¾^1¡C qs^%›x‡H4qöìüõÚ7wbª¾ÙÍVÈ=‹¯Zš`è˜í°w€¢„ZcCF g”Š6crvJ à*äóé„®þô­Cqù:(æJ^•­þá?Â{¿ô¯7]W¾Ë›KA½ñ¾7ÿ¼óŽŸ_ÒwMãG½Ôk†×@CÝ»¬ú‚œ²»´k4ŸÍ{ß§š¡Ÿ;À%4ÄtŸ¹Â2$t¹ónø} „j5†ýìlO-¦z¬z:¥{xS½S°RI¦îbOÇIÇe“U]$#ZN,|;]Í¿Kk%hwŠÆg& \«¤Fè+ûÖÀ²<‘i°§¡R­zV[¥Òô`”§alz|ÉßµëÔáÃÿ.ÔêEu?ºa¦Ú€n(À`©Ó³ƒ]žÖÐ[ê…Áž~¢s¹Ý°£ìóÌÒìÙm¶wr½xBGà{¢Ûjõ·É‰‰yRÉ(#Õ$ ³3uˆD ©c•’è:늯â‹\M­(ñk½¤»˜æY«'S•9¨¦žõWyejÍZqä1ɬn¶Ò{óJêf—ü]ƒýE¸hCV]K_x¶©••d? ½uRó8毧bÎSÍ’Zùzr˜O‡»=²þNÌ/]¢Û8Gc8¬Ù¦ …°WŒfÐè3§u3ÀÈ|Ê>ï,¡ûÅÔ‘­wÇÌŸŒVõ·®IÏ©îãšÐCµÙ—6zòC^f˜§Ÿš]åjÉZCC&¨{Ði!g|>Û*~nº¾¯6¯Œ™ökFWç¸ÂâXZdœ €+Dá¢þÖ0R湺Áu%Êå°²j`eGI»Öˆ©ðÊÏ•Y$ÃÕ¨¯ÕUÄhbŽNbSÔ2§ˆ=­QÈ” ˜éò“GÎ\jšæß§ù¿ƒµä¤ÍdJk‹iä$ú]’Ø\]wnÿÏ#ëp9¡ÉÍ ‡ÕýñŠ2+«fÕÒæ)ÚÔQBoÌ€œÁcn4³iFU}ð{ÆEªÕ ;–¡g¡g{üTPK±–THï½t‘!ê, Ó.¤$ÒÇź”‰É ߟ=I})‹-ÌéµÉW­5±S”‘4°vø‚Ž.†"tlýàLÉ&©¥è¸” Òtså³]^î7º¨ÊÚGj fÜc)„öJæ^°p£@²«—¦D'Fk’26Q²·P`ÄKðK×e>êýNèLž_›å]f%ˆ&Ý„TxTê9AwWÆ«µsë0‘R›Âd ^½w`“Ô…#™ö²”Ï€1×àÔtæõ€á4÷¥:çF‹­À î¬Û£¶,E3ôD¯Î×Dj ù —º:·Bj.º^UN2#¹ˆ'vLJA#½g§'Ò»Á˜…b®W1—º½JPjÒ…rÍœTÚ'³1ì1M\òZ‡$z]£¡Þ ’аáUÁ³Ñ‘Wj¼:œéð"!2)§dîXÁE¾|àk?ͤ,š‚Qvlˆvˆà!¦21Ì9Ÿ-ñ…ã,\ÍR=®É¢Ä¤ƒvY$WXâÎzÚŒuGŒÚ®êóY’ïpDV0 %à‚—àÚF/x—¦¼c{ráYÙ„êR׉u;ZJ?€˜çl5•Œë;½=%‰Ž`/4Òc‰zCŒ‚5̦Ð_KôF½ŽêÜ‚RÝûJ=]¥P wŒ 2(ˆøßÝÜúAÇ«r|J­QOuúy,ð8vBåEFâÚ´‹ƒ(¯cÐìCŒ·û¡/RªÅªJïgSÍG6Öë¦ltªœF ”ðS3"/¨­£ü‚É9loÃàÆ¤ðÜ͵©×`lúLª¿¡ÑîÁSÅäÂ]s‘¯ÍÖ„zl~u'½;l£KRÍ"Ä„>®šò€Ë9**R©ÏyÕe<;Ì(´ÂLl/œ_íuNJ—qy!¦ÍïEá»1]îÈr(„ªr¥ÄHÈd³rε¶DB«þš„ðc ¡€¤MÎ œ3MPRk’pEŒ6›Ä¬y6z~ˆ_ÑŽp¦æ“PÕ7×ôJw#e0-4J6aL¬»,¶êdp“Étι‰"£Ð"p~w¤-p¦.À$ésES-g¤1‘Ý,%‹À(‰HÕF—4p”>`–ý!áÆb`C%)a0—sb®I*$ í’#Qsá8<×ÌŠ:«1Ä3&¼2ÔNÙXˈ@b®ºžØ|[ô¦!‹p&N•“bf¹Z`‚äg˜Ë¹3Í(ºQƒ¹ôDÑIµÊó“@tkŸuãæ6´ ŠñÄ0q³è1®ÙH1"y}ÝX ¡£Å>gC`1€ÃuE’K‰=´Q¤ÿs"œÐôaMd‰Çl¾ÇÏ:®º'ÂQÒÐ~˜šþ’ŠN ±sÝp"Mµùœú¾DÕ-Ämŧ˜Î¨d!O¢¨4Lj2Ÿ³AF'X)âb¥éy‘Œ•æ†B˜ ,ƒ FÌA€QÅÝh ¸s”¾xB7 :©{ ƒÄj¤)²ÜßÑGÓÖ;{ƒu>·×ñSl'µ8P£~AÒwÉB¶½|BçÆ¢´)š9bÊðÚZ[V SÝÓ—è‰m=)²‰QÍ0˜ÙÖ~½á5=È@&Ÿ‰¨äI€FÇHûÏýžèe_—cM»)™~ºåTõ O6¡ б †ašùê` ž17 “è‹'tJÀýã9n¥®Fo²NéÌ ávËd \ƒñÓ:­ê:„µM9ÁÇ` õöjº éfãE!A¯Éi]j:II¦EiäÀ·Œ…W]4 ´ÑˆßhtÆ …MBXÒµ0Ý¡´Ñáe\}&¨,júM Joª¶óŸÏda°§¯³hÜ9ÿL #uä)R”i’ â¢ÜîË%¨îI²0“ØoÁçðP:yF|õ=:âK1§* ¸üj)6-ÙTØúé:·~v¾^|oÆ%:UÃ3HÔ|c±’I(JfN¿ɦð¢ÜàÁI÷=‰ŠN å.ÝËpïÈe3^ϲˆ¾R†Ós3”N¯Šª¸aqˆî42‚jÚÔìÇ´cgÁ1m£×Æ¡’½ @<‘F´ ’‹È3PÉt‚=%B·å¤X‰ßR©Âö>µoì|Zg&ÃB­ÑÙ&‚…\aç26w0 Ót)bLÆU¤íwÚ¦Y…njÄÞŠ™\”«ÊÚ8d†‚Tf•ŸÐÇ¥/Г€q’Ĉ5ê%‡<…LŠ9„bm/GGv^uGN¯¦pF[PUµšÊÈ'péGe£÷võ¦6w]Bª\jU­9wF¨C†”æì@Smg Y¸¦ )zâI¹j…9YF~«á\£¨·zœ*Out‘J™nàüaB{5ü»QI½™ÙF8µ©Ý Æ ¦Ç¤¡×<“›×é‰wˆVâ¢ÛœƒÓ˜ÌϘ‘”ÎN_¡sn%°s‘¿1F÷\ܱ¨],!§¤y> ƒA8ÝYBÏö.ÈæÂ|1ô¬V'Qø×S¬0£ûÆé­”ž\´ÜgÑå*ÄŇˆ#ŸSáÆâUw&C“ÒhÑ÷IJW5™ˆÁ¹7×ëWƨƒã)VMå†.™ÌÎYÜç’ýÙÖV$á“Íä`¨7=‰^­—›Ul3ÀºÙRUÙAP׬iÊRJ«)eL¯ JÍÿÜHÇF§„RÝjž•E¤Øñ&÷Ö¯ö–²¬êwbj¼£‹Ô•ïþв•Tå7¢~uj¶Ñì^Ül.Ëû–§'ѳP®Ï4 ÉëÇ” „,%ÕϬÈh±!}®ÄT:ÝRó¿ÁÁ(¨@¥´!x çŸÛß•e0EèJ¢7:[Èv *Å!€¨¼‹ ðZ)›MUЖëšÐ§Ãª{ˆÿ¤L¡~{ÈJéNŒºˆhøÙêbÄUiDÎFOW¢'ì"ª¼Ðk™«+i³Ü–:}ÝF"eáìÌ839Ö±EêÎ÷3Ä— ê…™åÖÜüúcÓs ?ˆ?Ä, †ŠÝPÌæR›ûTe¬É…8ûN„¿¢Q2¾ð“ hqM1 Ãucá£Yi}C3âKÿP\CTëíÎD d2013 §;Jèƒa»’$Õ†)thFèËÖr½Á”é"e&””žMmî“åÑPä 5µ>‰W<Ã(°I–Á˜@9È¥@è(˜ \Eîo.`QpS‘¨kU·»”,dÂ7WúÔìtG[ºr½ËäÚ“1¡ÏÑ íÇÔk^ø+Ec_ûJÝPÈ¥'ÑÏ–G€Ï-è0$² V%g6Y vèb‘4iWV*B—ú¬ÙZª‰ª?ò LÜ.Dô´\ Æu2Æ©õÊ,íØ"•^Êõùk$A Æ,n ádÝdÑëõ`”°nÀ@Ï ×}&­1^>ÙÄ(z+:+Ô†CÆOªJšŒ¹8 rÄžºên+gn¢`J;ÊLSå9´.ééB(3>Zm ï;ïì(§ƒf!ÃnòVq`Ê<ûqõ:ÀÌE‰¬Q‡¡Þ¡P¯´¥J׉ʨº^Ä4à´Q#ŠaúŒd!.ˆX“ΩìiƒqqÜ?ˆ„¶ú*b8j‰8`N^Â’¨¨¤ù@O6`Ñ>÷À©Ã“蹯#©'ÑžbqqÀí…«7¾êž1~¶zý‚¡Õ©Í[£íSåÓ^GÕ¨ Ýa! t1Õë$%v0n8ßyçlt“>­ ¶K‡Ë^ s P ‡Åê¿VôØû»{ìxÇIÌtÛ.¼H«ç„šñ5%Ñ'fë†Ýégî¬L1Î}¦6éIô¡“ @¥%ÉT83,Nd7‰ð\ÈÆt„{ó0¡4@㆛µÚ%Ä.¼#ÐË^[>”ÎMÙ´‡FÀÙ©3[¨Â ˆ¦œ"ÿ{ˆÛÌí5¨6tÀL-º/³9X5^°Ìøìq%ÕÛ -!¯T§$:B¸$çO¯­­2 ÿ¿“îKWÝ¥õŒóŸ³’ϸÁ ŠRA?îÏë8щÙ,ŒŒŸ„ä†Jk»)éŠB„êrXJÒÎÔ¡Ê4ŒÔ™kk‡×¤6ç“Óû¡Þ $¢d÷t©DNdéÖ‚‚Y3 „[®ÊtDA%Hy4ºŠ2  T) ×ëËú²P*eÃß­DýÌÌìÙß±…ZÞ½±™®*øC¿˜.íÚwg§ê^R‹Éì²ù"l^uaz„>»¿Ù –áÊ!°°Cöyˆ¾1bư„¼-jMÝInåÀ¸EH}¦„3Á¸yXõ×.¶Eè½½Yhuní‹<ºÿñŽ-Ô`i3]M›àïG²lrœçI0>£ÔvS¢7°¶w–u÷§2_‡®%z&“ ak§$Õƒ‰LdÚ{\/=€Í`Ó°ØŠÎFïœDÇ$klä c`Ç…î)cÇ.*íÎ+µ}Ýp!>ªNüÑág;ÆÙû•Þ[ö{›Þ.RLB=ŒMÔÚóoQf .X¶R"ôÙꜞ= YÌó4Ý Ðš’˜x\ÿ`´Ê |òåºX÷%:GÈ Kw ár¦3k*˜©¬º>ä+óÑMšËÃSGž…ñr½…e0P\­oÍÀ¤ÀˆäBõ¤¢TöSãµðÊë÷ë5غjsjÁ2'¦÷Át팆0e“+AýŒEq4ÖtJb?Q®(…óŸ§Hè¶Ôjb„ñ‚Z%Y|­ì©Ú´]3T€LѨ›ÉÁá±ã°§Cþt¶ºªûB_¢‡’+LIcvŒ¥vYbužáNŒWØ +VoJm¾Ç&wBµQn~ £)/¥' ™€™HŘ„Mˆ)¾iÆcÐúÎ;B_ }ŽñB,¾ç5ÃŃî5"¦ó&y€Üª¡ôöäÂê¯-­ÌÁƒ;¿×±ÅZ×¹E= jĆ—jgÁ™³u˜œ®‡ƒeÐgT×m¾&µ¹œxª)ÍÏe“:J‹1L˜aÓ—‹Œ:ކ·ÆÖÞÉJtN…Ý; 2'›Q퀖¦íîR6­,‚'Þ ïÊ·wý¨c‹µ¶÷b/eµ…dS 4zÃëºwÇÎT V®‡TÔë°rp9\uÁÅ©Ìsº:G§v(3'o…MB8b› saæãPŸ±%·Äh{ó©±ÎDOŒ“‚•’T•‰-ók ¤ˆ]Ù,À…kŠÑ"…<´çGpªCþôåÝëaYiÔÅòÒF3 £2¬n(sp¤Õzªe¸rÝ¥°¢?`™£Ûa²2ÖŒqg֘邕h&è1¢(a/Ô-iÙeº 0Ú´¥/MuGm€NˆÃbôÃĵ‘þ?×vî…kJŠ®³a†“ÉÀèÙSðЮtd±²jo¼Þ¯ª*ªŠf@¶’YfÊ Øw|¼¨™Ñ5àU—¿0“N2Ëî±ï+e§¨*#xRöJõ†”ÖRh'ÿ @Ì‘N6¦¿ÜŒW&‰àŠO¤)Ñm5ö¥*±fÁ Š#bTßh­¾daÝŠ‚¯¾ot½_|ì›[°K–½Äk¥L-ͶñÚÏç¨ÀøY¥ da¿JÌ—ºûà5Wß‘Êüj*ìL}Eب1¨ºÄ1P\ݹ/ 7"}ƒ_ŽFït0ö Щçç@u§f7/ÅÙ’AB¶LCÆ•B~™ä‚"œK6tGùC¾ߨþŒOw¦`äúþ+”­¾µY+]∼/øñ=3@µFxßWæà%Ûn„KÖnM„;û8œš= =ÇwÂc&i¨5žu}—)fSÝ;íÕ÷˫͟ïÈzÊXæj³^p¿'Ì}a2WGõIÇJ™_’›`5*&uŠÌâþÿýZr)õýâ %¸·; åJ 0d6çunùæÓ÷Ûo~}úœ1“…«W¾ÒCµ!S4N kgê‚1ÇF«°óàŒú#ë÷Ë·ýL3‚mécû©û*C1Óa>Úb(yzLó—àtJñ×®~5ød˜5:5«Ž/+"?tdÖ'òùéÏLÂõ[¯‡?þéÿ‘Ú|v~O=¹lÑX‹vˆžné6ÔŸUk– ߆LöŒ…,™h!›Œ¢ê;ABÛÑ…:W"Î6Å{c[Ñá‘ðÐ>õ«•ú¾bYÑ7ÜçOURjdô|ä;ŸêØâ­ê½Þ|Éÿôš0Vês-¦–ÏGäÿö½qxä© ?˜gx³pÍ…WÂÞó½BiIóïù´‡^c$š¬MMú뻋X«³ÿj{¤æ:«˜Ïãž|nvaćQM¤£¶J(n$'t®ì­ kÐöfO@#½yÎÍv”a4¼zï/º\Iõ†ñ¥Êöýð·> 'ÏžìØn¾~ö²?ô^t³lŽàÌT>ó­Óððcg}sBç°—g¼ã'oþ ø÷ßü$¬_¾>µ9ì}@™A>S2ÀÀðÚêgÚ͵~u1J\õ|cÇÃÏñvÄhÝ÷±;•½óª;ÜÓÖ÷žã¼hÉymÙi\±º ýÐÖ*J:]³µÖ¬*¶ :è#W€c'Ã~é/;ºˆ]ï¼æ/áîï‚Ç·7àŸ9O<¥˜‹–òÕYèÎåáöËo…OýçÿŸ÷ÿ«V¦öݺ[ê}‡>n$€U ¼S­ApÙúdJ†;O­ÕWŸº¦ç¦žcZg6"o³Gsœê¾x0.iƒ3ÜÑäÀPÓƒÀœ°ñÀ2`^Ù“ç¾óúø‡¯ f’–º•úþOðö—¼®ÞxeDz;?/ßôXÿšWÀ/]¿Œð^ß°ll[½¶®¹¨#ßûý£Ÿ…Ó; ˜ëk]/l»%×®(Àæµ%سZ‰øÌ|zØw|/üó#__|é[žkšˆ(„ÄR¸w9i¿4BgÌjV}'Fü‡R6…ää|Ïm£A‘Ã>T-Õ/ÛØW_Ü«¤êDÛ_ÉÂÌìüú§ÿ¾úëWös¡£ zÑš Þq.ÆÉ©}pÿá€|¶Èc¡&óö¼¿4·(SgÏ¡™°ý‹xÿ×?o½å ©¹üf£sš]Œ=nx:ÜXŠê.™É°$Òmø"r¯àçö|]í⻕T ÄÀ{ºáÞ'ïƒ~ío_07®Þ¨Â—÷~¦kãá VIéו×.¿K7(¦¸­OýŒù<½ïIø³ÿ›s» 1®Qîvôt}‰`g‡ÇÖ§hk&àœiDŽȗ &° lMÛÚ}ôš yÁ4á š.øƒù<¼û‘Ä»÷ÀGa÷™@!Ûlv»ní¡Sf_}Ó,[Yj»·N%øý/~¾ñä·ÏÉŒûm£t0"³'Œb$€²pp#‰NW,Tæy!j^@U æ{7o|YI««6wÁ˯lKu¯ÉC¦fgàmûprüäóú¦=1òïðÀ‘h92&Žqc Dk?}=Yøù»–ÊåJšoú˜ÍA¹V…Ÿýë_…o<ýi#582ñ |eχà¯}˜xB™…ž+Fâˆ==B'a=)n}M ÈP¸ÖL‘çL8¤d·êªkßú×õÁÊ^÷Ú¢Ìÿ%­vÝ?ÿ‘ÿ 3åéçå Û3öø—Ýï÷1&kƈ" ¢×iÅ`ÞþÚ•pÕÅJ×Idz½²™€×}ð]ðÞ/~fæ–¾VµFŽOî‚ûþ=|ôñÿ}âÝðà‘„‰ªî —‰†¼rê"¡ð»\¶¥ƒqhQÕYpŽŒÒ>Ö8Z³­nHU£ä³ ÌQ˜»ã|ýwòIÞôÒa(Ï5`÷<º¬G±¾þØ·áûïð÷ïúäRlQÜéq`ü øìÎ?€*Íù‰+œo£@¥‹W«ý]xËËàê­=ðèÎ)Ø?233yµv5øÝOý)|âá¯ÂÛ^ôxí5wzé´…B|¦Ý\uΖO©™ƒžÿÈäv89s*õ/L7‡y?t8òÚì̉d¸Y ‰N\ê­ëÔ²4B þ!½‰Ä@‹úؘdÜ8JÒÈ0Ú B‘ÔÅÞrû2øŒú{÷é6ßÕŸzàsŠX²ð‘wü1ó¥óþFé„•/ìú#˜«O…³ÓبA{ êp;kß·®Ï¼dc .^_„±É:=U“gj06UUÇ!øðÃÿôÔÇàÒ ¶À¥+6ÀúáÕ°¼9¬Z=01w ¦*cpvnÎTŽ«Ç“¡ÏÕ§½ïÊ@ÖËW/xyÁ>u†‡%ŸLl0]™’™‰n$ô£$CŒãú­Å¢©fž:,€ƒ·_×9ë]%„·*;ô dà©“~}JW/|âþϨM<÷ÿÌÛ´çëxøÈgákûÿÊ qõ‰œøâŠdÔ©CKúlëcóm©Éï§ÞêËÂòÁîÈ©5P© †=5mF¨ÇÈø†fGÔ„kƒ…Öâ¹\Š`Ìd3~—è)€q溢ÀPCyè¶Ÿc Ä#“½dØl¡’Ð’+ ýÝ¢8¯4ÍŸ¾mî¼iعÖ$‚R|ùÑoÀ+ÿägá{=ïnÎdy>·ãÁ—ö~À#Ĭ—K@”@B¦ ʶV«ãŒ–)mH»àôQu] ŠÇ’WNK±–ÐZ/´Ž.ïЭ¦‘O¥î¶]\wF9÷ZJ„.u@‚iSK…’8æ¥ä³A_tã×›€ò]7öÃϽj%¬j¢Ì:zDIöGî€;ÿä?À¾ò×j“WÏ‹óÄÈ×à£Oü üèÄ—£*|å|»fséy†| 8[8èúŒ P‰7A´}R°á1í¨ó²¾.`fÉ6ºä?·™‡`´Ïeëx[ìxÉ®©xÆBÖçG~]Ò9E×oì‚õËóðÀ““ðýí“PS"?×¥ìË9øoÿø^øâc÷Âïýä{àŽË_öœÜÝc߃‡”ª¾ûÌ÷¼X€b®Ç¾N¡5‘T^£s«d»s&€ø½”`^‚Ô&FHcÍß"UE§º/ÐmÀ›Í~7+ÄXªÅ„«„0¥¤ÌŽ\—ŽD}ß´Ÿ½Ý¥ ¼öEƒpíÖøÞ3Sðä¾i(Ï(åF©œ÷oÿܵ÷1xË ¯„wÝöV¸ý²[½ÐÐN]jרÃðøÈ¿Ã¾‰G=?³–âÈùÆ1†¸­œ™[sdމ/ç’JØè5Áš6x\?5NšXpGé)€q e,±{‰3*cètK3=©M•àÛE«òõFV çá§^6/º²¶ïŸ…gÎÀ‰ÓYh”«ðéû¾Ÿ~äßáe[o€{n|5¼úê;`Óʩ߀J}þñéß‚½gè©ç:n=ÒhÑ,ØaƆÌä¡D€ L ­,Î{bÞSC‹û~)"K2Õ\ØkŠª;ñõ´„ÁJ7Ù²±L©-uá$A½3³áB…/›°V÷¥ÊÊÁ¬¹¾^rU?]…Ã#exöÈì=: ÷ïxXIùïÂ@ÿ2¸vãåpë…WÂ/ßù‹°nÙ©Ü€|¦èU«ÑD^PRÐ…M^ÇÖ†±jøæ3¦z#t÷—Û6ü¼Gè~x E%,9–t­5 ‰oÐhÖBÑr$3"´yÃÈ„ßÖ³=éHz)„nëxœ¡£@~ˆNÄI &*kAsâf¢H¯>eÛú®¨Zœ+Â{K½€…îþrËš7Â\mJñ– CÀ†í$, 4Hê{(ÜÔl©,‚d)ÑØÖB@ƾ‡°}jøswGI/U¢s_¢|#¦«Ç)ÈIBmoÎ>¥<ÈT9sU¯i?û…k‹ÐÝ“óãâçG6 £c#pïöt¥ºŽ„{ÝÖ_‡×n~ôVx¹Û•Æ,”kÓê˜iÓj*5¹Çx¢î—¦jŒÍJêàa VAK!›”hˆvu‘ˆÃ*4gÜçHš‹ËG§`&¼['Œ‘l¬Å$ÖHè!†¥ºw¡5öá¾lZS„í:/ÓˆÏþô¾ o}ñÓå¼™¼T©ð×®~-M<ÇÎŒx)¢z””61adz¯ŸÍ‰`ã~7 ÒÆInÁžxŒíI1Fˆ–µŠùžÐý«ì1úƒê¿Ãޤ—JèLYmkH5Ù>,¹G,ÄŠ’ÉUž16"IX€  \u:Ìýª‹z`û^£œR¾÷îüì>¾¶®Ù’úé- Ã+ïðs|eÏ_x[²ÁN®VB^ o”,ŸcëÌä"á\ Â$a1µ¶«×ö;’NÃF%Jæ¦d+JE(xm]¶ 1 8™j ÂYí½°Y¡h¶®+ÁŠåE¡›;“…é‰1øøw?ÎoZ]«î"@Q2õÞT‡Ñ¦Â“tmŒmk ¦¹BZ,'`UQ'Ì:’^ªž(‚l£qÝ\ˆ g5£êL)FFSG–!pÜ–ëÿí7&D¸a[_<18 Eøÿ¿û8=yú9¸uÒÍ0¤;¢…pÔ”±ÖæõZ™oFÍÐý3" CŽL¸­Ðà#ú»ïunô´$: W²ÏÍ„ ´Ïo¤é¿EŽëpÄNáâ\aÁ$êŠâWk ¸ú¢nœ‰mul-À±ào:رU´¢0‰Jeᾦ».’CLô]Ð&¦ ÏxŸ¶3 BL$$HfÜ.uî®ðÄR=a…°ª•±…&¤Ä ´\ˆ„ÀØS!ÍŠvÔ646Лõ²Û<©<¯P‚}óïáèØ±s'ËÉTÍ)Ê,U¦±HmnÝ0î;ÀÍlÈ6—©‘²ë:õÞÿWuÍY»BS×1N c›1ê5J>u´¨Âf£Eæc£NÛž£îívÃŽ°q]W»ck³9¡îÃþ{_øós'Ñͪ©±9]n•œ¶V=öba¦¦€–„— ^dpmWhUóIGÊi¨îI˜%|-h/K1×bY¡`«\²ƒ{"`€öÉEíצ­®ËG¿æ–A(ê–áÞn=ðw÷>÷È—žë!‘mJ V!…¡&JUÄdŠ$*\©V“X ÿš:žt¤Ü B·U1â¤o7" ÄðM®WvØc´HôVHß…XBq_K#ð:_ý•7†¿ B]÷îOüì8²óêÌz‹É;ò’.8Å“$3Èœ‡Ù0SRÝ9ÏZL‡–†¡ƒ Þ.GµƒÝRo €¡àE®†WB¨F*mjSjQdƒH"ÊRó]ù–Ëzàö›†üd—ùsrE8>vîù¿ïc¶×Q²mƒh;ÅØíÄh2‘›K¼Ö—l ÉÅ&,ÕgY†î]ëËê¸Ïµeê¡Çjvo7ŠqЖ/¤¸”TNµ”ª—Æ%l›ßÞð$;ÀÝ×õÃ7û—©57g±ž<°^ùþ_€'>}nôw³œ’µ‡™™‡Q “«›Îb‘R”™HÍ FrDLí3ÿ]GÂi:Æ¨îæ¹$©]ff“yc-i©DÑ„Drv“Ø®‡ ’ išÓi¾ºt´:*ÊFŵ}pÏ]+`°?¯D}³N|©ž>ô,¼â>ò­¿ïˆ”![Ì8—Žkº$9éjâ&fÑ .¿€„M!¢ê¶ŠAæw Eû>ý¡:ñ‰h_o7Ò‘è¶^ dÁ8À£Ä麊¼/ÝêGæêŽÅvÓ2=üycœ›÷¯¿ë «à¶¡·;ë|¶§&'à]ý-¸ëO~¾òØ×S­H£[QDaâÁ‰Ùˆaˆ7ÙRÎhQí9·`¦Çd8Eª÷©sß®)@®ƒe,>Öݦ‘¹±ˆ×®C‚Àæ³C8³ªB– §Ê‡’g>l‚†¿)I½^®6 ¯+¯ºenº¬¶œgáÄX¦fjðÍGïƒo>þ \¹érxý5wÀ]W¼ ¶¬Ü«WA6—LÍÕ&½ÔU]ÿýÌìq81½×«km²€I2¿Ÿ‹a4 .&QAVó>šJ÷»Z'"¢_ÔËâÈ·„N–û%í³j¤ A\}ª»ÆÖŒ±5Îæ†i$µ€ŠÚÆ~x€þž,¼äÊ~x‘"øñ©:œ8[…³“5›¨Á™©CðñÇÿ>·ã°ap9\¸òBØ8¼Vô À²¾aظbtº`¦2³Š°§ªcÞ117 Óµ1¯SélmZ›RÃrŽªšÓsÍÖ Ç 9NR¸† —ä*Ù2 (2fZ{®§Ôq::ÒM›Ð)vŒ W$F™@V€_Ø4§r@Ìw*/"o³Ænh¿Î\]S¼úÌ@o†ûKf@}zekõTë;`¢ñ LÖöAøÑ8®J­ÿ3ê ™LVýŸS*»2 (»À¥2!ã~DaM¸âÈÝ ó£1ëËdÔî÷µ“QõßO©ßó°#ÛNIô¸âœ±˜ÑÙÉ¢á°ÌĈ,ŠÊÀùöÙþ$A¢©˜óR>d¶´ÌLÝNXlÀÔL" S j$Á5åbÉ‚¸šœÝ–Èx,ŒYôÌìPïý¼zü‘#ÙN‚q¶òÙ¶æžì…„*¦œÍÖ"”A5 r} ¢æ2æ  Dà(B \ËfÆ'o­.•½6ñDH(‡@ ÝOѦAÊ ’iÆ®µ¥|°m”5†=ÈDðãê¿Û‘Ÿ+Û£q&'ñ‚vÆmÜÀ!ˆ÷›sgBJ$Žx6¿-]MÌžg\ç˜`Œ7Wož¸l»¶IÐQF²¶Ì k—Њh8Ò=#©ø‡B6V;xDÿ[_pdz® =œµf¤µQÕM‘-lR(ŒEiÃ*#·QQhç‹6ðù}b/® gÿ2ªµ-ã+¢U¡ÀØÔŠ’ü¶á…Ô×r8¼5 Z nh°í^uÞçÔ㿪£æ2ÒΡÇÕog÷X°‚«ÉÑ&@À ¬¤o"¿Œ_˜“(Ihªê6ÄÑÎ Y$fEÔf<¬¤BM‰„l5‹;‘ÈÒÜìñÃ,Å1[FòG“”Ϊ§§Õ9Ï€W ö¨“žU:œðŒ#Ëç‚Ð)†ØYu‰r#"ߤcÈp}SD’O”ºl”gwµ k»ImøΨq¦ƒEk‘4«¹c»¡Lµ^ÎÏ$ö s÷¿\=?©ªÇgÔkºiÝ¾æ¡ 9V žOª»¥â/ËBq2‚A›1‚sйi' ÕF‘xUœãTAÆÁž|Y)©)“ƒ1œÐÖÏÝdp¶Òºq¾p°¯©x=æ^ %HqÊ#\„#¾„ƧÔ9ûÕq|Ÿ·#èç-'éQ…1°ƒjaP•µL¦ØffD\šSç"µ¦±Õb"¿uÖ#hR°¼Ñjw•§në2ȻԹ»ÔëÇÕI“nË;Bà8“ÒgJCâ‰bÜL¬† ”%všàl®8†C4'bC 3û–ñèRÓ‚èfÕãé¦Í¬ýÐ;=) ¸ÇG»=Ü 7$ѳì~Cˆñ§“E…G82“YP²‰¤Ú\ÊbâϹ>_(œÇÙñ‚ÎaS$Ät)ãõx´éƒ~Æ'f8 NÛ¯„ø„‹s#-BŸŠUçcp< 5r$.ò€U+¨™Â ´]lÛœÐ,@0€0Œj2¦üNĺzá¸:ï¸z®mh!¶C=? ¾Ûê´ÛªntšÐß§]åàVB6%T$¹µTªgXÅQÄ”œJÞ²Y’Ì(1›?&N½ îQOæI´ý”:©÷u験nKºñ\º’2ð.µçÔñ+‰ÔvDYõHRHÀa‰: ©ÄÁFÚ#DA³`‚J¬šx½ÍØt‚Æ>õ‚îÛ½K]ë õ÷³1œp[ÏóÐý]ŒðnõÿYõü·cUu²Ø³0Æihó#Û®'áhÈÌÉâÁïå|û‘H5qå%aìkÚÎ{Õ{ÛÕ9ÚžßuUsÛÌç ¡ÏïóßQ4pF=¾?”«A6j3¥"1i£\ˆ—˜ŒÃ¬mNR‰gÉU`ž.ÕÆ"eC㤧nkPŒ`§š£²¥q»zOÇwkX]p„nœ—„îÓÀŸ©ÿËêñ/@ªPc upÁ2~v³¾˜<‹vàz“h«ëmoªÚÚmµS}@?ê÷*nÛ¸ñÂ'tŸî>¬þ×væ'Àê¢1/ÄÃKª{ˆè‰gA•Ü ‹^¤Øˆ’ÌZÍÖê¶V½÷¨k*‚öPsãÇ›ÐýñYС•Wô0$KL0'¸®l•XçãßU;ñ.0ê3%H¢ÝV¨ û€úNý÷pÔì†#ôØñoŠLÞ¨hëŸÕóeáÀ4I¸ «1‰‘’K(T‘ñÞ×RX§KVo>ãµ—œq¸y4ÜívÃúâÇwÝ­u¯M²mo!nd¤:”á5¡þÔ)”Zïôš¼à’£êÇÔ{®Ènt€ÐõxTØëÕãgÔq‰œÊ†1ªvÀnGœ?¨d¯§fûõÅÔ¡ˆPã3îö¹áƹ%t=t„×+þ‹²£¯‰ïÈѲÛu‘­nëÐÏݾtöÔnMäcŠÈ§ÝmrÃó‡ÐõС?¡ŽO*~¹!ÔÁÒ ¯Ú'Ñn%¡u¦•îÀ±K7¦ˆÛe\¹áÆó„ÐõЙV?YÈâ“_P£Ü{¼¼h~ûuÇÜpÃs8\Oi7ÜxÁŒ[7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà Gèn¸á†#t7Üpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpún¸áÝ 7Üp„î†n8Bwà 7¡»á†ŽÐÝpà Gèn¸á†#t7Üpún8Bwà 7¡»á†Ï«ñÿbbÅžÿIEND®B`‚././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4252968 PyQt6-6.6.1/examples/quick/canvas/quadraticCurveTo/0000755000076500000240000000000014532160402021055 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.625435 PyQt6-6.6.1/examples/quick/canvas/quadraticCurveTo/quadraticCurveTo.qml0000644000076500000240000001160014532151332025055 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Quadratic Curve"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 property string strokeStyle:"steelblue" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value antialiasing: true onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); // ![0] ctx.beginPath(); ctx.moveTo(75,25); ctx.quadraticCurveTo(25,25,25,62.5); ctx.quadraticCurveTo(25,100,50,100); ctx.quadraticCurveTo(50,120,30,125); ctx.quadraticCurveTo(60,120,65,100); ctx.quadraticCurveTo(125,100,125,62.5); ctx.quadraticCurveTo(125,25,75,25); ctx.closePath(); // ![0] if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); // ![1] ctx.fillStyle="green"; ctx.font = "Bold 15px"; ctx.fillText("QML酷毙了", 30, 60); // ![1] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4157114 PyQt6-6.6.1/examples/quick/canvas/roundedrect/0000755000076500000240000000000014532160402020106 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626868 PyQt6-6.6.1/examples/quick/canvas/roundedrect/roundedrect.qml0000644000076500000240000001171614532151332023147 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Rounded rectangle"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property int radius: rCtrl.value property int rectx: rxCtrl.value property int recty: ryCtrl.value property int rectWidth: width - 2*rectx property int rectHeight: height - 2*recty property string strokeStyle:"blue" property string fillStyle:"steelblue" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onRadiusChanged:requestPaint(); onRectxChanged:requestPaint(); onRectyChanged:requestPaint(); onAlphaChanged:requestPaint(); onPaint: { var ctx = getContext("2d"); ctx.save(); ctx.clearRect(0,0,canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.lineWidth = canvas.lineWidth ctx.fillStyle = canvas.fillStyle ctx.globalAlpha = canvas.alpha ctx.beginPath(); ctx.moveTo(rectx+radius,recty); // top side ctx.lineTo(rectx+rectWidth-radius,recty); // draw top right corner ctx.arcTo(rectx+rectWidth,recty,rectx+rectWidth,recty+radius,radius); ctx.lineTo(rectx+rectWidth,recty+rectHeight-radius); // right side // draw bottom right corner ctx.arcTo(rectx+rectWidth,recty+rectHeight,rectx+rectWidth-radius,recty+rectHeight,radius); ctx.lineTo(rectx+radius,recty+rectHeight); // bottom side // draw bottom left corner ctx.arcTo(rectx,recty+rectHeight,rectx,recty+rectHeight-radius,radius); ctx.lineTo(rectx,recty+radius); // left side // draw top left corner ctx.arcTo(rectx,recty,rectx+radius,recty,radius); ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:rxCtrl; width:300; height:20; min:5; max:30; init:10; name:"rectx"} Slider {id:ryCtrl; width:300; height:20; min:5; max:30; init:10; name:"recty"} Slider {id:rCtrl; width:300; height:20; min:10; max:100; init:40; name:"Radius"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4271712 PyQt6-6.6.1/examples/quick/canvas/smile/0000755000076500000240000000000014532160402016701 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626397 PyQt6-6.6.1/examples/quick/canvas/smile/smile.qml0000644000076500000240000001170714532151332020535 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Smile with arcs"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"green" property string fillStyle:"yellow" property int lineWidth:lineWidthCtrl.value property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value onLineWidthChanged:requestPaint(); onFillChanged:requestPaint(); onStrokeChanged:requestPaint(); onAlphaChanged:requestPaint(); onScaleXChanged:requestPaint(); onScaleYChanged:requestPaint(); onRotateChanged:requestPaint(); Behavior on scaleX { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite } } Behavior on scaleY { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } Behavior on rotate { SpringAnimation { spring: 2; damping: 0.2; loops:Animation.Infinite} } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.beginPath(); ctx.moveTo(75 + 50 * Math.cos(0), 75 - 50 * Math.sin(Math.PI*2)); ctx.arc(75,75,50,0,Math.PI*2,true); // Outer circle ctx.moveTo(75,70); ctx.arc(75,70,35,0,Math.PI,false); // Mouth (clockwise) ctx.moveTo(60,65); ctx.arc(60,65,5,0,Math.PI*2,true); // Left eye ctx.moveTo(90 + 5 * Math.cos(0), 65 - 5 * Math.sin(Math.PI*2)); ctx.moveTo(90,65); ctx.arc(90,65,5,0,Math.PI*2,true); // Right eye ctx.closePath(); if (canvas.fill) ctx.fill(); if (canvas.stroke) ctx.stroke(); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:lineWidthCtrl; width:300; height:20; min:1; max:10; init:2; name:"Line width"} Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:1; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4261699 PyQt6-6.6.1/examples/quick/canvas/squircle/0000755000076500000240000000000014532160402017417 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.729889 PyQt6-6.6.1/examples/quick/canvas/squircle/squircle.png0000644000076500000240000000140314532151332021754 0ustar00philstaff‰PNG  IHDRÔÌDÝ:0PLTEÿÿÿPPPÌÌÌ000@@@¶¶¶tttbbbŠŠŠ"""æææžžž §“D‰ŽIDATH T=ˆAþòãm.·¹ÁC! 6‡ÕÊ…V±PDP°8‹ÛS‰‚‡6±?¸K› (Jš(rW ­®’kì=DðÍÎLÞ›d7>Ø™7ïûÞûæÍ d›ÿôÛF6ê"‡ážtSx•½Å^Ž×ÊˇîÚ®Ò¸0•ó¡ÝFdé“s1Ägœw£›²³Ç€4.Låâx˳¤~`âÓ¤p"‘šâ²”Ýò,©¼më.†zJ“š«'R̵}»‚ÙÆ,©¸4Ò‰q¶Ti/‘b®¦Bte¶1KÊ&±vÓº*_K¤˜k=îÊlƒw7J‹ëùk÷»ºj¶X»Åp®3ÂMŽ“WÝì ®E#Ì?ñ:MÆ"zåøž¬ ¯_8š!UÊ7p`‹%s+ð\n} ,VH„Ýê•ÓmÆ"”°ì$Yvh…XÎÚZl«w ì!*5.'€[FQGh®©…UeCò^R¶ P$¦ŒJ¶†êòExYRØÖ94*SR_o킲GäG©/¤.ô¡Ô)¨w& ¸—Ñn“1%õŒ>a…%”A!(Ö0¥½C®'¸ðë¨\n]]•½+쓱¼Â®Ì.Ô‘‰ë$,Ö8¥ý¥#Ô =ú5l¹œ€"øK´d,ÂóÕ}‚üÄãS‹5N±÷¸êpñÚÿ%Ê Œš¨ÑÒÔñÓ]­=øÔuÞ:ît?®XŠÎõDi·»o´oÇ3÷›.×¼ùRÊB³¡èh¬§$¶100) M=100; if (N<0.00000000001) M=0.00000000001; ctx.save(); ctx.globalAlpha =canvas.alpha; ctx.fillStyle = "gray"; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.strokeStyle = canvas.strokeStyle; ctx.fillStyle = canvas.fillStyle; ctx.lineWidth = canvas.lineWidth; ctx.beginPath(); var i = 0, x, y; for (i=0; i<(2*R+1); i++){ x = Math.round(i-R) + canvas.px; y = Math.round(Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(i-R),M)),1/M)) + canvas.py; if (i == 0) ctx.moveTo(x, y); else ctx.lineTo(x, y); } for (i=(2*R); i<(4*R+1); i++){ x =Math.round(3*R-i)+canvas.px; y = Math.round(-Math.pow(Math.abs(Math.pow(R,M)-Math.pow(Math.abs(3*R-i),M)),1/M)) + canvas.py; ctx.lineTo(x, y); } ctx.closePath(); if (canvas.stroke) { ctx.stroke(); } if (canvas.fill) { ctx.fill(); } ctx.fillStyle = "yellow"; ctx.font = "Helvetica 16px"; ctx.fillText("|X-" + Math.round(canvas.px) + "|^" + N + " + |Y-"+Math.round(canvas.py)+"|^" + N + " = |" + Math.round(R) + "|^" + N, canvas.px - 125, canvas.py); ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:nCtrl; width:300; height:20; min:1; max:10; init:4; name:"N"} Slider {id:rCtrl; width:300; height:20; min:30; max:180; init:100; name:"Radius"} Slider {id:xCtrl; width:300; height:20; min:50; max:300; init:180; name:"X"} Slider {id:yCtrl; width:300; height:20; min:30; max:300; init:220; name:"Y"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4247751 PyQt6-6.6.1/examples/quick/canvas/tiger/0000755000076500000240000000000014532160402016702 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629729 PyQt6-6.6.1/examples/quick/canvas/tiger/tiger.js0000644000076500000240000026675414532151332020400 0ustar00philstaffvar tiger = [ {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.172, "path":"M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"} , {"fill": "#ffffff", "stroke":"#000000", "path":"M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"} , {"fill": "#cc7226", "stroke":"#000000", "path":"M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"} , {"fill": "#cc7226", "path":"M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"} , {"fill": "#e87f3a", "path":"M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"} , {"fill": "#ea8c4d", "path":"M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"} , {"fill": "#ec9961", "path":"M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"} , {"fill": "#eea575", "path":"M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"} , {"fill": "#f1b288", "path":"M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"} , {"fill": "#f3bf9c", "path":"M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"} , {"fill": "#f5ccb0", "path":"M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"} , {"fill": "#f8d8c4", "path":"M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"} , {"fill": "#fae5d7", "path":"M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"} , {"fill": "#fcf2eb", "path":"M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"} , {"fill": "#ffffff", "path":"M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"} , {"fill": "#000000", "path":"M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"} , {"fill": "#cccccc", "path":"M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"} , {"fill": "#000000", "path":"M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"} , {"fill": "#cccccc", "path":"M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"} , {"fill": "#cccccc", "path":"M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"} , {"fill": "#cccccc", "path":"M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"} , {"fill": "#cccccc", "path":"M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"} , {"fill": "#cccccc", "path":"M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"} , {"fill": "#cccccc", "path":"M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"} , {"fill": "#000000", "path":"M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"} , {"fill": "#e5668c", "path":"M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"} , {"fill": "#b23259", "path":"M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"} , {"fill": "#a5264c", "path":"M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"} , {"fill": "#ff727f", "stroke":"#000000", "path":"M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"} , {"fill": "#cc3f4c", "path":"M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"} , {"stroke":"#a51926", "width":2, "path":"M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"} , {"stroke":"#a5264c", "width":2, "path":"M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"} , {"stroke":"#a5264c", "width":2, "path":"M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"} , {"stroke":"#a5264c", "width":2, "path":"M47 244.801C47 244.801 50.6 242.401 53 243.601"} , {"stroke":"#a5264c", "width":2, "path":"M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"} , {"fill": "#b2b2b2", "path":"M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"} , {"fill": "#000000", "path":"M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"} , {"fill": "#ffffcc", "stroke":"#000000", "width":0.5, "path":"M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"} , {"fill": "#e5e5b2", "path":"M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"} , {"fill": "#e5e5b2", "path":"M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"} , {"fill": "#cc7226", "path":"M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"} , {"fill": "#ea8e51", "path":"M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"} , {"fill": "#efaa7c", "path":"M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"} , {"fill": "#f4c6a8", "path":"M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"} , {"fill": "#f9e2d3", "path":"M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"} , {"fill": "#ffffff", "path":"M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"} , {"fill": "#cccccc", "path":"M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"} , {"fill": "#000000", "path":"M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"} , {"fill": "#99cc32", "path":"M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"} , {"fill": "#659900", "path":"M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"} , {"fill": "#ffffff", "path":"M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"} , {"fill": "#000000", "path":"M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"} , {"fill": "#cc7226", "path":"M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"} , {"fill": "#ffffff", "path":"M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"} , {"fill": "#eb955c", "path":"M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"} , {"fill": "#f2b892", "path":"M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"} , {"fill": "#f8dcc8", "path":"M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"} , {"fill": "#ffffff", "path":"M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"} , {"fill": "#cccccc", "path":"M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"} , {"fill": "#000000", "path":"M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"} , {"fill": "#99cc32", "path":"M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"} , {"fill": "#000000", "path":"M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"} , {"fill": "#000000", "path":"M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"} , {"fill": "#000000", "path":"M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"} , {"fill": "#323232", "path":"M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"} , {"fill": "#666666", "path":"M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"} , {"fill": "#999999", "path":"M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"} , {"fill": "#cccccc", "path":"M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"} , {"fill": "#ffffff", "path":"M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"} , {"fill": "#992600", "path":"M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"} , {"fill": "#cccccc", "path":"M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"} , {"fill": "#cccccc", "path":"M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"} , {"fill": "#cccccc", "path":"M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"} , {"fill": "#cccccc", "path":"M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"} , {"fill": "#cccccc", "path":"M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"} , {"fill": "#000000", "path":"M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"} , {"fill": "#000000", "path":"M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"} , {"fill": "#cc7226", "path":"M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"} , {"fill": "#cc7226", "path":"M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"} , {"fill": "#cc7226", "path":"M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"} , {"fill": "#cc7226", "path":"M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"} , {"fill": "#cc7226", "path":"M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"} , {"fill": "#cc7226", "path":"M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"} , {"fill": "#000000", "path":"M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"} , {"stroke":"#4c0000", "width":2, "path":"M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"} , {"stroke":"#4c0000", "width":2, "path":"M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"} , {"stroke":"#4c0000", "width":2, "path":"M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"} , {"stroke":"#4c0000", "width":2, "path":"M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"} , {"fill": "#000000", "path":"M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"} , {"fill": "#4c0000", "path":"M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"} , {"fill": "#99cc32", "path":"M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"} , {"fill": "#659900", "path":"M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"} , {"fill": "#000000", "path":"M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"} , {"fill": "#000000", "path":"M-65.4 9z"} , {"fill": "#000000", "path":"M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"} , {"fill": "#e59999", "path":"M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"} , {"fill": "#b26565", "path":"M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"} , {"fill": "#992600", "path":"M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"} , {"fill": "#ffffff", "path":"M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"} , {"fill": "#992600", "path":"M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"} , {"fill": "#000000", "path":"M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"} , {"fill": "#000000", "path":"M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"} , {"fill": "#000000", "path":"M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"} , {"fill": "#000000", "path":"M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"} , {"fill": "#000000", "path":"M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"} , {"fill": "#000000", "path":"M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"} , {"fill": "#000000", "path":"M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"} , {"fill": "#000000", "path":"M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"} , {"fill": "#000000", "path":"M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"} , {"fill": "#ffffff", "path":"M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"} , {"fill": "#ffffff", "path":"M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"} , {"fill": "#cccccc", "path":"M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"} , {"fill": "#000000", "path":"M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"} , {"fill": "#cccccc", "path":"M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"} , {"fill": "#000000", "path":"M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"} , {"fill": "#000000", "path":"M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"} , {"fill": "#000000", "path":"M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"} , {"fill": "#000000", "path":"M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"} , {"fill": "#000000", "path":"M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"} , {"fill": "#000000", "path":"M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"} , {"fill": "#000000", "path":"M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"} , {"fill": "#000000", "path":"M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"} , {"fill": "#000000", "path":"M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"} , {"fill": "#000000", "path":"M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"} , {"fill": "#000000", "path":"M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"} , {"fill": "#000000", "path":"M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"} , {"fill": "#000000", "path":"M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"} , {"fill": "#000000", "path":"M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"} , {"fill": "#000000", "path":"M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"} , {"fill": "#000000", "path":"M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"} , {"fill": "#000000", "path":"M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"} , {"fill": "#992600", "path":"M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"} , {"fill": "#992600", "path":"M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"} , {"fill": "#cccccc", "path":"M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"} , {"fill": "#000000", "path":"M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"} , {"fill": "#000000", "path":"M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"} , {"fill": "#cccccc", "path":"M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"} , {"fill": "#000000", "path":"M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"} , {"fill": "#000000", "path":"M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"} , {"fill": "#000000", "path":"M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"} , {"fill": "#000000", "path":"M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"} , {"fill": "#000000", "path":"M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"} , {"fill": "#000000", "path":"M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"} , {"fill": "#000000", "path":"M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"} , {"fill": "#000000", "path":"M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"} , {"fill": "#000000", "path":"M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"} , {"fill": "#000000", "path":"M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"} , {"fill": "#000000", "path":"M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"} , {"fill": "#ffffff", "stroke":"#000000", "width":0.1, "path":"M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"} , {"fill": "#000000", "path":"M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"} , {"fill": "#000000", "path":"M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"} , {"fill": "#000000", "path":"M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"} , {"fill": "#000000", "path":"M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"} , {"fill": "#000000", "path":"M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"} , {"fill": "#000000", "path":"M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"} , {"fill": "#cccccc", "path":"M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"} , {"fill": "#cccccc", "path":"M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"} , {"fill": "#cccccc", "path":"M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"} , {"fill": "#cccccc", "path":"M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"} , {"fill": "#cccccc", "path":"M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"} , {"fill": "#cccccc", "path":"M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"} , {"fill": "#cccccc", "path":"M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"} , {"fill": "#cccccc", "path":"M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"} , {"fill": "#cccccc", "path":"M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"} , {"fill": "#cccccc", "path":"M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"} , {"fill": "#cccccc", "path":"M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"} , {"fill": "#cccccc", "path":"M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"} , {"fill": "#cccccc", "path":"M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"} , {"fill": "#cccccc", "path":"M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"} , {"fill": "#cccccc", "path":"M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"} , {"fill": "#cccccc", "path":"M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"} , {"fill": "#cccccc", "path":"M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"} , {"fill": "#cccccc", "path":"M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"} , {"fill": "#cccccc", "path":"M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"} , {"fill": "#cccccc", "path":"M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"} , {"fill": "#cccccc", "path":"M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"} , {"fill": "#cccccc", "path":"M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"} , {"stroke":"#000000", "path":"M-89.25 169L-67.25 173.75"} , {"stroke":"#000000", "path":"M-39 331C-39 331 -39.5 327.5 -48.5 338"} , {"stroke":"#000000", "path":"M-33.5 336C-33.5 336 -31.5 329.5 -38 334"} , {"stroke":"#000000", "path":"M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"} ];././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.631791 PyQt6-6.6.1/examples/quick/canvas/tiger/tiger.qml0000644000076500000240000001140014532151332020525 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import "../contents" import "tiger.js" as Tiger Item { id:container width:320 height:480 Column { spacing:5 anchors.fill:parent Text { font.pointSize:15; text:"Tiger with SVG path"; anchors.horizontalCenter:parent.horizontalCenter} Canvas { id:canvas width:320 height:280 antialiasing: true property string strokeStyle:"steelblue" property string fillStyle:"yellow" property bool fill:true property bool stroke:true property real alpha:alphaCtrl.value property real scaleX : scaleXCtrl.value property real scaleY : scaleYCtrl.value property real rotate : rotateCtrl.value property int frame:0 onFillChanged: requestPaint(); onStrokeChanged: requestPaint(); onAlphaChanged: requestPaint(); onScaleXChanged: requestPaint(); onScaleYChanged: requestPaint(); onRotateChanged: requestPaint(); onPainted : { canvas.frame++; if (canvas.frame < Tiger.tiger.length) requestPaint(); } onPaint: { var ctx = canvas.getContext('2d'); ctx.save(); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.globalAlpha = canvas.alpha; ctx.scale(canvas.scaleX, canvas.scaleY); ctx.rotate(canvas.rotate); ctx.globalCompositeOperation = "source-over"; ctx.translate(canvas.width/2, canvas.height/2); ctx.strokeStyle = Qt.rgba(.3, .3, .3,1); ctx.lineWidth = 1; //! [0] for (var i = 0; i < canvas.frame && i < Tiger.tiger.length; i++) { if (Tiger.tiger[i].width != undefined) ctx.lineWidth = Tiger.tiger[i].width; if (Tiger.tiger[i].path != undefined) ctx.path = Tiger.tiger[i].path; if (Tiger.tiger[i].fill != undefined) { ctx.fillStyle = Tiger.tiger[i].fill; ctx.fill(); } if (Tiger.tiger[i].stroke != undefined) { ctx.strokeStyle = Tiger.tiger[i].stroke; ctx.stroke(); } } //! [0] ctx.restore(); } } Rectangle { id:controls width:320 height:150 Column { spacing:3 Slider {id:scaleXCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleX"} Slider {id:scaleYCtrl; width:300; height:20; min:0.1; max:10; init:0.5; name:"ScaleY"} Slider {id:rotateCtrl; width:300; height:20; min:0; max:Math.PI*2; init:0; name:"Rotate"} Slider {id:alphaCtrl; width:300; height:20; min:0; max:1; init:1; name:"Alpha"} } } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4139097 PyQt6-6.6.1/examples/quick/models/0000755000076500000240000000000014532160402015600 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4135609 PyQt6-6.6.1/examples/quick/models/abstractitemmodel/0000755000076500000240000000000014532160402021303 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.631058 PyQt6-6.6.1/examples/quick/models/abstractitemmodel/abstractitemmodel.py0000644000076500000240000000772314532151332025373 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QAbstractListModel, QModelIndex, Qt, QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtQuick import QQuickView class Animal: def __init__(self, type, size): self._type = type self._size = size def type(self): return self._type def size(self): return self._size class AnimalModel(QAbstractListModel): TypeRole = Qt.ItemDataRole.UserRole + 1 SizeRole = Qt.ItemDataRole.UserRole + 2 _roles = {TypeRole: b"type", SizeRole: b"size"} def __init__(self, parent=None): super().__init__(parent) self._animals = [] def addAnimal(self, animal): self.beginInsertRows(QModelIndex(), self.rowCount(), self.rowCount()) self._animals.append(animal) self.endInsertRows() def rowCount(self, parent=QModelIndex()): return len(self._animals) def data(self, index, role=Qt.ItemDataRole.DisplayRole): try: animal = self._animals[index.row()] except IndexError: return None if role == self.TypeRole: return animal.type() if role == self.SizeRole: return animal.size() return None def roleNames(self): return self._roles if __name__ == '__main__': import os import sys # This is necessary to avoid a possible crash when running from another # directory by ensuring the compiled version of the embedded QML file # doesn't get mixed up with another of the same name. os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) model = AnimalModel() model.addAnimal(Animal("Wolf", "Medium")) model.addAnimal(Animal("Polar bear", "Large")) model.addAnimal(Animal("Quoll", "Small")) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) ctxt = view.rootContext() ctxt.setContextProperty('myModel', model) view.setSource(QUrl.fromLocalFile('view.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633231 PyQt6-6.6.1/examples/quick/models/abstractitemmodel/view.qml0000644000076500000240000000414714532151332023000 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 200; height: 250 model: myModel delegate: Text { text: "Animal: " + type + ", " + size } } //![0] ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372162.41269 PyQt6-6.6.1/examples/quick/models/objectlistmodel/0000755000076500000240000000000014532160402020763 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.634496 PyQt6-6.6.1/examples/quick/models/objectlistmodel/objectlistmodel.py0000644000076500000240000000705614532151332024532 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, QObject, QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtQuick import QQuickView class DataObject(QObject): nameChanged = pyqtSignal() @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit() colorChanged = pyqtSignal() @pyqtProperty(str, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = color self.colorChanged.emit() def __init__(self, name='', color='', parent=None): super().__init__(parent) self._name = name self._color = color if __name__ == '__main__': import os import sys # This is necessary to avoid a possible crash when running from another # directory by ensuring the compiled version of the embedded QML file # doesn't get mixed up with another of the same name. os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) dataList = [DataObject("Item 1", 'red'), DataObject("Item 2", 'green'), DataObject("Item 3", 'blue'), DataObject("Item 4", 'yellow')] view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setInitialProperties(dict(model=dataList)) view.setSource(QUrl.fromLocalFile('view.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.641596 PyQt6-6.6.1/examples/quick/models/objectlistmodel/view.qml0000644000076500000240000000534014532151332022454 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** BSD License Usage ** Alternatively, you may use this file under the terms of the BSD license ** as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 100; height: 100 required model delegate: Rectangle { required color required property string name height: 25 width: 100 Text { text: parent.name } } } //![0] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.414396 PyQt6-6.6.1/examples/quick/models/stringlistmodel/0000755000076500000240000000000014532160402021023 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.640764 PyQt6-6.6.1/examples/quick/models/stringlistmodel/stringlistmodel.py0000644000076500000240000000505714532151332024631 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# import os import sys from PyQt6.QtCore import QUrl from PyQt6.QtGui import QGuiApplication from PyQt6.QtQuick import QQuickView # This is necessary to avoid a possible crash when running from another # directory by ensuring the compiled version of the embedded QML file doesn't # get mixed up with another of the same name. os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) dataList = ["Item 1", "Item 2", "Item 3", "Item 4"] view = QQuickView() view.setInitialProperties(dict(model=dataList)) view.setSource(QUrl.fromLocalFile('view.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.626543 PyQt6-6.6.1/examples/quick/models/stringlistmodel/view.qml0000644000076500000240000000532414532151332022516 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** BSD License Usage ** Alternatively, you may use this file under the terms of the BSD license ** as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 //![0] ListView { width: 100 height: 100 required model delegate: Rectangle { required property string modelData height: 25 width: 100 Text { text: parent.modelData } } } //![0] ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.434571 PyQt6-6.6.1/examples/quick/scenegraph/0000755000076500000240000000000014532160402016434 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4351897 PyQt6-6.6.1/examples/quick/scenegraph/customgeometry/0000755000076500000240000000000014532160402021522 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627948 PyQt6-6.6.1/examples/quick/scenegraph/customgeometry/customgeometry.py0000644000076500000240000001344214532151332025170 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, QPointF, QUrl from PyQt6.QtGui import QColor, QGuiApplication from PyQt6.QtQml import qmlRegisterType from PyQt6.QtQuick import (QQuickItem, QQuickView, QSGFlatColorMaterial, QSGGeometry, QSGGeometryNode, QSGNode) class BezierCurve(QQuickItem): p1Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p1Changed) def p1(self): return self._p1 @p1.setter def p1(self, p): if self._p1 != p: self._p1 = QPointF(p) self.p1Changed.emit(p) self.update() p2Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p2Changed) def p2(self): return self._p2 @p2.setter def p2(self, p): if self._p2 != p: self._p2 = QPointF(p) self.p2Changed.emit(p) self.update() p3Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p3Changed) def p3(self): return self._p3 @p3.setter def p3(self, p): if self._p3 != p: self._p3 = QPointF(p) self.p3Changed.emit(p) self.update() p4Changed = pyqtSignal(QPointF) @pyqtProperty(QPointF, notify=p4Changed) def p4(self): return self._p4 @p4.setter def p4(self, p): if self._p4 != p: self._p4 = QPointF(p) self.p4Changed.emit(p) self.update() segmentCountChanged = pyqtSignal(int) @pyqtProperty(int, notify=segmentCountChanged) def segmentCount(self): return self._segmentCount @segmentCount.setter def segmentCount(self, count): if self._segmentCount != count: self._segmentCount = count self.segmentCountChanged.emit(count) self.update() def __init__(self, parent=None): super().__init__(parent) self._p1 = QPointF(0, 0) self._p2 = QPointF(1, 0) self._p3 = QPointF(0, 1) self._p4 = QPointF(1, 1) self._segmentCount = 32 self._root_node = None self.setFlag(QQuickItem.Flags.ItemHasContents, True) def updatePaintNode(self, oldNode, nodeData): if self._root_node is None: self._root_node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self._segmentCount) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.DrawingMode.DrawLineStrip) self._root_node.setGeometry(geometry) self._root_node.setFlag(QSGNode.Flags.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self._root_node.setMaterial(material) self._root_node.setFlag(QSGNode.Flags.OwnsMaterial) else: geometry = self._root_node.geometry() geometry.allocate(self._segmentCount) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self._segmentCount): t = i / float(self._segmentCount - 1) invt = 1 - t pos = invt * invt * invt * self._p1 \ + 3 * invt * invt * t * self._p2 \ + 3 * invt * t * t * self._p3 \ + t * t * t * self._p4 vertices[i].set(pos.x() * w, pos.y() * h) self._root_node.markDirty(QSGNode.DirtyState.DirtyGeometry) return self._root_node if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(BezierCurve, 'CustomGeometry', 1, 0) view = QQuickView() format = view.format() format.setSamples(16) view.setFormat(format) view.setSource(QUrl.fromLocalFile('main.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627578 PyQt6-6.6.1/examples/quick/scenegraph/customgeometry/main.qml0000644000076500000240000000525414532151332023171 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the demonstration applications of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import CustomGeometry 1.0 Item { width: 300 height: 200 BezierCurve { id: line anchors.fill: parent anchors.margins: 20 property real t SequentialAnimation on t { NumberAnimation { to: 1; duration: 2000; easing.type: Easing.InOutQuad } NumberAnimation { to: 0; duration: 2000; easing.type: Easing.InOutQuad } loops: Animation.Infinite } p2: Qt.point(t, 1 - t) p3: Qt.point(1 - t, t) } Text { anchors.bottom: line.bottom x: 20 width: parent.width - 40 wrapMode: Text.WordWrap text: "This curve is a custom scene graph item, implemented using GL_LINE_STRIP" } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4111817 PyQt6-6.6.1/examples/quick/shared/0000755000076500000240000000000014532160402015563 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.730896 PyQt6-6.6.1/examples/quick/shared/Button.qml0000644000076500000240000000633314532151332017560 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Item { id: container property string text: "Button" property string subText: "" signal clicked property alias containsMouse: mouseArea.containsMouse property alias pressed: mouseArea.pressed implicitHeight: col.height height: implicitHeight width: buttonLabel.width + 20 MouseArea { id: mouseArea anchors.fill: parent onClicked: container.clicked() hoverEnabled: true } Column { spacing: 2 id: col anchors.verticalCenter: parent.verticalCenter width: parent.width Text { id: buttonLabel anchors.left: parent.left anchors.leftMargin: 10 anchors.right: parent.right anchors.rightMargin: 10 text: container.text color: "black" font.pixelSize: 22 wrapMode: Text.WrapAtWordBoundaryOrAnywhere styleColor: "white" style: Text.Raised } Text { id: buttonLabel2 anchors.left: parent.left anchors.leftMargin: 10 text: container.subText wrapMode: Text.WrapAtWordBoundaryOrAnywhere color: "#666" font.pixelSize: 12 } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.632132 PyQt6-6.6.1/examples/quick/shared/LauncherList.qml0000644000076500000240000001206614532151332020702 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"} //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments color: "#eee" function addExample(name, desc, url) { myModel.append({"name":name, "description":desc, "url":url}) } function hideExample() { ei.visible = false; } ListView { clip: true delegate: SimpleLauncherDelegate{exampleItem: ei} model: ListModel {id:myModel} anchors.fill: parent } Item { id: ei visible: false clip: true property url exampleUrl onExampleUrlChanged: visible = (exampleUrl == '' ? false : true); //Setting exampleUrl automatically shows example anchors.fill: parent anchors.bottomMargin: 40 Rectangle { id: bg anchors.fill: parent color: "white" } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Loader{ focus: true source: ei.exampleUrl anchors.fill: parent } } Rectangle { id: bar visible: ei.visible anchors.bottom: parent.bottom width: parent.width height: 40 Rectangle { height: 1 color: "#ccc" anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right } Rectangle { height: 1 color: "#fff" anchors.top: parent.top anchors.topMargin: 1 anchors.left: parent.left anchors.right: parent.right } gradient: Gradient { GradientStop { position: 0 ; color: "#eee" } GradientStop { position: 1 ; color: "#ccc" } } MouseArea{ anchors.fill: parent enabled: ei.visible //Eats mouse events } Image { id: back source: "images/back.png" anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 2 anchors.left: parent.left anchors.leftMargin: 16 MouseArea { id: mouse hoverEnabled: true anchors.centerIn: parent width: 38 height: 31 anchors.verticalCenterOffset: -1 onClicked: ei.exampleUrl = "" Rectangle { anchors.fill: parent opacity: mouse.pressed ? 1 : 0 Behavior on opacity { NumberAnimation{ duration: 100 }} gradient: Gradient { GradientStop { position: 0 ; color: "#22000000" } GradientStop { position: 0.2 ; color: "#11000000" } } border.color: "darkgray" antialiasing: true radius: 4 } } } } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.631015 PyQt6-6.6.1/examples/quick/shared/SimpleLauncherDelegate.qml0000644000076500000240000000632714532151332022656 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 Rectangle { id: container property Item exampleItem width: ListView.view.width height: button.implicitHeight + 22 gradient: Gradient { GradientStop { position: 0 Behavior on color {ColorAnimation { duration: 100 }} color: button.pressed ? "#e0e0e0" : "#fff" } GradientStop { position: 1 Behavior on color {ColorAnimation { duration: 100 }} color: button.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee" } } Image { id: image opacity: 0.7 Behavior on opacity {NumberAnimation {duration: 100}} source: "images/next.png" anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right anchors.rightMargin: 16 } Button { id: button anchors.top: parent.top anchors.left: parent.left anchors.bottom: parent.bottom anchors.right:image.left text: name subText: description onClicked: exampleItem.exampleUrl = url; } Rectangle { height: 1 color: "#ccc" anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.411707 PyQt6-6.6.1/examples/quick/shared/images/0000755000076500000240000000000014532160402017030 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633254 PyQt6-6.6.1/examples/quick/shared/images/back.png0000644000076500000240000000306614532151332020445 0ustar00philstaff‰PNG  IHDR ЦÅtEXtSoftwareAdobe ImageReadyqÉe<$iTXtXML:com.adobe.xmp — =بIDATxÚŒ”_HSQÇϽ»×;·ÝÝQ¾ b›“ÔõÁ ôÅ)Ø)FdÔCêKäCBö˜´µ­=ÈèÉõô’Ò–Eë!Y–Ŕ”²ùHí¡‡67Áýóö=×ML—zàËÝïÜ}8¿óýžsY–ÉAÃjµp÷˜Èr¡P,Þ`‚ÚZ[ïiuº1µ r¹Lrëë1n?Àf³¹ ÃQ¯'u Ù ßÀÍIDATxÚ¬•;KA…7™4ÚF1>@ňAŒ,*b#XZ £­…` m,5ˆ‰Ø(B4>@Bˆ"b:ÿ† X]Ï•+„eæî®fàìÌî¾yì½3‘¥tºÙ²¬hzƒ2‡¹\Ö XÂÐ4E (´øú_@ãšï[€e‚‚ }›€mû)Û¶PO@½šþIô7½T«%/Pˆ¼á—ДÁ·­á'8ÆÑ#Ö0ò©03úÞÏ5¼f 6 h¼cLÕ¿0ì M[€µÃs¯c1ìÓ6 Åá9¯‡)Ýzë`q(©±$Ý0eú +xÀúá)’7ä ,-,E(¥¼@4uZš1Þw¡}Œ)?áϰ+4;¡Ý2Ãò2Ê1¦+ï!?ìS+ª24d°¬¨@V‘ƒ»ÊÒª$Í„ bÒ…êJ¬Ù ©@}šî/h}1×éá=1A9³J‡{¨[€‹çC*tîR£›ñ„$ÁË1AR€ÄÃA^NL€\xÅ]Š´q-š¾h[?Ñ1$!Af)¹ Ÿÿ ùÑõÄï¯ÐtPÈÏé8ŽÕˆò-Àªú®G|9mIEND®B`‚././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4277866 PyQt6-6.6.1/examples/quick/tutorials/0000755000076500000240000000000014532160402016343 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4335468 PyQt6-6.6.1/examples/quick/tutorials/extending/0000755000076500000240000000000014532160402020330 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4341538 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter1-basics/0000755000076500000240000000000014532160402023301 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.635018 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter1-basics/app.qml0000644000076500000240000000452114532151332024600 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: aPieChart anchors.centerIn: parent width: 100; height: 100 name: "A simple pie chart" color: "red" } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: aPieChart.name } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.636153 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter1-basics/chapter1-basics.py0000644000076500000240000000664414532151332026640 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, QRectF, QUrl from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt6.QtQml import qmlRegisterType from PyQt6.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): nameChanged = pyqtSignal(str) @pyqtProperty(str, notify=nameChanged) def name(self): return self._name @name.setter def name(self, name): if self._name != name: self._name = name self.nameChanged.emit(name) self.update() @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super().__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, 'Charts', 1, 0) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setSource(QUrl.fromLocalFile('app.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4283197 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter2-methods/0000755000076500000240000000000014532160402023501 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.643047 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter2-methods/app.qml0000644000076500000240000000474414532151332025007 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: aPieChart anchors.centerIn: parent width: 100; height: 100 color: "red" onChartCleared: console.log("The chart has been cleared") } MouseArea { anchors.fill: parent onClicked: aPieChart.clearChart() } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: "Click anywhere to clear the chart" } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.642699 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter2-methods/chapter2-methods.py0000644000076500000240000000672214532151332027235 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt6.QtQml import qmlRegisterType from PyQt6.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): chartCleared = pyqtSignal() @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super().__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.GlobalColor.transparent) self.update() self.chartCleared.emit() if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, 'Charts', 1, 0) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setSource(QUrl.fromLocalFile('app.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4291918 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter3-bindings/0000755000076500000240000000000014532160402023634 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.627802 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter3-bindings/app.qml0000644000076500000240000000513214532151332025132 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 Row { anchors.centerIn: parent spacing: 20 PieChart { id: chartA width: 100; height: 100 color: "red" } PieChart { id: chartB width: 100; height: 100 color: chartA.color } } MouseArea { anchors.fill: parent onClicked: { chartA.color = "blue" } } Text { anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter; bottomMargin: 20 } text: "Click anywhere to change the chart color" } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.630726 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter3-bindings/chapter3-bindings.py0000644000076500000240000000705114532151332027517 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QRectF, Qt, QUrl from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt6.QtQml import qmlRegisterType from PyQt6.QtQuick import QQuickPaintedItem, QQuickView class PieChart(QQuickPaintedItem): @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name colorChanged = pyqtSignal() @pyqtProperty(QColor, notify=colorChanged) def color(self): return self._color @color.setter def color(self, color): if self._color != color: self._color = QColor(color) self.update() self.colorChanged.emit() def __init__(self, parent=None): super().__init__(parent) self._name = '' self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) @pyqtSlot() def clearChart(self): self.color = QColor(Qt.GlobalColor.transparent) self.update() if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, 'Charts', 1, 0) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setSource(QUrl.fromLocalFile('app.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4310238 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/0000755000076500000240000000000014532160402026144 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.629547 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/app.qml0000644000076500000240000000447114532151332027447 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { id: chart anchors.centerIn: parent width: 100; height: 100 pieSlice: PieSlice { anchors.fill: parent color: "red" } } Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color) } ././@PaxHeader0000000000000000000000000000021700000000000010215 xustar00117 path=PyQt6-6.6.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.py 26 mtime=1701368537.73242 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter4-customPropertyTypes/chapter4-customPropertyT0000644000076500000240000000721414532151332033010 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, QRectF, QUrl from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt6.QtQml import qmlRegisterType from PyQt6.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) def __init__(self, parent=None): super().__init__(parent) self._color = QColor() def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, 90 * 16, 290 * 16) class PieChart(QQuickItem): @pyqtProperty(PieSlice) def pieSlice(self): return self._pieSlice @pieSlice.setter def pieSlice(self, pieSlice): self._pieSlice = pieSlice pieSlice.setParentItem(self) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super().__init__(parent) self._pieSlice = None self._name = '' if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, 'Charts', 1, 0) qmlRegisterType(PieSlice, 'Charts', 1, 0) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setSource(QUrl.fromLocalFile('app.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4301233 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter5-listproperties/0000755000076500000240000000000014532160402025131 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633354 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter5-listproperties/app.qml0000644000076500000240000000512314532151332026427 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import Charts 1.0 import QtQuick 2.0 Item { width: 300; height: 200 PieChart { anchors.centerIn: parent width: 100; height: 100 slices: [ PieSlice { anchors.fill: parent color: "red" fromAngle: 0; angleSpan: 110 }, PieSlice { anchors.fill: parent color: "black" fromAngle: 110; angleSpan: 50 }, PieSlice { anchors.fill: parent color: "blue" fromAngle: 160; angleSpan: 100 } ] } } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.633506 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter5-listproperties/chapter5-listproperties.py0000644000076500000240000001002414532151332032303 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, QRectF, QUrl from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen from PyQt6.QtQml import qmlRegisterType, QQmlListProperty from PyQt6.QtQuick import QQuickItem, QQuickPaintedItem, QQuickView class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super().__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super().__init__(parent) self._name = '' if __name__ == '__main__': import os import sys os.chdir(os.path.dirname(os.path.abspath(__file__))) app = QGuiApplication(sys.argv) qmlRegisterType(PieChart, 'Charts', 1, 0) qmlRegisterType(PieSlice, 'Charts', 1, 0) view = QQuickView() view.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView) view.setSource(QUrl.fromLocalFile('app.qml')) view.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4319348 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/0000755000076500000240000000000014532160402023523 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372162.43324 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/0000755000076500000240000000000014532160402024747 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.634932 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/chartsplugin.py0000644000076500000240000000436414532151332030035 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtQml import qmlRegisterType, QQmlExtensionPlugin from .piechart import PieChart from .pieslice import PieSlice class ChartsPlugin(QQmlExtensionPlugin): def registerTypes(self, uri): qmlRegisterType(PieChart, 'Charts', 1, 0) qmlRegisterType(PieSlice, 'Charts', 1, 0) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.635068 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/piechart.py0000644000076500000240000000503314532151332027123 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty from PyQt6.QtQml import QQmlListProperty from PyQt6.QtQuick import QQuickItem from .pieslice import PieSlice class PieChart(QQuickItem): @pyqtProperty(QQmlListProperty) def slices(self): return QQmlListProperty(PieSlice, self, append=lambda pie_ch, pie_sl: pie_sl.setParentItem(pie_ch)) @pyqtProperty(str) def name(self): return self._name @name.setter def name(self, name): self._name = name def __init__(self, parent=None): super().__init__(parent) self._name = '' ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.637267 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/pieslice.py0000644000076500000240000000607414532151332027127 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ## of its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import pyqtProperty, QRectF from PyQt6.QtGui import QColor, QPainter, QPen from PyQt6.QtQuick import QQuickPaintedItem class PieSlice(QQuickPaintedItem): @pyqtProperty(QColor) def color(self): return self._color @color.setter def color(self, color): self._color = QColor(color) @pyqtProperty(int) def fromAngle(self): return self._fromAngle @fromAngle.setter def fromAngle(self, fromAngle): self._fromAngle = fromAngle @pyqtProperty(int) def angleSpan(self): return self._angleSpan @angleSpan.setter def angleSpan(self, angleSpan): self._angleSpan = angleSpan def __init__(self, parent=None): super().__init__(parent) self._color = QColor() self._fromAngle = 0 self._angleSpan = 0 def paint(self, painter): painter.setPen(QPen(self._color, 2)) painter.setRenderHint(QPainter.RenderHint.Antialiasing, True) rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1) painter.drawPie(rect, self._fromAngle * 16, self._angleSpan * 16) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.637271 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/Charts/qmldir0000644000076500000240000000004414532151332026162 0ustar00philstaffmodule Charts plugin pyqt6qmlplugin ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.644362 PyQt6-6.6.1/examples/quick/tutorials/extending/chapter6-plugins/app.qml0000644000076500000240000000512314532151332025021 0ustar00philstaff/**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 2.0 import Charts 1.0 Item { width: 300; height: 200 PieChart { anchors.centerIn: parent width: 100; height: 100 slices: [ PieSlice { anchors.fill: parent color: "red" fromAngle: 0; angleSpan: 110 }, PieSlice { anchors.fill: parent color: "black" fromAngle: 110; angleSpan: 50 }, PieSlice { anchors.fill: parent color: "blue" fromAngle: 160; angleSpan: 100 } ] } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4554095 PyQt6-6.6.1/examples/richtext/0000755000076500000240000000000014532160402015033 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4559412 PyQt6-6.6.1/examples/richtext/textobject/0000755000076500000240000000000014532160402017206 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.644212 PyQt6-6.6.1/examples/richtext/textobject/heart.svg0000644000076500000240000000744114532151332021042 0ustar00philstaff Heart Left-Highlight This is a normal valentines day heart. holiday valentines valentine hash(0x8a091c0) hash(0x8a0916c) signs_and_symbols hash(0x8a091f0) day Jon Phillips Jon Phillips Jon Phillips image/svg+xml en ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701368537.628882 PyQt6-6.6.1/examples/richtext/textobject/textobject.py0000644000076500000240000001061314532151332021736 0ustar00philstaff############################################################################# ## ## Copyright (C) 2021 Riverbank Computing Limited. ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ## All rights reserved. ## ## This file is part of the examples of PyQt. ## ## $QT_BEGIN_LICENSE:BSD$ ## You may use this file under the terms of the BSD license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ## the names of its contributors may be used to endorse or promote ## products derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## $QT_END_LICENSE$ ## ############################################################################# from PyQt6.QtCore import QObject, QSizeF from PyQt6.QtGui import QTextCharFormat, QTextFormat, QTextObjectInterface from PyQt6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QVBoxLayout, QWidget) from PyQt6.QtSvg import QSvgRenderer class SvgTextObject(QObject, QTextObjectInterface): def intrinsicSize(self, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgFileName)) size = renderer.defaultSize() if size.height() > 25: size *= 25.0 / size.height() return QSizeF(size) def drawObject(self, painter, rect, doc, posInDocument, format): renderer = QSvgRenderer(format.property(Window.SvgFileName)) renderer.render(painter, rect) class Window(QWidget): SvgTextFormat = QTextFormat.ObjectTypes.UserObject + 1 SvgFileName = 1 def __init__(self): super().__init__() self.setupGui() self.setupTextObject() self.setWindowTitle("Text Object Example") def insertTextObject(self): svgCharFormat = QTextCharFormat() svgCharFormat.setObjectType(Window.SvgTextFormat) svgCharFormat.setProperty(Window.SvgFileName, self.fileNameLineEdit.text()) cursor = self.textEdit.textCursor() cursor.insertText('\N{object replacement character}', svgCharFormat) self.textEdit.setTextCursor(cursor) def setupTextObject(self): svgInterface = SvgTextObject(self) self.textEdit.document().documentLayout().registerHandler(Window.SvgTextFormat, svgInterface) def setupGui(self): fileNameLabel = QLabel("Svg File Name:") self.fileNameLineEdit = QLineEdit() insertTextObjectButton = QPushButton("Insert Image") self.fileNameLineEdit.setText('heart.svg') insertTextObjectButton.clicked.connect(self.insertTextObject) bottomLayout = QHBoxLayout() bottomLayout.addWidget(fileNameLabel) bottomLayout.addWidget(self.fileNameLineEdit) bottomLayout.addWidget(insertTextObjectButton) self.textEdit = QTextEdit() mainLayout = QVBoxLayout() mainLayout.addWidget(self.textEdit) mainLayout.addLayout(bottomLayout) self.setLayout(mainLayout) if __name__ == '__main__': import sys app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3157113 PyQt6-6.6.1/lupdate/0000755000076500000240000000000014532160402013021 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2761254 PyQt6-6.6.1/lupdate/__init__.py0000644000076500000240000000155314532160372015144 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # The public API. from .lupdate import lupdate ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.277739 PyQt6-6.6.1/lupdate/designer_source.py0000644000076500000240000000465714532160372016575 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. from ..uic import UIFile from .source_file import SourceFile from .translations import Context, Message from .user import User, UserException class DesignerSource(SourceFile, User): """ Encapsulate a Designer source file. """ def __init__(self, **kwargs): """ Initialise the object. """ super().__init__(**kwargs) # Read the source file. self.progress("Reading {0}...".format(self.filename)) try: ui_file = UIFile(self.filename) except Exception as e: raise UserException(str(e)) if ui_file.widget is not None: context = Context(ui_file.class_name) # Get each element. Note that we don't support the # element which seems to provide defaults for the # attributes of any child elements. for string_el in ui_file.widget.iter('string'): if string_el.get('notr', 'false') == 'true': continue # This can be None or an empty string depending on the exact # XML. if not string_el.text: continue message = Message(self.filename, 0, string_el.text, string_el.get('comment', ''), False) extra_comment = string_el.get('extracomment') if extra_comment: message.embedded_comments.extra_comments.append( extra_comment) context.messages.append(message) if context.messages: self.contexts.append(context) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2805753 PyQt6-6.6.1/lupdate/lupdate.py0000644000076500000240000000653014532160372015043 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import fnmatch import os from .designer_source import DesignerSource from .python_source import PythonSource from .translation_file import TranslationFile from .user import UserException def lupdate(sources, translation_files, no_obsolete=False, no_summary=True, verbose=False, excludes=None): """ Update a sequence of translation (.ts) files from a sequence of Python source (.py) files, Designer source (.ui) files or directories containing source files. """ if excludes is None: excludes = () # Read the .ts files. translations = [TranslationFile(ts, no_obsolete=no_obsolete, no_summary=no_summary, verbose=verbose) for ts in translation_files] # Read the sources. source_files = [] for source in sources: if os.path.isdir(source): for dirpath, dirnames, filenames in os.walk(source): _remove_excludes(dirnames, excludes) _remove_excludes(filenames, excludes) for fn in filenames: filename = os.path.join(dirpath, fn) if filename.endswith('.py'): source_files.append( PythonSource(filename=filename, verbose=verbose)) elif filename.endswith('.ui'): source_files.append( DesignerSource(filename=filename, verbose=verbose)) elif verbose: print("Ignoring", filename) elif source.endswith('.py'): source_files.append( PythonSource(filename=source, verbose=verbose)) elif source.endswith('.ui'): source_files.append( DesignerSource(filename=source, verbose=verbose)) else: raise UserException( "{0} must be a directory or a .py or a .ui file".format( source)) # Update each translation for each source. for t in translations: for s in source_files: t.update(s) t.write() def _remove_excludes(names, excludes): """ Remove all implicitly and explicitly excluded names from a list. """ for name in list(names): if name.startswith('.'): names.remove(name) else: for exclude in excludes: if fnmatch.fnmatch(name, exclude): names.remove(name) break ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2716186 PyQt6-6.6.1/lupdate/pylupdate.py0000644000076500000240000000576614532160372015426 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import sys from .lupdate import lupdate def main(): """ Update a .ts file from a .py file. """ import argparse from PyQt6.QtCore import PYQT_VERSION_STR from .user import UserException # The program name. PROGRAM_NAME = 'pylupdate6' # Parse the command line. parser = argparse.ArgumentParser(prog=PROGRAM_NAME, description="Python Language Update Tool") parser.add_argument('-V', '--version', action='version', version=PYQT_VERSION_STR) parser.add_argument('--exclude', action='append', metavar="PATTERN", help="exclude matching files when reading a directory") parser.add_argument('--no-obsolete', '-no-obsolete', action='store_true', help="remove any obsolete translated messages") parser.add_argument('--no-summary', action='store_true', help="suppress the summary") parser.add_argument('--ts', '-ts', action='append', metavar="FILE", required=True, help="a .ts file to update or create") parser.add_argument('--verbose', action='store_true', help="show progress messages") parser.add_argument('file', nargs='+', help="the .py or .ui file, or directory to be read") args = parser.parse_args() # Update the translation files. try: lupdate(args.file, args.ts, args.no_obsolete, args.no_summary, args.verbose, args.exclude) except UserException as e: print("{0}: {1}".format(PROGRAM_NAME, e), file=sys.stderr) return 1 except: if args.verbose: import traceback traceback.print_exception(*sys.exc_info()) else: print("""An unexpected error occurred. Check that you are using the latest version of {name} and send an error report to the PyQt mailing list and include the following information: - the version of {name} ({version}) - the .py or .ui file that caused the error (as an attachment) - the verbose output of {name} (use the --verbose flag when calling {name})""".format(name=PROGRAM_NAME, version=PYQT_VERSION_STR), file=sys.stderr) return 2 return 0 if __name__ == '__main__': sys.exit(main()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2796552 PyQt6-6.6.1/lupdate/python_source.py0000644000076500000240000002576514532160372016321 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import ast import re import tokenize from .source_file import SourceFile from .translations import Context, EmbeddedComments, Message from .user import User, UserException class PythonSource(SourceFile, User): """ Encapsulate a Python source file. """ # The regular expression to extract a PEP 263 encoding. _PEP_263 = re.compile(rb'^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)') def __init__(self, **kwargs): """ Initialise the object. """ super().__init__(**kwargs) # Read the source file. self.progress("Reading {0}...".format(self.filename)) with open(self.filename, 'rb') as f: source = f.read() # Implement universal newlines. source = source.replace(b'\r\n', b'\n').replace(b'\r', b'\n') # Try and extract a PEP 263 encoding. encoding = 'UTF-8' for line_nr, line in enumerate(source.split(b'\n')): if line_nr > 1: break match = re.match(self._PEP_263, line) if match: encoding = match.group(1).decode('ascii') break # Decode the source according to the encoding. try: source = source.decode(encoding) except LookupError: raise UserException("Unsupported encoding '{0}'".format(encoding)) # Parse the source file. self.progress("Parsing {0}...".format(self.filename)) try: tree = ast.parse(source, filename=self.filename) except SyntaxError as e: raise UserException( "Invalid syntax at line {0} of {1}:\n{2}".format( e.lineno, e.filename, e.text.rstrip())) # Look for translation contexts and their contents. visitor = Visitor(self) visitor.visit(tree) # Read the file again as a sequence of tokens so that we see the # comments. with open(self.filename, 'rb') as f: current = None for token in tokenize.tokenize(f.readline): if token.type == tokenize.COMMENT: # See if it is an embedded comment. parts = token.string.split(' ', maxsplit=1) if len(parts) == 2: if parts[0] == '#:': if current is None: current = EmbeddedComments() current.extra_comments.append(parts[1]) elif parts[0] == '#=': if current is None: current = EmbeddedComments() current.message_id = parts[1] elif parts[0] == '#~': parts = parts[1].split(' ', maxsplit=1) if len(parts) == 1: parts.append('') if current is None: current = EmbeddedComments() current.extras.append(parts) elif token.type == tokenize.NL: continue elif current is not None: # Associate the embedded comment with the line containing # this token. line_nr = token.start[0] # See if there is a message on that line. for context in self.contexts: for message in context.messages: if message.line_nr == line_nr: break else: message = None if message is not None: message.embedded_comments = current break current = None class Visitor(ast.NodeVisitor): """ A visitor that extracts translation contexts. """ def __init__(self, source): """ Initialise the visitor. """ self._source = source self._context_stack = [] super().__init__() def visit_Call(self, node): """ Visit a call. """ # Parse the arguments if a translation function is being called. call_args = None if isinstance(node.func, ast.Attribute): name = node.func.attr elif isinstance(node.func, ast.Name): name = node.func.id if name == 'QT_TR_NOOP': call_args = self._parse_QT_TR_NOOP(node) elif name == 'QT_TRANSLATE_NOOP': call_args = self._parse_QT_TRANSLATE_NOOP(node) else: name = '' # Allow these to be either methods or functions. if name == 'tr': call_args = self._parse_tr(node) elif name == 'translate': call_args = self._parse_translate(node) # Update the context if the arguments are usable. if call_args is not None and call_args.source != '': call_args.context.messages.append( Message(self._source.filename, node.lineno, call_args.source, call_args.disambiguation, (call_args.numerus))) self.generic_visit(node) def visit_ClassDef(self, node): """ Visit a class. """ try: name = self._context_stack[-1].name + '.' + node.name except IndexError: name = node.name self._context_stack.append(Context(name)) self.generic_visit(node) context = self._context_stack.pop() if context.messages: self._source.contexts.append(context) def _get_current_context(self): """ Return the current Context object if there is one. """ return self._context_stack[-1] if self._context_stack else None @classmethod def _get_first_str(cls, args): """ Get the first of a list of arguments as a str. """ # Check that there is at least one argument. if not args: return None return cls._get_str(args[0]) def _get_or_create_context(self, name): """ Return the Context object for a name, creating it if necessary. """ for context in self._source.contexts: if context.name == name: return context context = Context(name) self._source.contexts.append(context) return context @staticmethod def _get_str(node, allow_none=False): """ Return the str from a node or None if it wasn't an appropriate node. """ if isinstance(node, ast.Str): return node.s if isinstance(node, ast.Constant): if isinstance(node.value, str): return node.value if allow_none and node.value is None: return '' return None def _parse_QT_TR_NOOP(self, node): """ Parse the arguments to QT_TR_NOOP(). """ # Ignore unless there is a current context. context = self._get_current_context() if context is None: return None call_args = self._parse_noop_without_context(node.args, node.keywords) if call_args is None: return None call_args.context = context return call_args def _parse_QT_TRANSLATE_NOOP(self, node): """ Parse the arguments to QT_TRANSLATE_NOOP(). """ # Get the context. name = self._get_first_str(node.args) if name is None: return None call_args = self._parse_noop_without_context(node.args[1:], node.keywords) if call_args is None: return None call_args.context = self._get_or_create_context(name) return call_args def _parse_tr(self, node): """ Parse the arguments to tr(). """ # Ignore unless there is a current context. context = self._get_current_context() if context is None: return None call_args = self._parse_without_context(node.args, node.keywords) if call_args is None: return None call_args.context = context return call_args def _parse_translate(self, node): """ Parse the arguments to translate(). """ # Get the context. name = self._get_first_str(node.args) if name is None: return None call_args = self._parse_without_context(node.args[1:], node.keywords) if call_args is None: return None call_args.context = self._get_or_create_context(name) return call_args def _parse_without_context(self, args, keywords): """ Parse arguments for a message source and optional disambiguation and n. """ # The source is required. source = self._get_first_str(args) if source is None: return None if len(args) > 1: disambiguation = self._get_str(args[1], allow_none=True) else: for kw in keywords: if kw.arg == 'disambiguation': disambiguation = self._get_str(kw.value, allow_none=True) break else: disambiguation = '' # Ignore if the disambiguation is specified but isn't a string. if disambiguation is None: return None if len(args) > 2: numerus = True else: numerus = 'n' in keywords if len(args) > 3: return None return CallArguments(source, disambiguation, numerus) def _parse_noop_without_context(self, args, keywords): """ Parse arguments for a message source. """ # There must be exactly one positional argument. if len(args) != 1 or len(keywords) != 0: return None source = self._get_str(args[0]) if source is None: return None return CallArguments(source) class CallArguments: """ Encapsulate the possible arguments of a translation function. """ def __init__(self, source, disambiguation='', numerus=False): """ Initialise the object. """ self.context = None self.source = source self.disambiguation = disambiguation self.numerus = numerus ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2765825 PyQt6-6.6.1/lupdate/source_file.py0000644000076500000240000000213214532160372015676 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class SourceFile: """ The base class for any source file that provides translation contexts. """ def __init__(self, filename, **kwargs): """ Initialise the object. """ super().__init__(**kwargs) self.filename = filename self.contexts = [] ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2741318 PyQt6-6.6.1/lupdate/translation_file.py0000644000076500000240000003520014532160372016736 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import os from xml.etree import ElementTree from .user import User, UserException class TranslationFile(User): """ Encapsulate a translation file. """ def __init__(self, ts_file, no_obsolete, no_summary, **kwargs): """ Initialise the translation file. """ super().__init__(**kwargs) if os.path.isfile(ts_file): self.progress("Reading {0}...".format(ts_file)) try: self._root = ElementTree.parse(ts_file).getroot() except Exception as e: raise UserException( "{}: {}: {}".format(ts_file, "invalid translation file", str(e))) else: self._root = ElementTree.fromstring(_EMPTY_TS) self._ts_file = ts_file self._no_obsolete = no_obsolete self._no_summary = no_summary self._updated_contexts = {} # Create a dict of contexts keyed by the context name and having the # list of message elements as the value. self._contexts = {} # Also create a dict of existing translations so that they can be # re-used. self._translations = {} context_els = [] for context_el in self._root: if context_el.tag != 'context': continue context_els.append(context_el) name = '' message_els = [] for el in context_el: if el.tag == 'name': name = el.text elif el.tag == 'message': message_els.append(el) if name: self._contexts[name] = message_els for message_el in message_els: source_el = message_el.find('source') if source_el is None or not source_el.text: continue translation_el = message_el.find('translation') if translation_el is None or not translation_el.text: continue self._translations[source_el.text] = translation_el.text # Remove the context elements but keep everything else in the root # (probably set by Linguist). for context_el in context_els: self._root.remove(context_el) # Clear the summary statistics. self._nr_new = 0 self._nr_new_duplicates = 0 self._nr_new_using_existing_translation = 0 self._nr_existing = 0 self._nr_kept_obsolete = 0 self._nr_discarded_obsolete = 0 self._nr_discarded_untranslated = 0 # Remember all new messages so we can make the summary less confusing # than it otherwise might be. self._new_message_els = [] def update(self, source): """ Update the translation file from a SourceFile object. """ self.progress( "Updating {0} from {1}...".format(self._ts_file, source.filename)) for context in source.contexts: # Get the messages that we already know about for this context. try: message_els = self._contexts[context.name] except KeyError: message_els = [] # Get the messages that have already been updated. updated_message_els = self._get_updated_message_els(context.name) for message in context.messages: message_el = self._find_message(message, message_els) if message_el is not None: # Move the message to the updated list. message_els.remove(message_el) self._add_message_el(message_el, updated_message_els) else: # See if this is a new message. If not then we just have # another location for an existing message. message_el = self._find_message(message, updated_message_els) if message_el is None: message_el = self._make_message_el(message) updated_message_els.append(message_el) self.progress( "Added new message '{0}'".format( self.pretty(message.source))) self._nr_new += 1 else: self.progress( "Updated message '{0}'".format( self.pretty(message.source))) # Go through any translations making sure they are not # 'vanished' which might happen if we have restored a # previously obsolete message. for translation_el in message_el.findall('translation'): if translation_el.get('type') == 'vanished': if translation_el.text: del translation_el.attrib['type'] else: translation_el.set('type', 'unfinished') # Don't count another copy of a new message as an existing # one. if message_el in self._new_message_els: self._nr_new_duplicates += 1 else: self._nr_existing += 1 message_el.insert(0, self._make_location_el(message)) def write(self): """ Write the translation file back to the filesystem. """ # If we are keeping obsolete messages then add them to the updated # message elements list. for name, message_els in self._contexts.items(): updated_message_els = None for message_el in message_els: source = self.pretty(message_el.find('source').text) translation_el = message_el.find('translation') if translation_el is not None and translation_el.text: if self._no_obsolete: self.progress( "Discarded obsolete message '{0}'".format( source)) self._nr_discarded_obsolete += 1 else: translation_el.set('type', 'vanished') if updated_message_els is None: updated_message_els = self._get_updated_message_els( name) self._add_message_el(message_el, updated_message_els) self.progress( "Kept obsolete message '{0}'".format(source)) self._nr_kept_obsolete += 1 else: self.progress( "Discarded untranslated message '{0}'".format( source)) self._nr_discarded_untranslated += 1 # Created the sorted context elements. for name in sorted(self._updated_contexts.keys()): context_el = ElementTree.Element('context') name_el = ElementTree.Element('name') name_el.text = name context_el.append(name_el) context_el.extend(self._updated_contexts[name]) self._root.append(context_el) self.progress("Writing {0}...".format(self._ts_file)) with open(self._ts_file, 'w', encoding='utf-8', newline='\n') as f: f.write('\n') f.write('\n') # Python v3.9 and later. if hasattr(ElementTree, 'indent'): ElementTree.indent(self._root) ElementTree.ElementTree(self._root).write(f, encoding='unicode') f.write('\n') if not self._no_summary: self._summary() @staticmethod def _add_message_el(message_el, updated_message_els): """ Add a message element to a list of updated message elements. """ # Remove all the location elements. for location_el in message_el.findall('location'): message_el.remove(location_el) # Add the message to the updated list. updated_message_els.append(message_el) @classmethod def _find_message(cls, message, message_els): """ Return the message element for a message from a list. """ for message_el in message_els: source = '' comment = '' extra_comment = '' extras = [] # Extract the data from the element. for el in message_el: if el.tag == 'source': source = el.text elif el.tag == 'comment': comment = el.text elif el.tag == 'extracomment': extra_comment = el.text elif el.tag.startswith('extra-'): extras.append([el.tag[6:], el.text]) # Compare with the message. if source != message.source: continue if comment != message.comment: continue if extra_comment != cls._get_message_extra_comments(message): continue if extras != message.embedded_comments.extras: continue return message_el return None @staticmethod def _get_message_extra_comments(message): """ Return a message's extra comments as they appear in a .ts file. """ return ' '.join(message.embedded_comments.extra_comments) def _get_updated_message_els(self, name): """ Return the list of updated message elements for a context. """ try: updated_message_els = self._updated_contexts[name] except KeyError: updated_message_els = [] self._updated_contexts[name] = updated_message_els return updated_message_els def _make_location_el(self, message): """ Return a 'location' element. """ return ElementTree.Element('location', filename=os.path.relpath(message.filename, start=os.path.dirname(os.path.abspath(self._ts_file))), line=str(message.line_nr)) def _make_message_el(self, message): """ Return a 'message' element. """ attrs = {} if message.embedded_comments.message_id: attrs['id'] = message.embedded_comments.message_id if message.numerus: attrs['numerus'] = 'yes' message_el = ElementTree.Element('message', attrs) source_el = ElementTree.Element('source') source_el.text = message.source message_el.append(source_el) if message.comment: comment_el = ElementTree.Element('comment') comment_el.text = message.comment message_el.append(comment_el) if message.embedded_comments.extra_comments: extracomment_el = ElementTree.Element('extracomment') extracomment_el.text = self._get_message_extra_comments(message) message_el.append(extracomment_el) translation_el = ElementTree.Element('translation', type='unfinished') # Try and find another message with the same source and use its # translation if it has one. translation = self._translations.get(message.source) if translation: translation_el.text = translation self.progress( "Reused existing translation for '{0}'".format( self.pretty(message.source))) self._nr_new_using_existing_translation += 1 if message.numerus: translation_el.append(ElementTree.Element( 'numerusform')) message_el.append(translation_el) for field, value in message.embedded_comments.extras: el = ElementTree.Element('extra-' + field) el.text = value message_el.append(el) self._new_message_els.append(message_el) return message_el def _summary(self): """ Display the summary of changes to the user. """ summary_lines = [] # Display a line of the summary and the heading if not already done. def summary(line): nonlocal summary_lines if not summary_lines: summary_lines.append( "Summary of changes to {ts}:".format(ts=self._ts_file)) summary_lines.append(" " + line) if self._nr_new: if self._nr_new_duplicates: summary("{0} new messages were added (and {1} duplicates)".format( self._nr_new, self._nr_new_duplicates)) else: summary("{0} new messages were added".format(self._nr_new)) if self._nr_new_using_existing_translation: summary("{0} messages reused existing translations".format( self._nr_new_using_existing_translation)) if self._nr_existing: summary("{0} existing messages were found".format( self._nr_existing)) if self._nr_kept_obsolete: summary("{0} obsolete messages were kept".format( self._nr_kept_obsolete)) if self._nr_discarded_obsolete: summary("{0} obsolete messages were discarded".format( self._nr_discarded_obsolete)) if self._nr_discarded_untranslated: summary("{0} untranslated messages were discarded".format( self._nr_discarded_untranslated)) if not summary_lines: summary_lines.append("{ts} was unchanged".format(ts=self._ts_file)) print(os.linesep.join(summary_lines)) # The XML of an empty .ts file. This is what a current lupdate will create # with an empty C++ source file. _EMPTY_TS = ''' ''' ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2751725 PyQt6-6.6.1/lupdate/translations.py0000644000076500000240000000314114532160372016121 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class Context: """ Encapsulate a message context. """ def __init__(self, name): """ Initialise the context. """ self.name = name self.messages = [] class EmbeddedComments: """ Encapsulate information for a translator embedded in comments. """ def __init__(self): """ Initialise the object. """ self.message_id = '' self.extra_comments = [] self.extras = [] class Message: """ Encapsulate a message. """ def __init__(self, filename, line_nr, source, comment, numerus): """ Initialise the message. """ self.filename = filename self.line_nr = line_nr self.source = source self.comment = comment self.numerus = numerus self.embedded_comments = EmbeddedComments() ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.270825 PyQt6-6.6.1/lupdate/user.py0000644000076500000240000000274014532160372014362 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class UserException(Exception): """ Encapsulate an exception ultimate caused by the user. """ pass class User: """ A mixin that provides methods for communicating with the user. """ def __init__(self, verbose, **kwargs): """ Initialise the object. """ super().__init__(**kwargs) self._verbose = verbose @staticmethod def pretty(text): """ Returns a pretty-fied version of some text suitable for displaying to the user. """ return text.replace('\n', '\\n') def progress(self, message): """ Display a progress message. """ if self._verbose: print(message) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3265707 PyQt6-6.6.1/project.py0000644000076500000240000007245114532160372013422 0ustar00philstaff# This is the PyQt6 build script. # # Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import glob import os import sys from pyqtbuild import PyQtBindings, PyQtProject, QmakeTargetInstallable from sipbuild import (Buildable, BuildableModule, Installable, Option, UserException) # The minimum sip module ABI version needed. ABI_VERSION = '13.6' class PyQt(PyQtProject): """ The PyQt6 project. """ def __init__(self): """ Initialise the project. """ # We specify the name of the sip module because PyQt-builder doesn't # provide it if we are creating an sdist. super().__init__(abi_version=ABI_VERSION, sip_module='PyQt6.sip', dunder_init=True, tag_prefix='Qt', console_scripts=[ 'pylupdate6 = PyQt6.lupdate.pylupdate:main', 'pyuic6 = PyQt6.uic.pyuic:main']) # Each set of bindings must appear after any set they depend on. # QtLocation is still to be ported to Qt6. self.bindings_factories = [QtCore, QtNetwork, QtGui, QtQml, QtWidgets, QtDBus, QtDesigner, QtHelp, QtOpenGL, QtOpenGLWidgets, QtPrintSupport, QtQuick, QtQuick3D, QtQuickWidgets, QtSql, QtSvg, QtSvgWidgets, QtTest, QtXml, QtMultimedia, QtMultimediaWidgets, QtPositioning, QtRemoteObjects, QtSensors, QtSerialPort, QtWebChannel, QtWebSockets, QtBluetooth, QtNfc, QtPdf, QtPdfWidgets, QtSpatialAudio, QtTextToSpeech, QAxContainer] def apply_user_defaults(self, tool): """ Set default values where needed. """ if self.license_dir is None: self.license_dir = os.path.join(self.root_dir, 'sip') else: self.license_dir = os.path.abspath(self.license_dir) super().apply_user_defaults(tool) if not self.tools: self.console_scripts = [] def get_dunder_init(self): """ Return the contents of the __init__.py file to install. """ with open(os.path.join(self.root_dir, '__init__.py')) as f: dunder_init = f.read() if self.py_platform == 'win32': dunder_init += """ def find_qt(): import os, sys qtcore_dll = '\\\\Qt6Core.dll' dll_dir = os.path.dirname(sys.executable) if not os.path.isfile(dll_dir + qtcore_dll): path = os.environ['PATH'] dll_dir = os.path.dirname(__file__) + '\\\\Qt6\\\\bin' if os.path.isfile(dll_dir + qtcore_dll): path = dll_dir + ';' + path os.environ['PATH'] = path else: for dll_dir in path.split(';'): if os.path.isfile(dll_dir + qtcore_dll): break else: return try: os.add_dll_directory(dll_dir) except AttributeError: pass find_qt() del find_qt """ return dunder_init def get_options(self): """ Return the sequence of configurable options. """ # Get the standard options. options = super().get_options() # Add our new options. options.append( Option('confirm_license', option_type=bool, help="confirm acceptance of the license")) options.append( Option('license_dir', option_type=str, help="the license file can be found in DIR", metavar="DIR")) options.append( Option('qt_shared', option_type=bool, help="assume Qt has been built as shared libraries")) options.append( Option('designer_plugin', option_type=bool, inverted=True, help="disable the building of the Python plugin for Qt Designer")) options.append( Option('qml_plugin', option_type=bool, inverted=True, help="disable the building of the Python plugin for qmlscene")) options.append( Option('dbus', option_type=str, help="the directory containing the dbus/dbus-python.h file", metavar="DIR")) options.append( Option('dbus_python', option_type=bool, inverted=True, help="disable the Qt support for the dbus-python package")) options.append( Option('tools', option_type=bool, inverted=True, help="disable the installation of pyuic6 and pylupdate6")) return options def update(self, tool): """ Update the configuration. """ if tool not in Option.BUILD_TOOLS: return # Check we support the version of Qt. if self.builder.qt_version >> 16 != 6: raise UserException( "Qt v6 is required, not v{0}".format( self.builder.qt_version_str)) # Automatically confirm the license if there might not be a command # line option to do so. if tool == 'pep517': self.confirm_license = True self._check_license() # Handle the platform tag. platform_tags_map = { 'android': 'Android', 'darwin': 'macOS', 'ios': 'iOS', 'wasm': 'WebAssembly', 'win32': 'Windows', } self.bindings['QtCore'].tags.append( platform_tags_map.get(self.py_platform, 'Linux')) # Make sure the bindings are buildable. super().update(tool) # PyQt6-WebEngine needs to know if QtWebChannel is available. if 'QtWebChannel' not in self.bindings: qtcore = self.bindings.get('QtCore') if qtcore is not None: qtcore.disabled_features.append('PyQt_WebChannel') # Always install the lupdate module. installable = Installable('lupdate', target_subdir='PyQt6') installable.files.append(os.path.join(self.root_dir, 'lupdate')) self.installables.append(installable) # Always install the uic module. installable = Installable('uic', target_subdir='PyQt6') installable.files.append(os.path.join(self.root_dir, 'uic')) self.installables.append(installable) # If any set of bindings is being built as a debug version then assume # the plugins and DBus support should as well. for bindings in self.bindings.values(): if bindings.debug: others_debug = True break else: others_debug = self.py_debug # Add the plugins. For the moment we don't include them in wheels. # This may change when we improve the bundling of Qt. if tool in ('build', 'install'): if self.designer_plugin and 'QtDesigner' in self.bindings: self._add_plugin('designer', "Qt Designer", 'pyqt6', 'designer', others_debug) if self.qml_plugin and 'QtQml' in self.bindings: self._add_plugin('qmlscene', "qmlscene", 'pyqt6qmlplugin', 'PyQt6', others_debug) # Add the dbus-python support. if self.dbus_python: self._add_dbus(others_debug) def _add_dbus(self, debug): """ Add the dbus-python support. """ self.progress( "Checking to see if the dbus-python support should be built") # See if dbus-python is installed. try: import dbus.mainloop except ImportError: self.progress( "The dbus-python package does not seem to be installed.") return dbus_module_dir = dbus.mainloop.__path__[0] # Get the flags for the DBus library. dbus_inc_dirs = [] dbus_lib_dirs = [] dbus_libs = [] args = ['pkg-config', '--cflags-only-I', '--libs dbus-1'] for line in self.read_command_pipe(args, fatal=False): for flag in line.strip().split(): if flag.startswith('-I'): dbus_inc_dirs.append(flag[2:]) elif flag.startswith('-L'): dbus_lib_dirs.append(flag[2:]) elif flag.startswith('-l'): dbus_libs.append(flag[2:]) if not any([dbus_inc_dirs, dbus_lib_dirs, dbus_libs]): self.progress("DBus v1 does not seem to be installed.") # Try and find dbus-python.h. The current PyPI package doesn't install # it. We look where DBus itself is installed. if self.dbus: dbus_inc_dirs.append(self.dbus) for d in dbus_inc_dirs: if os.path.isfile(os.path.join(d, 'dbus', 'dbus-python.h')): break else: self.progress( "dbus/dbus-python.h could not be found and so the " "dbus-python support module will be disabled. If " "dbus-python is installed then use the --dbus argument to " "explicitly specify the directory containing " "dbus/dbus-python.h.") return # Create the buildable. sources_dir = os.path.join(self.root_dir, 'dbus') buildable = BuildableModule(self, 'dbus', 'dbus.mainloop.pyqt6', uses_limited_api=True) buildable.builder_settings.append('QT -= gui') buildable.sources.extend(glob.glob(os.path.join(sources_dir, '*.cpp'))) buildable.headers.extend(glob.glob(os.path.join(sources_dir, '*.h'))) buildable.include_dirs.extend(dbus_inc_dirs) buildable.library_dirs.extend(dbus_lib_dirs) buildable.libraries.extend(dbus_libs) buildable.debug = debug self.buildables.append(buildable) def _add_plugin(self, name, user_name, target_name, target_subdir, debug): """ Add a plugin to the project buildables. """ builder = self.builder # Check we have a shared interpreter library. if not self.py_pylib_shlib: self.progress("The {0} plugin was disabled because a shared Python library couldn't be found.".format(user_name)) return # Where the plugin will (eventually) be installed. target_plugin_dir = os.path.join( builder.qt_configuration['QT_INSTALL_PLUGINS'], target_subdir) # Create the buildable and add it to the builder. buildable = Buildable(self, name) self.buildables.append(buildable) # The platform-specific name of the plugin file. if self.py_platform == 'win32': target_name = target_name + '.dll' elif self.py_platform == 'darwin': target_name = 'lib' + target_name + '.dylib' else: target_name = 'lib' + target_name + '.so' # Create the corresponding installable. installable = QmakeTargetInstallable(target_name, target_plugin_dir) buildable.installables.append(installable) # Create the .pro file. self.progress( "Generating the {0} plugin .pro file".format(user_name)) root_plugin_dir = os.path.join(self.root_dir, name) with open(os.path.join(root_plugin_dir, name + '.pro-in')) as f: prj = f.read() prj = prj.replace('@QTCONFIG@', 'debug' if debug else 'release') prj = prj.replace('@PYINCDIR@', builder.qmake_quote(self.py_include_dir)) prj = prj.replace('@SIPINCDIR@', builder.qmake_quote(self.build_dir)) prj = prj.replace('@PYLINK@', '-L{} -l{}'.format(self.py_pylib_dir, self.py_pylib_lib)) prj = prj.replace('@PYSHLIB@', self.py_pylib_shlib) prj = prj.replace('@QTPLUGINDIR@', builder.qmake_quote(target_plugin_dir)) # Write the .pro file. pro_path = os.path.join(buildable.build_dir, name + '.pro') pro_f = self.open_for_writing(pro_path) pro_f.write(prj) pro_f.write(''' INCLUDEPATH += {} VPATH = {} '''.format(builder.qmake_quote(root_plugin_dir), builder.qmake_quote(root_plugin_dir))) pro_f.write('\n'.join(builder.qmake_settings) + '\n') pro_f.close() def _check_license(self): """ Handle the validation of the PyQt6 license. """ license_dat = os.path.join(self.root_dir, 'license.dat') if os.path.isfile(license_dat): ltype = lname = lfile = None with open(license_dat) as lf: for line in lf: parts = line.split('=') if len(parts) == 2: name, value = parts name = name.strip() value = value.strip()[1:-1] if name == 'LicenseType': ltype = value elif name == 'LicenseName': lname = value elif name == 'LicenseFile': lfile = value if lname is None or lfile is None: ltype = None else: ltype = None # Default to the GPL. if ltype is None: ltype = 'GPL' lname = "GNU General Public License" lfile = 'pyqt-gpl.sip' self.progress( "This is the {0} version of PyQt {1} (licensed under the {2}) " "for Python {3} on {4}.".format( ltype, self.version_str, lname, sys.version.split()[0], sys.platform)) # Confirm the license if not already done. if not self.confirm_license: loptions = """ Type 'L' to view the license. """ sys.stdout.write(loptions) sys.stdout.write("""Type 'yes' to accept the terms of the license. Type 'no' to decline the terms of the license. """) while True: sys.stdout.write("Do you accept the terms of the license? ") sys.stdout.flush() try: resp = sys.stdin.readline() except KeyboardInterrupt: raise SystemExit except: resp = "" resp = resp.strip().lower() if resp == "yes": break if resp == "no": sys.exit() if resp == 'l': os.system('more LICENSE') # Check that the license file exists and fix its syntax. src_lfile = os.path.join(self.license_dir, lfile) if os.path.isfile(src_lfile): self.progress("Found the license file '{0}'.".format(lfile)) self._fix_license(src_lfile, os.path.join(self.build_dir, lfile + '5')) # Make sure sip can find the license file. self.sip_include_dirs.append(self.build_dir) else: raise UserException( "Please copy the license file '{0}' to '{1}'".format(lfile, self.license_dir)) def _fix_license(self, src_lfile, dst_lfile): """ Copy the license file and fix it so that it conforms to the SIP v5 syntax. """ with open(src_lfile) as f: f5 = self.open_for_writing(dst_lfile) for line in f: if line.startswith('%License'): anno_start = line.find('/') anno_end = line.rfind('/') if anno_start < 0 or anno_end < 0 or anno_start == anno_end: f5.close() raise UserException( "'{0}' has missing annotations".format(name)) annos = line[anno_start + 1:anno_end].split(', ') annos5 = [anno[0].lower() + anno[1:] for anno in annos] f5.write('%License(') f5.write(', '.join(annos5)) f5.write(')\n') else: f5.write(line) f5.close() class QAxContainer(PyQtBindings): """ The QAxContainer bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QAxContainer', qmake_QT=['axcontainer'], test_headers=['qaxobject.h'], test_statement='new QAxObject()') class QtBluetooth(PyQtBindings): """ The QtBluetooth bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtBluetooth', qmake_QT=['bluetooth'], test_headers=['qbluetoothaddress.h'], test_statement='new QBluetoothAddress()') class QtCore(PyQtBindings): """ The QtCore bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtCore', qmake_QT=['-gui'], define_macros=['QT_KEYPAD_NAVIGATION']) def handle_test_output(self, test_output): """ Handle the output from the external test program and return True if the bindings are buildable. """ project = self.project if not project.qt_shared and test_output[0] == 'shared': project.qt_shared = True # If permissions are available make sure the static plugins get # compiled in. if 'PyQt_Permissions' not in test_output: self.builder_settings.append('CONFIG += permssions') self.builder_settings.append( 'QMAKE_INFO_PLIST = ' + self._info_plist()) return super().handle_test_output(test_output[1:]) def _info_plist(self): """ Create an Info.plist that contains entries for all supported permissions and return the absolute name of the file. """ keys = ('NSBluetoothAlwaysUsageDescription', 'NSCalendarsUsageDescription', 'NSCameraUsageDescription', 'NSContactsUsageDescription', 'NSLocationUsageDescription', 'NSMicrophoneUsageDescription') content = '\n'.join( ['{}Dummy'.format(k) for k in keys]) info_plist = os.path.join(self.project.build_dir, 'Info.plist') with open(info_plist, 'w') as f: f.write( ''' {} '''.format(content)) return info_plist class QtDBus(PyQtBindings): """ The QtDBus bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtDBus', qmake_QT=['dbus', '-gui'], test_headers=['qdbusconnection.h'], test_statement='QDBusConnection::systemBus()') class QtDesigner(PyQtBindings): """ The QtDesigner bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtDesigner', qmake_QT=['designer'], test_headers=['QExtensionFactory', 'QtUiPlugin/customwidget.h'], test_statement='new QExtensionFactory()') def is_buildable(self): """ Return True if the bindings are buildable. """ project = self.project if not project.qt_shared: project.progress( "The QtDesigner bindings are disabled with a static Qt " "installation") return False return super().is_buildable() class QtGui(PyQtBindings): """ The QtGui bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtGui') class QtHelp(PyQtBindings): """ The QtHelp bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtHelp', qmake_QT=['help'], test_headers=['qhelpengine.h'], test_statement='new QHelpEngine("foo")') class QtLocation(PyQtBindings): """ The QtLocation bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtLocation', qmake_QT=['location'], test_headers=['qplace.h'], test_statement='new QPlace()') class QtMultimedia(PyQtBindings): """ The QtMultimedia bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtMultimedia', qmake_QT=['multimedia'], test_headers=['QAudioDevice'], test_statement='new QAudioDevice()') class QtMultimediaWidgets(PyQtBindings): """ The QtMultimediaWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtMultimediaWidgets', qmake_QT=['multimediawidgets'], test_headers=['QVideoWidget'], test_statement='new QVideoWidget()') class QtNetwork(PyQtBindings): """ The QtNetwork bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtNetwork', qmake_QT=['network', '-gui']) class QtNfc(PyQtBindings): """ The QtNfc bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtNfc', qmake_QT=['nfc', '-gui'], test_headers=['qnearfieldmanager.h'], test_statement='new QNearFieldManager()') class QtOpenGL(PyQtBindings): """ The QtOpenGL bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtOpenGL', qmake_QT=['opengl'], test_headers=['qopengldebug.h'], test_statement='new QOpenGLDebugLogger()') class QtOpenGLWidgets(PyQtBindings): """ The QtOpenGLWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtOpenGLWidgets', qmake_QT=['openglwidgets'], test_headers=['qopenglwidget.h'], test_statement='new QOpenGLWidget()') class QtPdf(PyQtBindings): """ The QtPdf bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtPdf', qmake_QT=['pdf'], test_headers=['qpdfdocument.h'], test_statement='new QPdfDocument(nullptr)') class QtPdfWidgets(PyQtBindings): """ The QtPdfWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtPdfWidgets', qmake_QT=['pdfwidgets'], test_headers=['qpdfview.h'], test_statement='new QPdfView(nullptr)') class QtPositioning(PyQtBindings): """ The QtPositioning bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtPositioning', qmake_QT=['positioning'], test_headers=['qgeoaddress.h'], test_statement='new QGeoAddress()') class QtPrintSupport(PyQtBindings): """ The QtPrintSupport bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtPrintSupport', qmake_QT=['printsupport']) class QtQml(PyQtBindings): """ The QtQml bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtQml', qmake_QT=['qml'], test_headers=['qjsengine.h'], test_statement='new QJSEngine()') class QtQuick(PyQtBindings): """ The QtQuick bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtQuick', qmake_QT=['quick'], test_headers=['qquickwindow.h'], test_statement='new QQuickWindow()') class QtQuick3D(PyQtBindings): """ The QtQuick3D bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtQuick3D', qmake_QT=['quick3d'], test_headers=['qquick3d.h'], test_statement='QQuick3D::idealSurfaceFormat()') class QtQuickWidgets(PyQtBindings): """ The QtQuickWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtQuickWidgets', qmake_QT=['quickwidgets'], test_headers=['qquickwidget.h'], test_statement='new QQuickWidget()') class QtRemoteObjects(PyQtBindings): """ The QtRemoteObjects bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtRemoteObjects', qmake_QT=['remoteobjects', '-gui'], test_headers=['qtremoteobjectsversion.h'], test_statement='const char *v = QTREMOTEOBJECTS_VERSION_STR') class QtSensors(PyQtBindings): """ The QtSensors bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSensors', qmake_QT=['sensors'], test_headers=['qsensor.h'], test_statement='new QSensor(QByteArray())') class QtSerialPort(PyQtBindings): """ The QtSerialPort bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSerialPort', qmake_QT=['serialport'], test_headers=['qserialport.h'], test_statement='new QSerialPort()') class QtSpatialAudio(PyQtBindings): """ The QtSpatialAudio bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSpatialAudio', qmake_QT=['spatialaudio'], test_headers=['qaudioengine.h'], test_statement='new QAudioEngine()') class QtSql(PyQtBindings): """ The QtSql bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSql', qmake_QT=['sql', 'widgets'], test_headers=['qsqldatabase.h'], test_statement='new QSqlDatabase()') class QtSvg(PyQtBindings): """ The QtSvg bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSvg', qmake_QT=['svg'], test_headers=['qsvgrenderer.h'], test_statement='new QSvgRenderer()') class QtSvgWidgets(PyQtBindings): """ The QtSvgWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtSvgWidgets', qmake_QT=['svgwidgets'], test_headers=['qsvgwidget.h'], test_statement='new QSvgWidget()') class QtTest(PyQtBindings): """ The QtTest bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtTest', qmake_QT=['testlib', 'widgets'], test_headers=['QtTest'], test_statement='QTest::qSleep(0)') class QtTextToSpeech(PyQtBindings): """ The QtTextToSpeech bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtTextToSpeech', qmake_QT=['texttospeech', '-gui', 'qmlintegration'], test_headers=['QTextToSpeech'], test_statement='new QTextToSpeech()') class QtWebChannel(PyQtBindings): """ The QtWebChannel bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtWebChannel', qmake_QT=['webchannel', 'network', '-gui'], test_headers=['qwebchannel.h'], test_statement='new QWebChannel()') class QtWebSockets(PyQtBindings): """ The QtWebSockets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtWebSockets', qmake_QT=['websockets', '-gui'], test_headers=['qwebsocket.h'], test_statement='new QWebSocket()') class QtWidgets(PyQtBindings): """ The QtWidgets bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtWidgets', qmake_QT=['widgets'], test_headers=['qwidget.h'], test_statement='new QWidget()') class QtXml(PyQtBindings): """ The QtXml bindings. """ def __init__(self, project): """ Initialise the bindings. """ super().__init__(project, 'QtXml', qmake_QT=['xml', '-gui'], test_headers=['qdom.h'], test_statement='new QDomDocument()') ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3268573 PyQt6-6.6.1/pyproject.toml0000644000076500000240000000104214532160372014302 0ustar00philstaff# Specify the build system for the project. [build-system] requires = ["sip >=6.5, <7", "PyQt-builder >=1.15, <2"] build-backend = "sipbuild.api" # Specify the PEP 566 metadata for the project. [tool.sip.metadata] name = "PyQt6" version = "6.6.1" summary = "Python bindings for the Qt cross platform application toolkit" home-page = "https://www.riverbankcomputing.com/software/pyqt/" author = "Riverbank Computing Limited" author-email = "info@riverbankcomputing.com" license = "GPL v3" description-file = "README" requires-python = ">=3.6.1" ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.7262523 PyQt6-6.6.1/qmlscene/0000755000076500000240000000000014532160403013173 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.320962 PyQt6-6.6.1/qmlscene/pluginloader.cpp0000644000076500000240000002212614532160372016374 0ustar00philstaff/* * This is the qmlscene plugin that collects all the Python plugins it can * find. * * Copyright (c) 2023 Riverbank Computing Limited * * This file is part of PyQt6. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include #include #include #include #include #include #include #include #include "pluginloader.h" // Construct the C++ plugin. PyQt6QmlPlugin::PyQt6QmlPlugin(QObject *parent) : QQmlExtensionPlugin(parent), py_plugin_obj(0), sip(0) { // Make sure the interpreter is initialised. if (!Py_IsInitialized()) { QLibrary library(PYTHON_LIB); library.setLoadHints(QLibrary::ExportExternalSymbolsHint); if (library.load()) { // If we seem to be running in a venv the set the program name // explicitly so that Python finds the right site-packages. QString venv = QString::fromLocal8Bit(qgetenv("VIRTUAL_ENV")); if (!venv.isEmpty()) { venv.append(QDir::separator()); #if defined(Q_OS_WIN) venv.append(QLatin1String("Scripts")); #else venv.append(QLatin1String("bin")); #endif venv.append(QDir::separator()).append(QLatin1String("python")); wchar_t *venv_wc = new wchar_t[venv.length() + 1]; venv_wc[venv.toWCharArray(venv_wc)] = L'\0'; Py_SetProgramName(venv_wc); delete[] venv_wc; } Py_Initialize(); getSipAPI(); #ifdef WITH_THREAD // Make sure we don't have the GIL. #if PY_VERSION_HEX < 0x03070000 PyEval_InitThreads(); #endif PyEval_SaveThread(); #endif } } } // Destroy the C++ plugin. PyQt6QmlPlugin::~PyQt6QmlPlugin() { if (Py_IsInitialized()) { #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif Py_XDECREF(py_plugin_obj); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } } // Initialize the QML engine. void PyQt6QmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri) { if (!Py_IsInitialized() || !py_plugin_obj || !sip) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif const sipTypeDef *td = sip->api_find_type("QQmlEngine"); if (!td) { PyErr_SetString(PyExc_AttributeError, "unable to find type for QQmlEngine"); } else { PyObject *engine_obj = sip->api_convert_from_type(engine, td, 0); if (!engine_obj) { td = 0; } else { PyObject *res_obj = PyObject_CallMethod(py_plugin_obj, const_cast("initializeEngine"), const_cast("Os"), engine_obj, uri); Py_DECREF(engine_obj); if (res_obj != Py_None) { if (res_obj) PyErr_Format(PyExc_TypeError, "unexpected result from initializeEngine(): %S", res_obj); td = 0; } Py_XDECREF(res_obj); } } if (!td) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Register the plugin's types. void PyQt6QmlPlugin::registerTypes(const char *uri) { // Construct the import path that the engine will have used by default. // Unfortunately we won't know about any directories added by qmlscene's -I // flag. QStringList import_path; import_path << QCoreApplication::applicationDirPath(); const char *env_path = getenv("QML2_IMPORT_PATH"); if (env_path) { #if defined(Q_OS_WIN) QLatin1Char sep(';'); #else QLatin1Char sep(':'); #endif QStringList env_dirs = QString::fromLatin1(env_path).split(sep, Qt::SkipEmptyParts); foreach (QString dir_name, env_dirs) import_path << QDir(dir_name).canonicalPath(); } import_path << QLibraryInfo::path(QLibraryInfo::Qml2ImportsPath); // Try and find the URI directory, check that it has a qmldir file and that // it has a file called *plugin.py. QString py_plugin; QString py_plugin_dir; foreach (QString dir_name, import_path) { dir_name.append('/'); dir_name.append(uri); QDir dir(dir_name); if (!dir.exists() || !dir.exists("qmldir")) continue; QStringList candidates = dir.entryList(QDir::Files|QDir::Readable); foreach (QString py_plugin_file, candidates) { QStringList parts = py_plugin_file.split('.'); if (parts.size() == 2 && parts.at(0).endsWith("plugin") && parts.at(1).startsWith("py")) { py_plugin = parts.at(0); break; } } if (!py_plugin.isEmpty()) { py_plugin_dir = QDir::toNativeSeparators(dir.absolutePath()); break; } } if (py_plugin.isEmpty()) return; #ifdef WITH_THREAD PyGILState_STATE gil = PyGILState_Ensure(); #endif if (!addToSysPath(py_plugin_dir) || !callRegisterTypes(py_plugin, uri)) PyErr_Print(); #ifdef WITH_THREAD PyGILState_Release(gil); #endif } // Call the registerTypes() function of a plugin. bool PyQt6QmlPlugin::callRegisterTypes(const QString &py_plugin, const char *uri) { // Import the plugin. PyObject *plugin_mod = PyImport_ImportModule(py_plugin.toLatin1().data()); if (!plugin_mod) return false; // Get QQmlExtensionPlugin. We do this after the import of the plugin to // allow it to fiddle with the context. PyObject *extension_plugin = getModuleAttr("PyQt6.QtQml", "QQmlExtensionPlugin"); if (!extension_plugin) { Py_DECREF(plugin_mod); return false; } // Go through the module looking for a type that implements // QQmlExtensionPlugin. PyObject *mod_dict = PyModule_GetDict(plugin_mod); PyObject *key, *value, *plugin_type = 0; Py_ssize_t pos = 0; while (PyDict_Next(mod_dict, &pos, &key, &value)) if (value != extension_plugin && PyType_Check(value) && PyType_IsSubtype((PyTypeObject *)value, (PyTypeObject *)extension_plugin)) { plugin_type = value; break; } Py_DECREF(extension_plugin); if (!plugin_type) { PyErr_Format(PyExc_AttributeError, "%s does not contain an implementation of QQmlExtensionPlugin", py_plugin.toLatin1().constData()); Py_DECREF(plugin_mod); return false; } // Create the plugin instance. PyObject *plugin_obj = PyObject_CallObject(plugin_type, NULL); Py_DECREF(plugin_mod); if (!plugin_obj) return false; // Call registerTypes(). PyObject *res_obj = PyObject_CallMethod(plugin_obj, const_cast("registerTypes"), const_cast("s"), uri); if (res_obj != Py_None) { Py_DECREF(plugin_obj); if (res_obj) { PyErr_Format(PyExc_TypeError, "unexpected result from registerTypes(): %S", res_obj); Py_DECREF(res_obj); } return false; } Py_DECREF(res_obj); py_plugin_obj = plugin_obj; return true; } // Add a directory to sys.path. bool PyQt6QmlPlugin::addToSysPath(const QString &py_plugin_dir) { PyObject *sys_path = getModuleAttr("sys", "path"); if (!sys_path) return false; PyObject *plugin_dir_obj = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, py_plugin_dir.constData(), py_plugin_dir.length()); if (!plugin_dir_obj) { Py_DECREF(sys_path); return false; } int rc = PyList_Append(sys_path, plugin_dir_obj); Py_DECREF(plugin_dir_obj); Py_DECREF(sys_path); if (rc < 0) { return false; } return true; } // Return the named attribute object from the named module. PyObject *PyQt6QmlPlugin::getModuleAttr(const char *module, const char *attr) { PyObject *mod = PyImport_ImportModule(module); if (!mod) return 0; PyObject *obj = PyObject_GetAttrString(mod, attr); Py_DECREF(mod); return obj; } // Get the SIP API. void PyQt6QmlPlugin::getSipAPI() { sip = (const sipAPIDef *)PyCapsule_Import("PyQt6.sip._C_API", 0); if (!sip) PyErr_Print(); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3214736 PyQt6-6.6.1/qmlscene/pluginloader.h0000644000076500000240000000320614532160372016037 0ustar00philstaff/* * This is the interface of the qmlscene plugin. * * Copyright (c) 2023 Riverbank Computing Limited * * This file is part of PyQt6. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _PLUGINLOADER_H #define _PLUGINLOADER_H #include #include #include #include class PyQt6QmlPlugin : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") public: PyQt6QmlPlugin(QObject *parent = 0); virtual ~PyQt6QmlPlugin(); void initializeEngine(QQmlEngine *engine, const char *uri); void registerTypes(const char *uri); private: void getSipAPI(); static bool addToSysPath(const QString &py_plugin_dir); bool callRegisterTypes(const QString &py_plugin, const char *uri); static PyObject *getModuleAttr(const char *module, const char *attr); PyObject *py_plugin_obj; const sipAPIDef *sip; }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3192134 PyQt6-6.6.1/qmlscene/qmlscene.pro-in0000644000076500000240000000070314532160372016135 0ustar00philstaffCONFIG += plugin @QTCONFIG@ warn_on QT += qml # Work around QTBUG-39300. CONFIG -= android_install TARGET = pyqt6qmlplugin TEMPLATE = lib INCLUDEPATH += @PYINCDIR@ @SIPINCDIR@ LIBS += @PYLINK@ DEFINES += PYTHON_LIB=\\\"@PYSHLIB@\\\" SOURCES = pluginloader.cpp HEADERS = pluginloader.h # Install. target.path = @QTPLUGINDIR@ python.path = @QTPLUGINDIR@ python.files = python INSTALLS += target python ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3602293 PyQt6-6.6.1/qpy/0000755000076500000240000000000014532160402012174 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3835454 PyQt6-6.6.1/qpy/QtCore/0000755000076500000240000000000014532160402013371 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.167355 PyQt6-6.6.1/qpy/QtCore/qpycore_api.h0000644000076500000240000000744614532160372016076 0ustar00philstaff// This defines the API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_API_H #define _QPYCORE_API_H #include #include #include #include #include "qpycore_namespace.h" #include "qpycore_public_api.h" QT_BEGIN_NAMESPACE class QAbstractEventDispatcher; class QObject; QT_END_NAMESPACE // Support for pyqtSlot(). PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds); // Support for pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds); // Support for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds); // Support for converting between PyObject and QString. PyObject *qpycore_PyObject_FromQString(const QString &qstr); QString qpycore_PyObject_AsQString(PyObject *obj); // Support for converting between PyObject and QVariant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar); QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err); PyObject *qpycore_PyObject_FromQVariant(const QMetaProperty &mprop, const QVariant &qvar); QVariant qpycore_PyObject_AsQVariant(const QMetaProperty &mprop, PyObject *obj, bool *ok); // Support for pyqtClassInfo() and pyqtEnum(). PyObject *qpycore_pyqtClassInfo(PyObject *args, PyObject *kwds); PyObject *qpycore_pyqtEnum(PyObject *enum_cls); // Support for creating QGenericArgument and QGenericReturnArgument instances. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data); PyObject *qpycore_ReturnFactory(PyObject *type); PyObject *qpycore_ReturnValue(PyObject *gra); // Support for QObject.__getattr__(). PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name); // Support for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj); // Support for QMetaObject.connectSlotsByName(). void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper); // Support for pyqt[Set]PickleProtocol(). extern PyObject *qpycore_pickle_protocol; // Support for qDebug() etc. int qpycore_current_context(const char **file, const char **function); // Support for QObject.disconnect(). PyObject *qpycore_qobject_disconnect(const QObject *q_obj); // Support for QObject's garbage collector code. int qpycore_clearSlotProxies(const QObject *transmitter); int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); // Support for QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py); int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr); // Support for an embedded qt.conf. bool qpycore_qt_conf(); // Utilities. void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart); // Initialisation. void qpycore_init(); void qpycore_post_init(PyObject *module_dict); // Termination. extern bool qpycore_created_qapp; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1172767 PyQt6-6.6.1/qpy/QtCore/qpycore_chimera.cpp0000644000076500000240000014103714532160372017263 0ustar00philstaff// This is the implementation of the Chimera class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The registered user-defined Python enum types. QHash Chimera::_py_enum_types; // The cache of previously parsed argument type lists. QHash > Chimera::_previously_parsed; // The registered QVariant to PyObject convertors. Chimera::FromQVariantConvertors Chimera::registeredFromQVariantConvertors; // The registered PyObject to QVariant convertors. Chimera::ToQVariantConvertors Chimera::registeredToQVariantConvertors; // The registered PyObject to QVariant data convertors. Chimera::ToQVariantDataConvertors Chimera::registeredToQVariantDataConvertors; // The base class for convenience wrappers around mapped type convertors. class BaseMappedTypeConvertor { public: BaseMappedTypeConvertor(const char *name) : td(nullptr), _name(name) {} protected: void ensureType(); const sipTypeDef *td; private: const char *_name; }; // Ensure that the type definition is available. void BaseMappedTypeConvertor::ensureType() { if (!td) { td = sipFindType(_name); Q_ASSERT(td); } } // A convenience wrapper around a mapped type convertor. template class MappedTypeConvertor : public BaseMappedTypeConvertor { public: MappedTypeConvertor(const char *name) : BaseMappedTypeConvertor(name) {} PyObject *fromMappedType(void *cpp); int toMappedType(PyObject *py, T &cpp); }; // Convert an instance of the mapped type to a Python object. A NULL pointer // is returned if there was an error. template PyObject *MappedTypeConvertor::fromMappedType(void *cpp) { ensureType(); return sipConvertFromNewType(new T(*reinterpret_cast(cpp)), td, NULL); } // Convert a Python object to an instance of the mapped type. A non-zero value // is returned if there was an error. template int MappedTypeConvertor::toMappedType(PyObject *py, T &cpp) { ensureType(); int state, iserr = 0; void *p = sipForceConvertToType(py, td, NULL, SIP_NOT_NONE, &state, &iserr); if (!iserr) { cpp = *reinterpret_cast(p); sipReleaseType(p, td, state); } return iserr; } // The different mapped type convertors. static MappedTypeConvertor variant_hash( "QHash"); static MappedTypeConvertor variant_list("QList"); static MappedTypeConvertor variant_map("QMap"); static MappedTypeConvertor variant_pair( "std::pair"); // Construct an invalid type. Chimera::Chimera() : _type(0), _py_type(0), _inexact(false), _is_qflags(false), _is_char_star(false) { } // Construct a copy. Chimera::Chimera(const Chimera &other) { _type = other._type; _py_type = other._py_type; Py_XINCREF((PyObject *)_py_type); metatype = other.metatype; _inexact = other._inexact; _is_qflags = other._is_qflags; _name = other._name; _is_char_star = other._is_char_star; } // Destroy the type. Chimera::~Chimera() { Py_XDECREF((PyObject *)_py_type); } // Register the type and pseudo fully qualified C++ name of a user-defined // Python enum. void Chimera::registerPyEnum(PyObject *enum_type, const QByteArray &cpp_qualname) { Py_INCREF(enum_type); _py_enum_types.insert(enum_type, cpp_qualname); } // Parse an object as a type. const Chimera *Chimera::parse(PyObject *obj) { Chimera *ct = new Chimera; bool parse_ok; if (PyType_Check(obj)) { // Parse the type object. parse_ok = ct->parse_py_type((PyTypeObject *)obj); if (!parse_ok) raiseParseException(obj); } else { const char *cpp_type_name = sipString_AsASCIIString(&obj); if (cpp_type_name) { // Always use normalised type names so that we have a consistent // standard. QByteArray norm_name = QMetaObject::normalizedType(cpp_type_name); Py_DECREF(obj); // Parse the type name. parse_ok = ct->parse_cpp_type(norm_name); if (!parse_ok) raiseParseCppException(cpp_type_name); } else { parse_ok = false; } } if (!parse_ok) { delete ct; return 0; } return ct; } // Parse a C++ type name as a type. const Chimera *Chimera::parse(const QByteArray &name) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(name)) { delete ct; raiseParseCppException(name.constData()); return 0; } return ct; } // Parse a meta-property as a type. const Chimera *Chimera::parse(const QMetaProperty &mprop) { Chimera *ct = new Chimera; QByteArray type_name; // The type name of an enum property sometimes includes the scope in the // name and sometimes doesn't (maybe only within the scope itself). // Therefore get the name of the meta-enum. if (mprop.isEnumType()) { QMetaEnum menum = mprop.enumerator(); type_name = QByteArray(menum.name()); if (menum.scope()) type_name.prepend("::").prepend(menum.scope()); // If it is a QFlag then we have the typedef name rather than the // underlying type which SIP knows about, therefore resolve the typedef // name. if (mprop.isFlagType()) { const char *resolved = sipResolveTypedef(type_name.constData()); if (resolved) type_name = QByteArray(resolved); } } else { type_name = QByteArray(mprop.typeName()); } ct->_type = sipFindType(type_name.constData()); ct->metatype = mprop.metaType(); ct->_inexact = true; ct->_is_qflags = mprop.isFlagType(); ct->_name = type_name; return ct; } // Parse a normalised C++ signature as a list of types. Chimera::Signature *Chimera::parse(const QByteArray &sig, const char *context) { // Extract the argument list. int start_idx = sig.indexOf('('); if (start_idx < 0) start_idx = 0; else ++start_idx; int end_idx = sig.lastIndexOf(')'); int len; if (end_idx < start_idx) len = -1; else len = end_idx - start_idx; // Parse each argument type. Chimera::Signature *parsed_sig = new Chimera::Signature(sig, true); if (len > 0) { QByteArray args_str = sig.mid(start_idx, len); // Check we haven't already done it. QList parsed_args = _previously_parsed.value(args_str); if (parsed_args.isEmpty()) { int i, arg_start, template_level; i = arg_start = template_level = 0; // Extract each argument allowing for commas in templates. for (;;) { char ch = (i < args_str.size() ? args_str.at(i) : '\0'); QByteArray arg; switch (ch) { case '<': ++template_level; break; case '>': --template_level; break; case '\0': arg = args_str.mid(arg_start, i - arg_start); break; case ',': if (template_level == 0) { arg = args_str.mid(arg_start, i - arg_start); arg_start = i + 1; } break; } if (!arg.isEmpty()) { Chimera *ct = new Chimera; if (!ct->parse_cpp_type(arg)) { delete ct; delete parsed_sig; qDeleteAll(parsed_args.constBegin(), parsed_args.constEnd()); raiseParseCppException(arg.constData(), context); return 0; } parsed_args.append(ct); if (ch == '\0') break; } ++i; } // Only parse once. _previously_parsed.insert(args_str, parsed_args); } parsed_sig->parsed_arguments = parsed_args; } return parsed_sig; } // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. Chimera::Signature *Chimera::parse(PyObject *types, const char *name, const char *context) { if (!name) name = ""; Chimera::Signature *parsed_sig = new Chimera::Signature(name, false); parsed_sig->signature.append('('); parsed_sig->py_signature.append('['); for (Py_ssize_t i = 0; i < PyTuple_Size(types); ++i) { PyObject *type = PyTuple_GetItem(types, i); const Chimera *parsed_type = parse(type); if (!parsed_type) { delete parsed_sig; raiseParseException(type, context); return 0; } parsed_sig->parsed_arguments.append(parsed_type); if (i > 0) { parsed_sig->signature.append(','); parsed_sig->py_signature.append(", "); } parsed_sig->signature.append(parsed_type->name()); if (parsed_type->_py_type) parsed_sig->py_signature.append(sipPyTypeName(parsed_type->_py_type)); else parsed_sig->py_signature.append(parsed_type->name()); } parsed_sig->signature.append(')'); parsed_sig->py_signature.append(']'); return parsed_sig; } // Raise an exception after parse() of a Python type has failed. void Chimera::raiseParseException(PyObject *type, const char *context) { if (PyType_Check(type)) { if (context) PyErr_Format(PyExc_TypeError, "Python type '%s' is not supported as %s type", sipPyTypeName((PyTypeObject *)type), context); else PyErr_Format(PyExc_TypeError, "unknown Python type '%s'", sipPyTypeName((PyTypeObject *)type)); } else { const char *cpp_type_name = sipString_AsASCIIString(&type); if (cpp_type_name) { raiseParseCppException(cpp_type_name, context); Py_DECREF(type); } } } // Raise an exception after parse() of a C++ type has failed. void Chimera::raiseParseCppException(const char *type, const char *context) { if (context) PyErr_Format(PyExc_TypeError, "C++ type '%s' is not supported as %s type", type, context); else PyErr_Format(PyExc_TypeError, "unknown C++ type '%s'", type); } // Parse the given Python type object. bool Chimera::parse_py_type(PyTypeObject *type_obj) { const sipTypeDef *td = sipTypeFromPyTypeObject(type_obj); if (td) { if (sipTypeIsNamespace(td)) return false; _type = td; _name = sipTypeName(td); set_qflags(td); if (sipTypeIsEnum(td)) { metatype = QMetaType::fromName(_name); // Unregistered enums are handled as integers. if (!metatype.isValid()) metatype = QMetaType(QMetaType::Int); } else if (_is_qflags) { metatype = QMetaType(QMetaType::Int); } else { // If there is no assignment helper then assume it is a // pointer-type. if (!get_assign_helper()) _name.append('*'); metatype = QMetaType::fromName(_name); // If it is a user type then it must be a type that SIP knows // about but was registered by Qt. if (metatype.id() < QMetaType::User) { if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) { metatype = QMetaType(QMetaType::QObjectStar); } else if (sipIsUserType((sipWrapperType *)type_obj)) { // It is a non-QObject Python sub-class so make sure it // gets wrapped in a PyQt_PyObject. _type = 0; metatype = QMetaType::fromType(); _name.clear(); } } } } else if (_py_enum_types.contains((PyObject *)type_obj)) { metatype = QMetaType(QMetaType::Int); // Note that we use the fully qualified name. _name = _py_enum_types.value((PyObject *)type_obj); } else if (type_obj == &PyList_Type) { metatype = QMetaType(QMetaType::QVariantList); } else if (type_obj == &PyUnicode_Type) { _type = sipType_QString; metatype = QMetaType(QMetaType::QString); } else if (type_obj == &PyBool_Type) { metatype = QMetaType(QMetaType::Bool); } else if (type_obj == &PyLong_Type) { // We choose to map to a C++ int for the same reasons as above and to // be consistent with Python3 where everything is a long object. If // this isn't appropriate the user can always use a string to specify // the exact C++ type they want. metatype = QMetaType(QMetaType::Int); _inexact = true; } else if (type_obj == &PyFloat_Type) { metatype = QMetaType(QMetaType::Double); } else if (type_obj == sipVoidPtr_Type) { metatype = QMetaType(QMetaType::VoidStar); _name = "void*"; } // Fallback to using a PyQt_PyObject. if (!metatype.isValid()) metatype = QMetaType::fromType(); // If there is no name so far then use the meta-type name. if (_name.isEmpty()) _name = metatype.name(); _py_type = type_obj; Py_INCREF((PyObject *)_py_type); return true; } // Set the internal QFlags flag. void Chimera::set_qflags(const sipTypeDef *td) { if (sipTypeIsMapped(td) && qpycore_is_pyqt_type(_type)) { const pyqt6MappedTypePluginDef *plugin = reinterpret_cast(sipTypePluginData(_type)); if (plugin) _is_qflags = plugin->flags & 0x01; } } // Update a C++ type so that any typedefs are resolved. QByteArray Chimera::resolve_types(const QByteArray &type) { // Split into a base type and a possible list of template arguments. QByteArray resolved = type.simplified(); // Get the raw type, ie. without any "const", "&" or "*". QByteArray raw_type; int original_raw_start; if (resolved.startsWith("const ")) original_raw_start = 6; else original_raw_start = 0; raw_type = resolved.mid(original_raw_start); while (raw_type.endsWith('&') || raw_type.endsWith('*') || raw_type.endsWith(' ')) raw_type.chop(1); int original_raw_len = raw_type.size(); if (original_raw_len == 0) return QByteArray(); // Get any template arguments. QList args; int tstart = raw_type.indexOf('<'); if (tstart >= 0) { // Make sure the template arguments are terminated. if (!raw_type.endsWith('>')) return QByteArray(); // Split the template arguments taking nested templates into account. int depth = 1, arg_start = tstart + 1; for (int i = arg_start; i < raw_type.size(); ++i) { int arg_end = -1; char ch = raw_type.at(i); if (ch == '<') { ++depth; } else if (ch == '>') { --depth; if (depth < 0) return QByteArray(); if (depth == 0) arg_end = i; } else if (ch == ',' && depth == 1) { arg_end = i; } if (arg_end >= 0) { QByteArray arg = resolve_types(raw_type.mid(arg_start, arg_end - arg_start)); if (arg.isEmpty()) return QByteArray(); args.append(arg); arg_start = arg_end + 1; } } if (depth != 0) return QByteArray(); // Remove the template arguments. raw_type.truncate(tstart); } // Expand any typedef. const char *base_type = sipResolveTypedef(raw_type.constData()); if (base_type) raw_type = base_type; // Add any (now resolved) template arguments. if (args.count() > 0) { raw_type.append('<'); for (QList::const_iterator it = args.begin();;) { raw_type.append(*it); if (++it == args.end()) break; raw_type.append(','); } if (raw_type.endsWith('>')) raw_type.append(' '); raw_type.append('>'); } // Replace the original raw type with the resolved one. resolved.replace(original_raw_start, original_raw_len, raw_type); return resolved; } // Parse the given C++ type name. bool Chimera::parse_cpp_type(const QByteArray &type) { _name = type; QByteArray nonconst_name = type.mid(type.startsWith("const ") ? 6 : 0); // Resolve any types. QByteArray resolved = resolve_types(nonconst_name); if (resolved.isEmpty()) return false; // See if the type is known to Qt. metatype = QMetaType::fromName(resolved); // If not then use the PyQt_PyObject wrapper for now. bool valid = metatype.isValid(); if (!valid) metatype = QMetaType::fromType(); // See if the type (without a pointer) is known to SIP. bool is_ptr = resolved.endsWith('*'); if (is_ptr) { resolved.chop(1); if (resolved.endsWith('*')) return false; } _type = sipFindType(resolved.constData()); // If we didn't find the type and we have resolved some typedefs then try // again with the original type. This means that QVector will work // as a signal argument type. It may be that we should always lookup the // original type - but we don't want to risk breaking things. if (!_type && nonconst_name != resolved) _type = sipFindType(nonconst_name.constData()); if (!_type) { // This is the only fundamental pointer type recognised by Qt. if (metatype.id() == QMetaType::VoidStar) return true; // This is 'int', 'bool', etc. if (metatype != QMetaType::fromType() && !is_ptr) return true; if (resolved == "char" && is_ptr) { // This is (hopefully) '\0' terminated string. _is_char_star = true; return true; } // This is an explicit 'PyQt_PyObject'. if (resolved == "PyQt_PyObject" && !is_ptr) return true; return false; } if (sipTypeIsNamespace(_type)) return false; set_qflags(_type); // We always pass these as integers. if ((!valid && sipTypeIsEnum(_type)) || _is_qflags) metatype = QMetaType(QMetaType::Int); if (is_ptr) { // We don't support pointers to enums. if (sipTypeIsEnum(_type)) { _type = 0; } else if (sipTypeIsClass(_type)) { PyTypeObject *type_obj = sipTypeAsPyTypeObject(_type); if (PyType_IsSubtype(type_obj, sipTypeAsPyTypeObject(sipType_QObject))) metatype = QMetaType(QMetaType::QObjectStar); } } return true; } // Convert a Python object to C++ at a given address. This has a lot in common // with the method that converts to a QVariant. However, unlike that method, // we have no control over the size of the destination storage and so must // convert exactly as requested. bool Chimera::fromPyObject(PyObject *py, void *cpp) const { // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantDataConvertors.count(); ++i) { bool ok; if (registeredToQVariantDataConvertors.at(i)(py, cpp, metatype, &ok)) return ok; } int iserr = 0; PyErr_Clear(); switch (typeId()) { case QMetaType::Nullptr: *reinterpret_cast(cpp) = nullptr; break; case QMetaType::Bool: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Int: { if (isEnumOrFlag()) *reinterpret_cast(cpp) = QVariant( get_enum_value(py)); else *reinterpret_cast(cpp) = PyLong_AsLong(py); break; } case QMetaType::UInt: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: *reinterpret_cast(cpp) = sipConvertToVoidPtr(py); break; case QMetaType::Long: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::LongLong: *reinterpret_cast(cpp) = PyLong_AsLongLong(py); break; case QMetaType::Short: *reinterpret_cast(cpp) = PyLong_AsLong(py); break; case QMetaType::Char: if (PyBytes_Check(py) && PyBytes_Size(py) == 1) *reinterpret_cast(cpp) = *PyBytes_AsString(py); else iserr = 1; break; case QMetaType::Char16: { char16_t ch; if (to_char16_t(py, ch)) *reinterpret_cast(cpp) = ch; else iserr = 1; break; } case QMetaType::Char32: { char32_t ch; if (to_char32_t(py, ch)) *reinterpret_cast(cpp) = ch; else iserr = 1; break; } case QMetaType::ULong: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: *reinterpret_cast(cpp) = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: *reinterpret_cast(cpp) = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (PyBytes_Check(py) && PyBytes_Size(py) == 1) *reinterpret_cast(cpp) = *PyBytes_AsString(py); else iserr = 1; break; case QMetaType::Float: *reinterpret_cast(cpp) = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: *reinterpret_cast(cpp) = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantHash: { QVariantHash qvh; iserr = variant_hash.toMappedType(py, qvh); if (!iserr) *reinterpret_cast(cpp) = qvh; break; } case QMetaType::QVariantList: { QVariantList qvl; iserr = variant_list.toMappedType(py, qvl); if (!iserr) *reinterpret_cast(cpp) = qvl; break; } case QMetaType::QVariantMap: { QVariantMap qvm; iserr = variant_map.toMappedType(py, qvm); if (!iserr) *reinterpret_cast(cpp) = qvm; break; } case QMetaType::QVariantPair: { QVariantPair qvp; iserr = variant_pair.toMappedType(py, qvp); if (!iserr) *reinterpret_cast(cpp) = qvp; break; } case -1: { const char **ptr = reinterpret_cast(cpp); if (PyBytes_Check(py)) *ptr = PyBytes_AsString(py); else if (py == Py_None) *ptr = 0; else iserr = 1; break; } default: if (_type) { if (sipTypeIsEnum(_type)) { *reinterpret_cast(cpp) = sipConvertToEnum(py, _type); } else if (_name.endsWith('*')) { // This must be a pointer-type. *reinterpret_cast(cpp) = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); } else { // This must be a value-type. sipAssignFunc assign = get_assign_helper(); if (assign) { int state; void *value_class; value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &state, &iserr); if (!iserr) assign(cpp, 0, value_class); sipReleaseType(value_class, _type, state); } else { iserr = 1; } } } else { iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", sipPyTypeName(Py_TYPE(py)), _name.constData()); return false; } return true; } // Return the assignment helper for the type, if any. sipAssignFunc Chimera::get_assign_helper() const { if (sipTypeIsClass(_type)) return ((sipClassTypeDef *)_type)->ctd_assign; if (sipTypeIsMapped(_type)) return ((sipMappedTypeDef *)_type)->mtd_assign; return 0; } // Convert a Python object to a QVariant. bool Chimera::fromPyObject(PyObject *py, QVariant *var, bool strict) const { // Deal with the simple case of wrapping the Python object rather than // converting it. if (_type != sipType_QVariant && metatype == QMetaType::fromType()) { // If the type was specified by a Python type (as opposed to // 'PyQt_PyObject') then check the object is an instance of it. if (_py_type && !PyObject_TypeCheck(py, _py_type)) return false; *var = keep_as_pyobject(py); return true; } // Let any registered convertors have a go first. However don't invoke // then for None because that is effectively reserved for representing a // null QString. if (py != Py_None) { for (int i = 0; i < registeredToQVariantConvertors.count(); ++i) { bool ok; if (registeredToQVariantConvertors.at(i)(py, *var, &ok)) return ok; } } int iserr = 0, value_class_state; void *ptr_class, *value_class = 0; // Temporary storage for different types. union { std::nullptr_t tmp_nullptr_t; bool tmp_bool; int tmp_int; unsigned int tmp_unsigned_int; double tmp_double; void *tmp_void_ptr; long tmp_long; qlonglong tmp_qlonglong; short tmp_short; char tmp_char; char16_t tmp_char16_t; char32_t tmp_char32_t; unsigned long tmp_unsigned_long; qulonglong tmp_qulonglong; unsigned short tmp_unsigned_short; unsigned char tmp_unsigned_char; float tmp_float; } tmp_storage; void *variant_data = &tmp_storage; PyErr_Clear(); QVariant variant; int metatype_used = metatype.id(); switch (typeId()) { case QMetaType::Nullptr: tmp_storage.tmp_nullptr_t = nullptr; break; case QMetaType::Bool: tmp_storage.tmp_bool = PyLong_AsLong(py); break; case QMetaType::Int: if (isEnumOrFlag()) { tmp_storage.tmp_int = get_enum_value(py); } else if (_inexact) { // Fit it into the smallest C++ type we can. qlonglong qll = PyLong_AsLongLong(py); if (PyErr_Occurred()) { // Try again in case the value is unsigned and will fit with // the extra bit. PyErr_Clear(); qulonglong qull = static_cast(PyLong_AsUnsignedLongLong(py)); if (PyErr_Occurred()) { // It won't fit into any C++ type so pass it as a Python // object. PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = QMetaType::UnknownType; } else { tmp_storage.tmp_qulonglong = qull; metatype_used = QMetaType::ULongLong; } } else if ((qlonglong)(int)qll == qll) { // It fits in a C++ int. tmp_storage.tmp_int = qll; } else if ((qulonglong)(unsigned int)qll == (qulonglong)qll) { // The extra bit is enough for it to fit. tmp_storage.tmp_unsigned_int = qll; metatype_used = QMetaType::UInt; } else { // This fits. tmp_storage.tmp_qlonglong = qll; metatype_used = QMetaType::LongLong; } } else { // It must fit into a C++ int. tmp_storage.tmp_int = PyLong_AsLong(py); } break; case QMetaType::UInt: tmp_storage.tmp_unsigned_int = sipLong_AsUnsignedLong(py); break; case QMetaType::Double: tmp_storage.tmp_double = PyFloat_AsDouble(py); break; case QMetaType::VoidStar: tmp_storage.tmp_void_ptr = sipConvertToVoidPtr(py); break; case QMetaType::Long: tmp_storage.tmp_long = PyLong_AsLong(py); break; case QMetaType::LongLong: tmp_storage.tmp_qlonglong = PyLong_AsLongLong(py); break; case QMetaType::Short: tmp_storage.tmp_short = PyLong_AsLong(py); break; case QMetaType::Char: if (PyBytes_Check(py) && PyBytes_Size(py) == 1) tmp_storage.tmp_char = *PyBytes_AsString(py); else iserr = 1; break; case QMetaType::Char16: if (!to_char16_t(py, tmp_storage.tmp_char16_t)) iserr = 1; break; case QMetaType::Char32: if (!to_char32_t(py, tmp_storage.tmp_char32_t)) iserr = 1; break; case QMetaType::ULong: tmp_storage.tmp_unsigned_long = sipLong_AsUnsignedLong(py); break; case QMetaType::ULongLong: tmp_storage.tmp_qulonglong = static_cast(PyLong_AsUnsignedLongLong(py)); break; case QMetaType::UShort: tmp_storage.tmp_unsigned_short = sipLong_AsUnsignedLong(py); break; case QMetaType::UChar: if (PyBytes_Check(py) && PyBytes_Size(py) == 1) tmp_storage.tmp_unsigned_char = *PyBytes_AsString(py); else iserr = 1; break; case QMetaType::Float: tmp_storage.tmp_float = PyFloat_AsDouble(py); break; case QMetaType::QObjectStar: tmp_storage.tmp_void_ptr = sipForceConvertToType(py, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); break; case QMetaType::QVariantHash: { QVariantHash qvh; iserr = variant_hash.toMappedType(py, qvh); if (!iserr) { *var = QVariant(qvh); metatype_used = QMetaType::UnknownType; } else if (!strict) { // Assume the failure is because the key was the wrong type. iserr = 0; PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = QMetaType::UnknownType; } break; } case QMetaType::QVariantList: { QVariantList qvl; iserr = variant_list.toMappedType(py, qvl); if (!iserr) { *var = QVariant(qvl); metatype_used = QMetaType::UnknownType; } break; } case QMetaType::QVariantMap: { QVariantMap qvm; iserr = variant_map.toMappedType(py, qvm); if (!iserr) { *var = QVariant(qvm); metatype_used = QMetaType::UnknownType; } else if (!strict) { // Assume the failure is because the key was the wrong type. iserr = 0; PyErr_Clear(); *var = keep_as_pyobject(py); metatype_used = QMetaType::UnknownType; } break; } case QMetaType::QVariantPair: { QVariantPair qvp; iserr = variant_pair.toMappedType(py, qvp); if (!iserr) { *var = QVariant::fromValue(qvp); metatype_used = QMetaType::UnknownType; } break; } case -1: metatype_used = QMetaType::VoidStar; if (PyBytes_Check(py)) tmp_storage.tmp_void_ptr = PyBytes_AsString(py); else if (py == Py_None) tmp_storage.tmp_void_ptr = 0; else iserr = 1; break; default: if (_type) { if (sipTypeIsEnum(_type)) { // Note that this will be a registered enum. tmp_storage.tmp_int = sipConvertToEnum(py, _type); } else if (_name.endsWith('*')) { ptr_class = sipForceConvertToType(py, _type, 0, SIP_NO_CONVERTORS, 0, &iserr); variant_data = &ptr_class; } else { value_class = sipForceConvertToType(py, _type, 0, SIP_NOT_NONE, &value_class_state, &iserr); variant_data = value_class; } } else { // This is a class we don't recognise. iserr = 1; } } if (iserr || PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "unable to convert a Python '%s' object to a C++ '%s' instance", sipPyTypeName(Py_TYPE(py)), _name.constData()); iserr = 1; } else if (_type == sipType_QVariant) { *var = QVariant(*reinterpret_cast(variant_data)); } else if (metatype_used != QMetaType::UnknownType) { *var = QVariant(QMetaType(metatype_used), variant_data); } // Release any temporary value-class instance now that QVariant will have // made a copy. if (value_class) sipReleaseType(value_class, _type, value_class_state); return (iserr == 0); } // Convert a Python object to a QVariant based on the type of the object. QVariant Chimera::fromAnyPyObject(PyObject *py, int *is_err) { QVariant variant; if (py != Py_None) { // Let any registered convertors have a go first. for (int i = 0; i < registeredToQVariantConvertors.count(); ++i) { QVariant var; bool ok; if (registeredToQVariantConvertors.at(i)(py, var, &ok)) { *is_err = !ok; return var; } } Chimera ct; if (ct.parse_py_type(Py_TYPE(py))) { // If the type is a dict then try and convert it to a QVariantMap // if possible. if (Py_TYPE(py) == &PyDict_Type) ct.metatype = QMetaType(QMetaType::QVariantMap); // The conversion is non-strict in case the type was a dict and we // can't convert it to a QVariantMap. if (!ct.fromPyObject(py, &variant, false)) { *is_err = 1; } } else { *is_err = 1; } } return variant; } // Convert a QVariant to Python. PyObject *Chimera::toPyObject(const QVariant &var) const { if (_type != sipType_QVariant) { // For some reason (see qvariant_p.h) an invalid QVariant can be // returned when a QMetaType::Void is expected. if (!var.isValid() && metatype.id() == QMetaType::Void) { Py_INCREF(Py_None); return Py_None; } // Handle the reverse of non-strict conversions of dict to QVariantMap, // ie. we want a dict but we have a QVariantMap. if (metatype == QMetaType::fromType() && _py_type == &PyDict_Type && var.metaType().id() == QMetaType::QVariantMap) { QVariantMap qvm = var.toMap(); return variant_map.fromMappedType(&qvm); } // A sanity check. if (metatype != var.metaType()) { // However having an Int QVariant value and having an invalid // QMetaType is the case that we are dealing with a user-defined // enum and so is valid. if (!(var.metaType().id() == QMetaType::Int && metatype.id() == QMetaType::UnknownType)) { PyErr_Format(PyExc_TypeError, "unable to convert a QVariant of type %d to a QMetaType of type %d", var.metaType().id(), metatype.id()); return 0; } } // Deal with the simple case of unwrapping a Python object rather than // converting it. if (metatype == QMetaType::fromType()) { PyQt_PyObject pyobj_wrapper = var.value(); if (!pyobj_wrapper.pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper.pyobject); return pyobj_wrapper.pyobject; } } // Let any registered convertors have a go first. for (int i = 0; i < registeredFromQVariantConvertors.count(); ++i) { PyObject *py; if (registeredFromQVariantConvertors.at(i)(var, &py)) return py; } return toPyObject(const_cast(var.constData())); } // Convert a C++ object at an arbitary address to Python. PyObject *Chimera::toPyObject(void *cpp) const { if (metatype == QMetaType::fromType()) { if (_is_char_star) { char *s = *reinterpret_cast(cpp); if (s) return PyBytes_FromString(s); Py_INCREF(Py_None); return Py_None; } if (_type && !sipTypeIsEnum(_type)) { if (_name.endsWith('*')) cpp = *reinterpret_cast(cpp); return sipConvertFromType(cpp, _type, 0); } // Unwrap a Python object. PyQt_PyObject *pyobj_wrapper = reinterpret_cast(cpp); if (!pyobj_wrapper->pyobject) { PyErr_SetString(PyExc_TypeError, "unable to convert a QVariant back to a Python object"); return 0; } Py_INCREF(pyobj_wrapper->pyobject); return pyobj_wrapper->pyobject; } PyObject *py = 0; switch (metatype.id()) { case QMetaType::UnknownType: // In invalid QMetaType probably means a user-defined enum. py = get_enum_key(*reinterpret_cast(cpp)); break; case QMetaType::Nullptr: py = Py_None; Py_INCREF(py); break; case QMetaType::Bool: py = PyBool_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Int: if (_is_qflags) { py = sipConvertFromType(cpp, _type, 0); } else if (isEnumOrFlag()) { py = get_enum_key(*reinterpret_cast(cpp)); } else { py = PyLong_FromLong(*reinterpret_cast(cpp)); } break; case QMetaType::UInt: { long ui = *reinterpret_cast(cpp); if (ui < 0) py = PyLong_FromUnsignedLong((unsigned long)ui); else py = PyLong_FromLong(ui); break; } case QMetaType::Double: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::VoidStar: py = sipConvertFromVoidPtr(*reinterpret_cast(cpp)); break; case QMetaType::Long: py = PyLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::LongLong: py = PyLong_FromLongLong(*reinterpret_cast(cpp)); break; case QMetaType::Short: py = PyLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Char: case QMetaType::UChar: py = PyBytes_FromStringAndSize(reinterpret_cast(cpp), 1); break; case QMetaType::Char16: py = PyUnicode_DecodeUTF16(reinterpret_cast(cpp), 1, NULL, NULL); break; case QMetaType::Char32: py = PyUnicode_DecodeUTF32(reinterpret_cast(cpp), 1, NULL, NULL); break; case QMetaType::ULong: py = PyLong_FromUnsignedLong(*reinterpret_cast(cpp)); break; case QMetaType::ULongLong: py = PyLong_FromUnsignedLongLong(*reinterpret_cast(cpp)); break; case QMetaType::UShort: py = PyLong_FromLong(*reinterpret_cast(cpp)); break; case QMetaType::Float: py = PyFloat_FromDouble(*reinterpret_cast(cpp)); break; case QMetaType::QObjectStar: py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); break; case QMetaType::QVariantHash: py = variant_hash.fromMappedType(cpp); break; case QMetaType::QVariantList: py = variant_list.fromMappedType(cpp); break; case QMetaType::QVariantMap: py = variant_map.fromMappedType(cpp); break; case QMetaType::QVariantPair: py = variant_pair.fromMappedType(cpp); break; default: if (_type) { if (sipTypeIsEnum(_type)) { // Note that this will be a registered enum. py = sipConvertFromEnum(*reinterpret_cast(cpp), _type); } else if (_name.endsWith('*')) { py = sipConvertFromType(*reinterpret_cast(cpp), _type, 0); } else { // Make a copy as it is a value type. void *copy = metatype.create(cpp); py = sipConvertFromNewType(copy, _type, 0); if (!py) metatype.destroy(copy); } } else if (_name.contains("_QMLTYPE_")) { // These correspond to objects defined in QML. We assume that they // are all sub-classes of QObject. If this proves not to be the // case then we will have to look at the first part of _name (and // possibly move this code the the QtQml module). py = sipConvertFromType(*reinterpret_cast(cpp), sipType_QObject, 0); } else if (_name.endsWith('*')) { // It's a pointer to an unknown type so convert it to a voidptr in // case that can be used. py = sipConvertFromVoidPtr(cpp); } } if (!py) PyErr_Format(PyExc_TypeError, "unable to convert a C++ '%s' instance to a Python object", _name.constData()); return py; } // Convert a QVariant to a Python object based on the type of the object. PyObject *Chimera::toAnyPyObject(const QVariant &var) { if (!var.isValid()) { Py_INCREF(Py_None); return Py_None; } const char *type_name = var.typeName(); // Qt v5.8.0 changed the way it was handling null in QML. We treat it as a // special case though there may be other implications still to be // discovered. if (qstrcmp(type_name, "std::nullptr_t") == 0) { Py_INCREF(Py_None); return Py_None; } const sipTypeDef *td = sipFindType(type_name); Chimera *ct = new Chimera; ct->_type = td; ct->_name = type_name; ct->metatype = var.metaType(); if (td) ct->set_qflags(td); PyObject *py = ct->toPyObject(var); delete ct; return py; } // Wrap a Python object in a QVariant without any conversion. QVariant Chimera::keep_as_pyobject(PyObject *py) { PyQt_PyObject pyobj_wrapper(py); return QVariant(QMetaType::fromType(), &pyobj_wrapper); } // Convert a single character Python string to a char16_t and return true if // there was no error. bool Chimera::to_char16_t(PyObject *py, char16_t &cpp) { if (!PyUnicode_Check(py) || PyUnicode_GetLength(py) != 1) return false; PyObject *utf16 = PyUnicode_AsUTF16String(py); if (!utf16) return false; // Skip the BOM. cpp = reinterpret_cast(PyBytes_AsString(utf16))[1]; Py_DECREF(utf16); return true; } // Convert a single character Python string to a char32_t and return true if // there was no error. bool Chimera::to_char32_t(PyObject *py, char32_t &cpp) { if (!PyUnicode_Check(py) || PyUnicode_GetLength(py) != 1) return false; PyObject *utf32 = PyUnicode_AsUTF32String(py); if (!utf32) return false; // Skip the BOM. cpp = reinterpret_cast(PyBytes_AsString(utf32))[1]; Py_DECREF(utf32); return true; } // Return true if the type is either a C++ or Python enum or flag. bool Chimera::isEnumOrFlag() const { if (_type && sipTypeIsEnum(_type)) return true; if (_is_qflags) return true; return (_py_type ? _py_enum_types.contains((PyObject *)_py_type) : false); } // Return the value of an enum, either a wrapped one or a user-defined one. int Chimera::get_enum_value(PyObject *py) const { int value = 0; if (_type) { value = sipConvertToEnum(py, _type); } else { PyObject *value_obj = PyObject_GetAttrString(py, "value"); if (value_obj) { value = PyLong_AsLong(value_obj); Py_DECREF(value_obj); } } return value; } // Return the key of an enum, either a wrapped one or a user-defined one. PyObject *Chimera::get_enum_key(int cpp) const { PyObject *py = NULL; if (_type) { py = sipConvertFromEnum(cpp, _type); } else { QHashIterator it(_py_enum_types); while (it.hasNext()) { it.next(); if (it.value() == _name) { py = PyObject_CallFunction(it.key(), "(i)", cpp); break; } } } return py; } // Convert a Python object to C++, allocating storage as necessary. Chimera::Storage *Chimera::fromPyObjectToStorage(PyObject *py) const { Chimera::Storage *st = new Chimera::Storage(this, py); if (!st->isValid()) { delete st; st = 0; } return st; } // Create the storage for a type. Chimera::Storage *Chimera::storageFactory() const { return new Chimera::Storage(this); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1323829 PyQt6-6.6.1/qpy/QtCore/qpycore_chimera.h0000644000076500000240000002256214532160372016731 0ustar00philstaff// This is the interface of the Chimera and related classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CHIMERA_H #define _QPYCORE_CHIMERA_H #include #include #include #include #include #include #include #include "sipAPIQtCore.h" // This describes a type that can be understood by Python and C++ (specifically // Qt's meta-type system). The implementation assumes that the GIL is held. class Chimera { public: // Construct a copy. Chimera(const Chimera &other); // Destroy the type. ~Chimera(); // Parses a Python object as a type. Return 0 if there was an error. static const Chimera *parse(PyObject *obj); // Parses a Qt meta-property as a type. Return 0 if there was an error. static const Chimera *parse(const QMetaProperty &mprop); // Parses a C++ type name as a type. Return 0 if there was an error. static const Chimera *parse(const QByteArray &name); // The registered QVariant to PyObject convertors. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); typedef QList FromQVariantConvertors; static FromQVariantConvertors registeredFromQVariantConvertors; // Register a function for converting a Python object to a QVariant. typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef QList ToQVariantConvertors; static ToQVariantConvertors registeredToQVariantConvertors; // Register a function for converting a Python object to QVariant data. typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, QMetaType, bool *); typedef QList ToQVariantDataConvertors; static ToQVariantDataConvertors registeredToQVariantDataConvertors; class Signature { public: // Destroy the signature and any result type objects. ~Signature(); // The list of parsed argument types. QList parsed_arguments; // The optional parsed result type. const Chimera *result; // The original normalised signature (possibly including a method name // but excluding a return type). QByteArray signature; // The signature as declared by the user for use in exceptions. QByteArray py_signature; // The revision of a slot. Putting this here is an awful hack. int revision; // Return the parsed signature wrapped in a Python object. Ownership // of the signature is passed to the Python object. Return 0 if there // was an error. static PyObject *toPyObject(Signature *parsed_signature); // Return the parsed signature extracted from a Python object. static Signature *fromPyObject(PyObject *py); // Return the name from the signature. QByteArray name() const {return name(signature);} // Return the name from a signature. static QByteArray name(const QByteArray &signature); // Return the arguments from the signature. QByteArray arguments() const {return arguments(signature);} // Return the arguments from a signature. static QByteArray arguments(const QByteArray &signature); private: friend class Chimera; // Set if the parsed arguments are cached. bool _cached; Signature(const QByteArray &sig, bool cached) : result(0), signature(sig), py_signature(sig), _cached(cached) {} Signature(const Signature &); Signature &operator=(const Signature &); }; // Parses a normalised C++ signature. Return 0 if there was an error. static Signature *parse(const QByteArray &sig, const char *context); // Parses a C++ signature given as a Python tuple of types and an optional // name. Return 0 if there was an error. static Signature *parse(PyObject *types, const char *name, const char *context); // Raise an exception after parse() has failed. static void raiseParseException(PyObject *type, const char *context = 0); class Storage { public: // Destroy the type and any temporary data. ~Storage(); // Return the parsed type. const Chimera *type() const {return _parsed_type;} // Return the address of the stored value. void *address(); // Convert the stored value to a Python object. PyObject *toPyObject() const; private: friend class Chimera; // The parsed type. const Chimera *_parsed_type; // The storage for fundamental and value types. QVariant _value_storage; // The storage for pointer types. void *_ptr_storage; // The state of any temporary stored data. int _tmp_state; // Set if the value is valid. bool _valid; Storage(const Chimera *ct); Storage(const Chimera *ct, PyObject *py); // Return true if the value is valid. bool isValid() const {return _valid;} // Return true is the value is a pointer type. bool isPointerType() const; Storage(const Storage &); Storage &operator=(const Storage &); }; // Convert a Python object to C++, allocating storage as necessary. Return // 0 if there was an error. Storage *fromPyObjectToStorage(PyObject *py) const; // Create a storage instance for this type. Storage *storageFactory() const; // Convert a Python object to C++ at a given address. Return false if // there was an error. bool fromPyObject(PyObject *py, void *cpp) const; // Convert a Python object to a QVariant. Return false if there was an // error. bool fromPyObject(PyObject *py, QVariant *var, bool strict = true) const; // Convert a Python object to a QVariant based on the type of the object. static QVariant fromAnyPyObject(PyObject *py, int *is_err); // Convert a QVariant to a Python object. PyObject *toPyObject(const QVariant &var) const; // Convert a C++ object at an arbitary address to a Python object. PyObject *toPyObject(void *cpp) const; // Convert a QVariant to a Python object based on the type of the object. static PyObject *toAnyPyObject(const QVariant &var); // Returns a borrowed reference to the Python type object that was used to // define the type (if any). PyObject *py_type() const {return (PyObject *)_py_type;} // Returns the C++ name of the type. const QByteArray &name() const {return _name;} // Returns true if the type is a C++ or Python enum or flag. bool isEnumOrFlag() const; // Returns the SIP generated type structure. const sipTypeDef *typeDef() const {return _type;} // Register a type as a Python enum. static void registerPyEnum(PyObject *enum_type, const QByteArray &cpp_qualname); // The Qt meta-type. QMetaType metatype; // The type identifer. This will be the meta-type identifier or -1 if the // type is char *. int typeId() const {return _is_char_star ? -1 : metatype.id();} private: // The generated type structure. This may be 0 if the type is known by Qt // but hasn't been wrapped. const sipTypeDef *_type; // The Python type object if a Python type (rather than a C++ type string) // was given. PyTypeObject *_py_type; // Set if the meta-type needn't be exact. bool _inexact; // Set if the the type is derived from QFlags. bool _is_qflags; // The C++ name of the type. QByteArray _name; // Set if the C++ type is char *. This needs special handling. bool _is_char_star; // The registered user-defined enums. static QHash _py_enum_types; // The cache of previously parsed argument type lists. static QHash > _previously_parsed; Chimera(); bool parse_cpp_type(const QByteArray &type); bool parse_py_type(PyTypeObject *type_obj); sipAssignFunc get_assign_helper() const; void set_qflags(const sipTypeDef *td); static bool to_char16_t(PyObject *py, char16_t &cpp); static bool to_char32_t(PyObject *py, char32_t &cpp); static void raiseParseCppException(const char *type, const char *context = 0); static QVariant keep_as_pyobject(PyObject *py); static int extract_raw_type(const QByteArray &type, QByteArray &raw_type); static QByteArray resolve_types(const QByteArray &type); int get_enum_value(PyObject *py) const; PyObject *get_enum_key(int cpp) const; Chimera &operator=(const Chimera &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1530197 PyQt6-6.6.1/qpy/QtCore/qpycore_chimera_signature.cpp0000644000076500000240000000477514532160372021353 0ustar00philstaff// This is the implementation of the Chimera::Signature class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" // Forward declarations. extern "C" {static void Signature_delete(PyObject *cap);} // Destroy the signature and any type objects. Chimera::Signature::~Signature() { if (!_cached) qDeleteAll(parsed_arguments.constBegin(), parsed_arguments.constEnd()); if (result) delete result; } // Return the parsed signature wrapped in a Python object. PyObject *Chimera::Signature::toPyObject(Chimera::Signature *parsed_signature) { PyObject *py = PyCapsule_New(parsed_signature, NULL, Signature_delete); if (!py) delete parsed_signature; return py; } // Return the parsed signature extracted from a Python object. Chimera::Signature *Chimera::Signature::fromPyObject(PyObject *py) { return reinterpret_cast(PyCapsule_GetPointer(py, NULL)); } // Return the name from a signature. QByteArray Chimera::Signature::name(const QByteArray &signature) { QByteArray nm = signature; int idx = signature.indexOf('('); if (idx >= 0) nm.truncate(idx); return nm; } // Return the arguments from a signature. QByteArray Chimera::Signature::arguments(const QByteArray &signature) { QByteArray args; int oparen = signature.indexOf('('); int cparen = signature.lastIndexOf(')'); if (oparen >= 0 && cparen >= 0) args = signature.mid(oparen, cparen - oparen + 1); return args; } // The PyCapsule destructor for the Chimera::Signature type. static void Signature_delete(PyObject *cap) { delete reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.150284 PyQt6-6.6.1/qpy/QtCore/qpycore_chimera_storage.cpp0000644000076500000240000000667314532160372021015 0ustar00philstaff// This is the implementation of the Chimera::Storage class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // Create a new storage instance containing a converted Python object. Chimera::Storage::Storage(const Chimera *ct, PyObject *py) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0) { // We convert to a QVariant even for pointer types because this has the // side-effect of ensuring the object doesn't get garbage collected. _valid = _parsed_type->fromPyObject(py, &_value_storage); if (isPointerType()) { int is_err = 0; _ptr_storage = sipForceConvertToType(py, _parsed_type->typeDef(), 0, 0, &_tmp_state, &is_err); if (is_err) { _value_storage = QVariant(); _valid = false; } } } // Create a new storage instance. Chimera::Storage::Storage(const Chimera *ct) : _parsed_type(ct), _ptr_storage(0), _tmp_state(0), _valid(true) { if (!isPointerType()) { // Create a default fundamental or value type. if (_parsed_type->metatype.id() == QMetaType::Void) _value_storage = QVariant(); else _value_storage = QVariant(_parsed_type->metatype); } } // Destroy the storage and any temporary value. Chimera::Storage::~Storage() { if (_tmp_state) sipReleaseType(_ptr_storage, _parsed_type->typeDef(), _tmp_state); } // Return the address of the storage. void *Chimera::Storage::address() { if (isPointerType()) { if (_parsed_type->name().endsWith('*')) return &_ptr_storage; return _ptr_storage; } if (_parsed_type->typeDef() == sipType_QVariant) return &_value_storage; return _value_storage.data(); } // Return true if the value is a pointer type. bool Chimera::Storage::isPointerType() const { if (_parsed_type->isEnumOrFlag()) return false; return (_parsed_type->metatype == QMetaType::fromType() && _parsed_type->typeDef()); } // Convert the stored value to a Python object. PyObject *Chimera::Storage::toPyObject() const { // Pointer-class and mapped types are not stored in the QVariant. if (isPointerType()) { if (!_ptr_storage) { Py_INCREF(Py_None); return Py_None; } return sipConvertFromType(_ptr_storage, _parsed_type->typeDef(), 0); } if (_parsed_type->typeDef() == sipType_QVariant) return Chimera::toAnyPyObject(_value_storage); return _parsed_type->toPyObject(_value_storage); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1544435 PyQt6-6.6.1/qpy/QtCore/qpycore_classinfo.cpp0000644000076500000240000000600514532160372017627 0ustar00philstaff// This contains the implementation of pyqtClassInfo. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_classinfo.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Forward declarations. extern "C" {static PyObject *decorator(PyObject *self, PyObject *cls);} // The class info name/values keyed by the class type object. static QMultiHash class_info_hash; // Implement the pyqtClassInfo class decorator. PyObject *qpycore_pyqtClassInfo(PyObject *args, PyObject *kwds) { // Check there are no positional arguments. if (PyTuple_Size(args) != 2) { PyErr_SetString(PyExc_TypeError, "PyQt6.QObject.pyqtClassInfo() requires two positional arguments"); return 0; } // Check there are no keyword arguments. if (kwds) { PyErr_SetString(PyExc_TypeError, "PyQt6.QObject.pyqtClassInfo() does not support keyword arguments"); return 0; } // Create the decorator function itself. We stash the arguments in "self". // This may be an abuse, but it seems to be Ok. static PyMethodDef deco_method = { "_deco", decorator, METH_O, 0 }; return PyCFunction_New(&deco_method, args); } // Return the list on the heap of class info name/values for a class. QList qpycore_pop_class_info_list(PyObject *cls) { QList all; for (;;) { ClassInfo class_info = class_info_hash.take(cls); if (class_info.first.isNull()) break; all.append(class_info); Py_DECREF(cls); } return all; } // This is the decorator function that saves the class info for later // retrieval. static PyObject *decorator(PyObject *self, PyObject *cls) { // Convert the name. QByteArray name = qpycore_convert_ASCII(PyTuple_GetItem(self, 0)); if (name.isNull()) return 0; // Convert the value. QByteArray value = qpycore_convert_ASCII(PyTuple_GetItem(self, 1)); if (value.isNull()) return 0; Py_INCREF(cls); class_info_hash.insert(cls, ClassInfo(name, value)); // Return the class. Py_INCREF(cls); return cls; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0739348 PyQt6-6.6.1/qpy/QtCore/qpycore_classinfo.h0000644000076500000240000000210114532160372017265 0ustar00philstaff// This defines the interfaces to the pyqtClassInfo support. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_CLASSINFO_H #define _QPYCORE_CLASSINFO_H typedef QPair ClassInfo; QList qpycore_pop_class_info_list(PyObject *cls); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1088674 PyQt6-6.6.1/qpy/QtCore/qpycore_decorators.cpp0000644000076500000240000001044114532160372020012 0ustar00philstaff// This is the implementation of the pyqtSlot decorator. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" // Forward declarations. extern "C" {static PyObject *decorator(PyObject *self, PyObject *f);} // This implements the pyqtSlot decorator. PyObject *qpycore_pyqtslot(PyObject *args, PyObject *kwds) { const char *name_str = 0; PyObject *res_obj = 0; int revision = 0; static const char *kwlist[] = {"name", "result", "revision", 0}; static PyObject *no_args = 0; if (!no_args) { no_args = PyTuple_New(0); if (!no_args) return 0; } if (!PyArg_ParseTupleAndKeywords(no_args, kwds, "|sOi:pyqtSlot", const_cast(kwlist), &name_str, &res_obj, &revision)) return 0; Chimera::Signature *parsed_sig = Chimera::parse(args, name_str, "a pyqtSlot argument"); if (!parsed_sig) return 0; // Sticking the revision here is an awful hack, but it saves creating // another data structure wrapped in a capsule. parsed_sig->revision = revision; // Parse any result type. if (res_obj) { parsed_sig->result = Chimera::parse(res_obj); if (!parsed_sig->result) { Chimera::raiseParseException(res_obj, "a pyqtSlot result"); delete parsed_sig; return 0; } } // Wrap the parsed signature in a Python object. PyObject *sig_obj = Chimera::Signature::toPyObject(parsed_sig); if (!sig_obj) return 0; // Create the decorator function itself. We stash the arguments in "self". // This may be an abuse, but it seems to be Ok. static PyMethodDef deco_method = { "_deco", decorator, METH_O, 0 }; PyObject *obj = PyCFunction_New(&deco_method, sig_obj); Py_DECREF(sig_obj); return obj; } // This is the decorator function that saves the C++ signature as a function // attribute. static PyObject *decorator(PyObject *self, PyObject *f) { Chimera::Signature *parsed_sig = Chimera::Signature::fromPyObject(self); const QByteArray &sig = parsed_sig->signature; // Use the function name if there isn't already one. if (sig.startsWith('(')) { // Get the function's name. PyObject *nobj = PyObject_GetAttr(f, qpycore_dunder_name); if (!nobj) return 0; QByteArray ascii = qpycore_convert_ASCII(nobj); Py_DECREF(nobj); if (ascii.isNull()) return 0; parsed_sig->signature.prepend(ascii); parsed_sig->py_signature.prepend(ascii); } // See if the function has already been decorated. PyObject *decorations = PyObject_GetAttr(f, qpycore_dunder_pyqtsignature); int rc; if (decorations) { // Insert the new decoration at the head of the existing ones so that // the list order matches the order they appear in the script. rc = PyList_Insert(decorations, 0, self); } else { PyErr_Clear(); decorations = PyList_New(1); if (!decorations) return 0; Py_INCREF(self); PyList_SetItem(decorations, 0, self); // Save the new decoration. rc = PyObject_SetAttr(f, qpycore_dunder_pyqtsignature, decorations); } Py_DECREF(decorations); if (rc < 0) return 0; // Return the function. Py_INCREF(f); return f; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1027763 PyQt6-6.6.1/qpy/QtCore/qpycore_enums_flags.cpp0000644000076500000240000001345214532160372020155 0ustar00philstaff// This contains the implementation of pyqtEnum. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_enums_flags.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "sipAPIQtCore.h" // Forward declarations. extern "C" {static PyObject *decorator(PyObject *, PyObject *enum_cls);} // Forward declarations. static bool add_key_value(EnumFlag &enum_flag, PyObject *key, PyObject *value); static bool objectify(const char *s, PyObject **objp); static bool parse_members(PyObject *members, EnumFlag &enum_flag); // The enums keyed by the enum type object. static QHash enums_hash; // Implement the pyqtEnum enum decorator. PyObject *qpycore_pyqtEnum(PyObject *enum_cls) { if (enum_cls) return decorator(0, enum_cls); // Create the decorator function itself. static PyMethodDef deco_method = { "_deco", decorator, METH_O, 0 }; return PyCFunction_New(&deco_method, 0); } // Return the EnumFlag for an enum class. The name will be null if there was // none. EnumFlag qpycore_pop_enum_flag(PyObject *enum_cls) { EnumFlag enum_flag = enums_hash.take(enum_cls); if (!enum_flag.name.isNull()) Py_DECREF(enum_cls); return enum_flag; } // This is the decorator function that saves the parsed enum for later // retrieval. static PyObject *decorator(PyObject *, PyObject *enum_cls) { // Check the type. EnumFlag enum_flag; if (sipIsEnumFlag(enum_cls)) enum_flag.isFlag = true; else enum_flag.isFlag = false; // Get the name. PyObject *name = PyObject_GetAttr(enum_cls, qpycore_dunder_name); if (!name) return 0; enum_flag.name = qpycore_convert_ASCII(name); Py_DECREF(name); if (enum_flag.name.isNull()) return 0; // Get the members. static PyObject *members_s = 0; if (!objectify("__members__", &members_s)) return 0; PyObject *members = PyObject_GetAttr(enum_cls, members_s); if (!members) return 0; bool ok = parse_members(members, enum_flag); Py_DECREF(members); if (!ok) return 0; // Get the pseudo fully qualified C++ name. static PyObject *qualname_s = 0; if (!objectify("__qualname__", &qualname_s)) return 0; PyObject *qualname = PyObject_GetAttr(enum_cls, qualname_s); if (!qualname) return 0; QByteArray cpp_qualname = qpycore_convert_ASCII(qualname); Py_DECREF(qualname); cpp_qualname.replace(QByteArray("."), QByteArray("::")); // Register the enum with our type system. Chimera::registerPyEnum(enum_cls, cpp_qualname); // Save the parsed enum for later. Py_INCREF(enum_cls); enums_hash.insert(enum_cls, enum_flag); // Return the enum class. Py_INCREF(enum_cls); return enum_cls; } // Parse a __members__ mapping. static bool parse_members(PyObject *members, EnumFlag &enum_flag) { static PyObject *value_s = 0; if (!objectify("value", &value_s)) return false; PyObject *items; Py_ssize_t nr_items; // Get the contents of __members__. items = PyMapping_Items(members); if (!items) goto return_error; nr_items = PySequence_Length(items); if (nr_items < 0) goto release_items; for (Py_ssize_t i = 0; i < nr_items; ++i) { PyObject *item, *key, *member, *value; item = PySequence_GetItem(items, i); if (!item) goto release_items; // The item should be a 2-element sequence of the key name and an // object containing the value. key = PySequence_GetItem(item, 0); member = PySequence_GetItem(item, 1); Py_DECREF(item); if (!key || !member) { Py_XDECREF(key); Py_XDECREF(member); goto release_items; } // Get the value. value = PyObject_GetAttr(member, value_s); Py_DECREF(member); if (!value) { Py_DECREF(key); goto release_items; } bool ok = add_key_value(enum_flag, key, value); Py_DECREF(key); Py_DECREF(value); if (!ok) goto release_items; } Py_DECREF(items); return true; release_items: Py_DECREF(items); return_error: return false; } // Add a key/value to an enum/flag. static bool add_key_value(EnumFlag &enum_flag, PyObject *key, PyObject *value) { PyErr_Clear(); int i_value = sipLong_AsInt(value); if (PyErr_Occurred()) return false; QByteArray key_ba = qpycore_convert_ASCII(key); if (key_ba.isNull()) return false; enum_flag.keys.append(QPair(key_ba, i_value)); return true; } // Convert an ASCII string to a Python object if it hasn't already been done. static bool objectify(const char *s, PyObject **objp) { if (*objp == NULL) { *objp = PyUnicode_FromString(s); if (*objp == NULL) return false; } return true; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1521964 PyQt6-6.6.1/qpy/QtCore/qpycore_enums_flags.h0000644000076500000240000000235514532160372017622 0ustar00philstaff// This defines the interfaces to the pyqtEnum support. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_ENUMS_FLAGS_H #define _QPYCORE_ENUMS_FLAGS_H #include #include #include // Encapsulate the definition of a Python enum as required by QMetaEnum. struct EnumFlag { QByteArray name; bool isFlag; QList > keys; }; EnumFlag qpycore_pop_enum_flag(PyObject *enum_cls); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0794554 PyQt6-6.6.1/qpy/QtCore/qpycore_event_handlers.cpp0000644000076500000240000000764614532160372020663 0ustar00philstaff// This is the implementation of the event handlers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpycore_event_handlers.h" #include "sipAPIQtCore.h" // The singleton that monitors the destruction of QObject instances created by // C++. PyQtMonitor *PyQtMonitor::instance = SIP_NULLPTR; // Set if monitoring is enabled. bool PyQtMonitor::enabled = true; // Forward declarations. static void wrapped_instance_eh(void *cpp); static void collecting_wrapper_eh(sipSimpleWrapper *self); // Register the event handlers. void qpycore_register_event_handlers() { // Create the monitor. PyQtMonitor::instance = new PyQtMonitor; // Register the handlers. sipRegisterEventHandler(sipEventWrappedInstance, sipType_QObject, (void *)wrapped_instance_eh); sipRegisterEventHandler(sipEventCollectingWrapper, sipType_QObject, (void *)collecting_wrapper_eh); } // Invoked when a QObject that is created by C++ is wrapped. static void wrapped_instance_eh(void *cpp) { if (PyQtMonitor::instance && PyQtMonitor::enabled) PyQtMonitor::instance->monitor(reinterpret_cast(cpp)); } // Invoked when the Python wrapper of a QObject is garbage collected. static void collecting_wrapper_eh(sipSimpleWrapper *self) { if (PyQtMonitor::instance && PyQtMonitor::enabled) PyQtMonitor::instance->ignore(self); } // Monitor a C++ created QObject instance. void PyQtMonitor::monitor(QObject *cppInst) { // Connect the monitor. monitored.insert(cppInst); // Note that the C++ instance may be in the process of being destroyed. // This will happen if it is the argument to the destroyed() signal. // Python will have forgotten about the object (even if it was created by // Python) so by the time it gets wrapped again to be passed to the slot // it will appear to have been created by C++ and will therefore be subject // to monitoring. Note that subsequently calling disconnect() would cause // a crash - this is why we keep a separate record of C++ instances // currently being monitored and never explicitly disconnect the monitor. Py_BEGIN_ALLOW_THREADS connect(cppInst, SIGNAL(destroyed(QObject *)), SLOT(on_destroyed(QObject *)), Qt::UniqueConnection); Py_END_ALLOW_THREADS } // Stop monitoring a C++ created QObject instance. void PyQtMonitor::ignore(sipSimpleWrapper *pyObj) { void *addr = sipGetAddress(pyObj); if (addr) // Note the reason given above we do not disconnect the monitor. monitored.remove(reinterpret_cast(addr)); } // Invoked when a monitored C++ created QObject instance is destroyed. void PyQtMonitor::on_destroyed(QObject *cppInst) { QSet::iterator it = monitored.find(cppInst); // See if we are currently monitoring this instance. if (it != monitored.end()) { monitored.erase(it); if (sipGetInterpreter()) { SIP_BLOCK_THREADS PyObject *pyObj = sipGetPyObject(cppInst, sipType_QObject); if (pyObj) sipInstanceDestroyed((sipSimpleWrapper *)pyObj); SIP_UNBLOCK_THREADS } } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1558726 PyQt6-6.6.1/qpy/QtCore/qpycore_event_handlers.h0000644000076500000240000000254014532160372020314 0ustar00philstaff// This is the definition of the API of the event handlers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_EVENT_HANDLERS_H #define _QPYCORE_EVENT_HANDLERS_H #include #include #include class PyQtMonitor : public QObject { Q_OBJECT public: void monitor(QObject *cppInst); void ignore(sipSimpleWrapper *pyObj); static PyQtMonitor *instance; static bool enabled; private Q_SLOTS: void on_destroyed(QObject *); private: QSet monitored; }; void qpycore_register_event_handlers(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1041865 PyQt6-6.6.1/qpy/QtCore/qpycore_init.cpp0000644000076500000240000000750414532160372016616 0ustar00philstaff// This is the initialisation support code for the QtCore module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_public_api.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_qobject_helpers.h" #include "sipAPIQtCore.h" #include // Set if any QCoreApplication (or sub-class) instance was created from Python. bool qpycore_created_qapp; // This is called to clean up on exit. It is done in case the QCoreApplication // dealloc code hasn't been called. static PyObject *cleanup_on_exit(PyObject *, PyObject *) { pyqt6_cleanup_qobjects(); // Never destroy a QCoreApplication if we didn't create it (eg. if we are // embedded in a C++ application). if (qpycore_created_qapp) { QCoreApplication *app = QCoreApplication::instance(); if (app) { Py_BEGIN_ALLOW_THREADS delete app; Py_END_ALLOW_THREADS } } Py_INCREF(Py_None); return Py_None; } // Perform any required initialisation. void qpycore_init() { // We haven't created a QCoreApplication instance. qpycore_created_qapp = false; // Export the private helpers, ie. those that should not be used by // external handwritten code. sipExportSymbol("qtcore_qt_metaobject", (void *)qpycore_qobject_metaobject); sipExportSymbol("qtcore_qt_metacall", (void *)qpycore_qobject_qt_metacall); sipExportSymbol("qtcore_qt_metacast", (void *)qpycore_qobject_qt_metacast); sipExportSymbol("qtcore_qobject_sender", (void *)PyQtSlotProxy::lastSender); // Export the public API. sipExportSymbol("pyqt6_cleanup_qobjects", (void *)pyqt6_cleanup_qobjects); sipExportSymbol("pyqt6_err_print", (void *)pyqt6_err_print); sipExportSymbol("pyqt6_from_argv_list", (void *)pyqt6_from_argv_list); sipExportSymbol("pyqt6_from_qvariant_by_type", (void *)pyqt6_from_qvariant_by_type); sipExportSymbol("pyqt6_get_connection_parts", (void *)pyqt6_get_connection_parts); sipExportSymbol("pyqt6_get_pyqtsignal_parts", (void *)pyqt6_get_pyqtsignal_parts); sipExportSymbol("pyqt6_get_pyqtslot_parts", (void *)pyqt6_get_pyqtslot_parts); sipExportSymbol("pyqt6_get_qmetaobject", (void *)pyqt6_get_qmetaobject); sipExportSymbol("pyqt6_get_signal_signature", (void *)pyqt6_get_signal_signature); sipExportSymbol("pyqt6_register_from_qvariant_convertor", (void *)pyqt6_register_from_qvariant_convertor); sipExportSymbol("pyqt6_register_to_qvariant_convertor", (void *)pyqt6_register_to_qvariant_convertor); sipExportSymbol("pyqt6_register_to_qvariant_data_convertor", (void *)pyqt6_register_to_qvariant_data_convertor); sipExportSymbol("pyqt6_update_argv_list", (void *)pyqt6_update_argv_list); // Register the cleanup function. static PyMethodDef cleanup_md = { "_qtcore_cleanup", cleanup_on_exit, METH_NOARGS, SIP_NULLPTR }; sipRegisterExitNotifier(&cleanup_md); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1339378 PyQt6-6.6.1/qpy/QtCore/qpycore_misc.cpp0000644000076500000240000000342714532160372016606 0ustar00philstaff// This contains the implementation of various odds and ends. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Convert a borrowed ASCII string object to a QByteArray. QByteArray qpycore_convert_ASCII(PyObject *str_obj) { const char *str = sipString_AsASCIIString(&str_obj); if (!str) { Py_DECREF(str_obj); return QByteArray(); } QByteArray ba(str); Py_DECREF(str_obj); return ba; } // Return true if the given type was wrapped for PyQt. bool qpycore_is_pyqt_type(const sipTypeDef *td) { return sipCheckPluginForType(td, "PyQt6.QtCore"); } void qpycore_Unicode_ConcatAndDel(PyObject **string, PyObject *newpart) { PyObject *old = *string; if (old) { if (newpart) *string = PyUnicode_Concat(old, newpart); else *string = 0; Py_DECREF(old); } Py_XDECREF(newpart); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0898292 PyQt6-6.6.1/qpy/QtCore/qpycore_misc.h0000644000076500000240000000216014532160372016244 0ustar00philstaff// This defines the interfaces to various odd and ends. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_MISC_H #define _QPYCORE_MISC_H #include #include #include "sipAPIQtCore.h" QByteArray qpycore_convert_ASCII(PyObject *str_obj); bool qpycore_is_pyqt_type(const sipTypeDef *td); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1061294 PyQt6-6.6.1/qpy/QtCore/qpycore_namespace.h0000644000076500000240000000216014532160372017245 0ustar00philstaff// This ensures that the Qt namespace macros are defined irrespective of the // version of Qt being used. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_NAMESPACE_H #define _QPYCORE_NAMESPACE_H #include #if !defined(QT_BEGIN_NAMESPACE) #define QT_BEGIN_NAMESPACE #define QT_END_NAMESPACE #endif #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1380107 PyQt6-6.6.1/qpy/QtCore/qpycore_objectified_strings.h0000644000076500000240000000223714532160372021336 0ustar00philstaff// This declares a number of objectified string objects. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_OBJECTIFIED_STRINGS_H #define _QPYCORE_OBJECTIFIED_STRINGS_H #include // __name__ extern PyObject *qpycore_dunder_name; // __mro__ extern PyObject *qpycore_dunder_mro; // __pyqtSignature__ extern PyObject *qpycore_dunder_pyqtsignature; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0816455 PyQt6-6.6.1/qpy/QtCore/qpycore_post_init.cpp0000644000076500000240000001042714532160372017661 0ustar00philstaff// This is the post-initialisation support code for the QtCore module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_api.h" #include "qpycore_event_handlers.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // The objectified strings. PyObject *qpycore_dunder_name; PyObject *qpycore_dunder_mro; PyObject *qpycore_dunder_pyqtsignature; // Perform any required post-initialisation. void qpycore_post_init(PyObject *module_dict) { // Register the event handlers. qpycore_register_event_handlers(); // Initialise the pyqtProperty type and add it to the module dictionary. if (!qpycore_pyqtProperty_init_type()) Py_FatalError("PyQt6.QtCore: Failed to initialise pyqtProperty type"); if (PyDict_SetItemString(module_dict, "pyqtProperty", (PyObject *)qpycore_pyqtProperty_TypeObject) < 0) Py_FatalError("PyQt6.QtCore: Failed to set pyqtProperty type"); // Initialise the pyqtSignal type and add it to the module dictionary. if (!qpycore_pyqtSignal_init_type()) Py_FatalError("PyQt6.QtCore: Failed to initialise pyqtSignal type"); if (PyDict_SetItemString(module_dict, "pyqtSignal", (PyObject *)qpycore_pyqtSignal_TypeObject) < 0) Py_FatalError("PyQt6.QtCore: Failed to set pyqtSignal type"); // Initialise the pyqtBoundSignal type and add it to the module dictionary. if (!qpycore_pyqtBoundSignal_init_type()) Py_FatalError("PyQt6.QtCore: Failed to initialise pyqtBoundSignal type"); if (PyDict_SetItemString(module_dict, "pyqtBoundSignal", (PyObject *)qpycore_pyqtBoundSignal_TypeObject) < 0) Py_FatalError("PyQt6.QtCore: Failed to set pyqtBoundSignal type"); // Initialise the private pyqtMethodProxy type. if (!qpycore_pyqtMethodProxy_init_type()) Py_FatalError("PyQt6.QtCore: Failed to initialise pyqtMethodProxy type"); // Register the C++ type that wraps Python objects. qRegisterMetaType("PyQt_PyObject"); // Register the lazy attribute getter. if (sipRegisterAttributeGetter(sipType_QObject, qpycore_get_lazy_attr) < 0) Py_FatalError("PyQt6.QtCore: Failed to register attribute getter"); // Objectify some strings. qpycore_dunder_name = PyUnicode_FromString("__name__"); if (!qpycore_dunder_name) Py_FatalError("PyQt6.QtCore: Failed to objectify '__name__'"); qpycore_dunder_mro = PyUnicode_FromString("__mro__"); if (!qpycore_dunder_mro) Py_FatalError("PyQt6.QtCore: Failed to objectify '__mro__'"); qpycore_dunder_pyqtsignature = PyUnicode_FromString("__pyqtSignature__"); if (!qpycore_dunder_pyqtsignature) Py_FatalError("PyQt6.QtCore: Failed to objectify '__pyqtSignature__'"); // Create the mutex that serialises access to the slot proxies. We don't // use a statically initialised one because Qt needs some things to be // initialised first (at least for Windows) and this is the only way to // guarantee things are done in the right order. PyQtSlotProxy::mutex = new QRecursiveMutex(); // Load the embedded qt.conf file if there is a bundled copy of Qt. if (!qpycore_qt_conf()) Py_FatalError("PyQt6.QtCore: Unable to embed qt.conf"); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1591406 PyQt6-6.6.1/qpy/QtCore/qpycore_public_api.cpp0000644000076500000240000003104314532160372017755 0ustar00philstaff// This implements the public API provided by PyQt to external packages. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_chimera.h" #include "qpycore_event_handlers.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" #include "qpycore_types.h" #include #include // The visitor called for each wrapper to clean up if it is a QObject. static void cleanup_qobject(sipSimpleWrapper *sw, void *closure) { // Ignore any wrapper for QCoreApplication (or sub-class) instances or that // have already been destroyed. void *addr = sipGetAddress(sw); if (!addr || addr == closure) return; // Ignore anything not owned by Python. if (!sipIsOwnedByPython(sw)) return; // Ignore non-QObjects. if (!PyObject_TypeCheck((PyObject *)sw, sipTypeAsPyTypeObject(sipType_QObject))) return; // Ignore running threads. if (PyObject_TypeCheck((PyObject *)sw, sipTypeAsPyTypeObject(sipType_QThread))) { QThread *thr = reinterpret_cast(addr); if (thr->isRunning()) return; } sipTransferTo((PyObject *)sw, SIP_NULLPTR); Py_BEGIN_ALLOW_THREADS delete reinterpret_cast(addr); Py_END_ALLOW_THREADS } // Call the C++ dtors of all QObject instances (except for QCoreApplication // instances) owned by Python. void pyqt6_cleanup_qobjects() { // Disable any monitoring. PyQtMonitor::enabled = false; sipVisitWrappers(cleanup_qobject, QCoreApplication::instance()); } // A replacement for PyErr_Print() that passes the exception to qFatal(). void pyqt6_err_print() { static bool recursing = false; if (recursing) return; recursing = true; // Save the exception in case of new exceptions raised here. PyObject *exception, *value, *traceback; PyErr_Fetch(&exception, &value, &traceback); // Get the standard exception hook. static PyObject *original_hook = 0; if (!original_hook) original_hook = PySys_GetObject("__excepthook__"); // See if the application has installed its own hook. PyObject *hook = PySys_GetObject("excepthook"); if (hook != original_hook) { // This will invoke the application's hook. PyErr_Restore(exception, value, traceback); PyErr_Print(); } else { // Make sure we have the StringIO ctor. static PyObject *stringio_ctor = 0; if (!stringio_ctor) { PyObject *io_module = PyImport_ImportModule("io"); if (io_module) { stringio_ctor = PyObject_GetAttrString(io_module, "StringIO"); Py_DECREF(io_module); } } // Create a StringIO object and replace sys.stderr with it. PyObject *new_stderr = 0, *old_stderr; if (stringio_ctor) { old_stderr = PySys_GetObject("stderr"); if (old_stderr) { new_stderr = PyObject_CallObject(stringio_ctor, NULL); if (new_stderr) { // Make sure the old stderr doesn't get garbage collected // when it is replaced. Py_INCREF(old_stderr); if (PySys_SetObject("stderr", new_stderr) < 0) { Py_DECREF(old_stderr); Py_DECREF(new_stderr); new_stderr = 0; } } } } // Restore the exception and print it. PyErr_Restore(exception, value, traceback); PyErr_Print(); // This will be passed to qFatal() if we can't get the detailed text. QByteArray message("Unhandled Python exception"); // Extract the detailed text if it was redirected. if (new_stderr) { // Restore sys.stderr. PySys_SetObject("stderr", old_stderr); Py_DECREF(old_stderr); // Extract the text. PyObject *text = PyObject_CallMethod(new_stderr, "getvalue", NULL); if (text) { // Strip the text as qFatal() likes to add a newline. PyObject *stripped = PyObject_CallMethod(text, "strip", NULL); if (stripped) { Py_DECREF(text); text = stripped; } // Encode the text using the encoding of the original // sys.stderr. PyObject *encoding = PyObject_GetAttrString(old_stderr, "encoding"); if (encoding) { PyObject *encoding_bytes = PyUnicode_AsUTF8String( encoding); if (encoding_bytes) { Q_ASSERT(PyBytes_Check(encoding_bytes)); PyObject *bytes = PyUnicode_AsEncodedString(text, PyBytes_AsString(encoding_bytes), "strict"); if (bytes) { Q_ASSERT(PyBytes_Check(bytes)); message = QByteArray(PyBytes_AsString(bytes), PyBytes_Size(bytes)); Py_DECREF(bytes); } Py_DECREF(encoding_bytes); } Py_DECREF(encoding); } Py_DECREF(text); } Py_DECREF(new_stderr); } // qFatal() may not call abort. Py_BEGIN_ALLOW_THREADS qFatal("%s", message.data()); Py_END_ALLOW_THREADS } recursing = false; } // Convert a Python argv list to a conventional C argc count and argv array. char **pyqt6_from_argv_list(PyObject *argv_list, int &argc) { argc = PyList_Size(argv_list); // Allocate space for two copies of the argument pointers, plus the // terminating NULL. char **argv = new char *[2 * (argc + 1)]; // Convert the list. for (int a = 0; a < argc; ++a) { PyObject *arg_obj = PyList_GetItem(argv_list, a); char *arg; if (PyUnicode_Check(arg_obj)) { QByteArray ba_arg = qpycore_PyObject_AsQString(arg_obj).toLocal8Bit(); arg = qstrdup(ba_arg.constData()); } else if (PyBytes_Check(arg_obj)) { arg = qstrdup(PyBytes_AsString(arg_obj)); } else { arg = const_cast("invalid"); } argv[a] = argv[a + argc + 1] = arg; } argv[argc + argc + 1] = argv[argc] = NULL; return argv; } // Get the receiver object and slot signature for a connection. sipErrorState pyqt6_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { static QHash cache; QByteArray key(signal_signature); const Chimera::Signature *parsed_signal_signature = cache.value(key); if (!parsed_signal_signature) { parsed_signal_signature = Chimera::parse(key, "a signal argument"); if (!parsed_signal_signature) return sipErrorFail; cache.insert(key, parsed_signal_signature); } return qpycore_get_receiver_slot_signature(slot, transmitter, parsed_signal_signature, single_shot, receiver, slot_signature); } // Get the transmitter object and signal signature from a bound signal. sipErrorState pyqt6_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature) { if (PyObject_TypeCheck(signal, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; *transmitter = bs->bound_qobject; signal_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } return sipErrorContinue; } // Get the receiver object and slot signature from a decorated callable. sipErrorState pyqt6_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature) { PyObject *py_receiver, *decorations; int is_err; void *qobj; Chimera::Signature *sig; sipMethodDef slot_m; // Get the QObject. if (!sipGetMethod(slot, &slot_m)) goto bad_callable; py_receiver = slot_m.pm_self; if (!py_receiver) goto bad_callable; is_err = 0; qobj = sipForceConvertToType(py_receiver, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) goto bad_callable; *receiver = reinterpret_cast(qobj); // Get the decoration. decorations = PyObject_GetAttr(slot, qpycore_dunder_pyqtsignature); if (!decorations) goto bad_callable; // Use the first one ignoring any others. sig = Chimera::Signature::fromPyObject(PyList_GetItem(decorations, 0)); Py_DECREF(decorations); slot_signature = sig->signature; slot_signature.prepend('1'); return sipErrorNone; bad_callable: PyErr_SetString(PyExc_TypeError, "callable must be a method of a QtCore.QObject instance decorated " "by QtCore.pyqtSlot"); return sipErrorFail; } // Get the signature string for a bound or unbound signal. sipErrorState pyqt6_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature) { qpycore_pyqtSignal *ps; if (PyObject_TypeCheck(signal, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)signal; if (transmitter && bs->bound_qobject != transmitter) { PyErr_SetString(PyExc_ValueError, "signal is bound to a different QObject"); return sipErrorFail; } ps = bs->unbound_signal; } else if (PyObject_TypeCheck(signal, qpycore_pyqtSignal_TypeObject)) { ps = (qpycore_pyqtSignal *)signal; } else { return sipErrorContinue; } signal_signature = ps->parsed_signature->signature; return sipErrorNone; } // Register a convertor function that converts a QVariant to a Python object. void pyqt6_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)) { Chimera::registeredFromQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to a QVariant. void pyqt6_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)) { Chimera::registeredToQVariantConvertors.append(convertor); } // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. void pyqt6_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, QMetaType, bool *)) { Chimera::registeredToQVariantDataConvertors.append(convertor); } // Remove arguments from the Python argv list that have been removed from the // C argv array. void pyqt6_update_argv_list(PyObject *argv_list, int argc, char **argv) { for (int a = 0, na = 0; a < argc; ++a) { // See if it was removed. if (argv[na] == argv[a + argc + 1]) ++na; else PyList_SetSlice(argv_list, na, na + 1, 0); } // Assume that we have created a QCoreApplication instance. qpycore_created_qapp = true; } // Get the QMetaObject instance for a Python type. const QMetaObject *pyqt6_get_qmetaobject(PyTypeObject *type) { return qpycore_get_qmetaobject((sipWrapperType *)type); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1565638 PyQt6-6.6.1/qpy/QtCore/qpycore_public_api.h0000644000076500000240000001145414532160372017426 0ustar00philstaff// This defines the public API provided by PyQt to external packages. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PUBLIC_API_H #define _QPYCORE_PUBLIC_API_H #include #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; struct QMetaObject; class QObject; class QVariant; QT_END_NAMESPACE // Call the C++ dtors of all QObject instances (except for QCoreApplication // instances) owned by Python. void pyqt6_cleanup_qobjects(); // A replacement for PyErr_Print(). In PyQt v5.4 it raises a deprecation // warning and calls PyErr_Print(). In PyQt v5.5 and later it passes the text // of the exception and traceback to qFatal(). void pyqt6_err_print(); // Convert a Python list to a standard C array of command line arguments and an // argument count. char **pyqt6_from_argv_list(PyObject *argv_list, int &argc); // Convert a QVariant to a Python object according to an optional Python type. PyObject *pyqt6_from_qvariant_by_type(QVariant &value, PyObject *type); // Get the receiver object and slot signature to allow a signal to be connected // to an optional transmitter. single_shot is true if the signal will only // ever be emitted once. Returns the error state. If this is sipErrorFail // then a Python exception will have been raised. sipErrorState pyqt6_get_connection_parts(PyObject *slot, QObject *transmitter, const char *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); // Get the QMetaObject instance for a Python type. The Python type must be a // sub-type of QObject's Python type. const QMetaObject *pyqt6_get_qmetaobject(PyTypeObject *type); // Get the transmitter object and signal signature from a bound signal. // Returns the error state. If this is sipErrorFail then a Python exception // will have been raised. sipErrorState pyqt6_get_pyqtsignal_parts(PyObject *signal, QObject **transmitter, QByteArray &signal_signature); // Get the receiver object and slot signature from a callable decorated with // pyqtSlot. Returns the error state. If this is sipErrorFail then a Python // exception will have been raised. sipErrorState pyqt6_get_pyqtslot_parts(PyObject *slot, QObject **receiver, QByteArray &slot_signature); // Get the signature string for a bound or unbound signal. If the signal is // bound, and the given transmitter is specified, then it must be bound to the // transmitter. Returns the error state. If this is sipErrorFail then a // Python exception will have been raised. sipErrorState pyqt6_get_signal_signature(PyObject *signal, const QObject *transmitter, QByteArray &signal_signature); // Register a convertor function that converts a QVariant to a Python object. // The convertor will return true if the QVariant was handled, so that no other // convertor need be tried. If the Python object returned was 0 then there was // an error and a Python exception raised. void pyqt6_register_from_qvariant_convertor( bool (*convertor)(const QVariant &, PyObject **)); // Register a convertor function that converts a Python object to a QVariant. // The convertor will return true if the Python object was handled, so that no // other convertor need be tried. If the flag set was false then there was an // error and a Python exception raised. void pyqt6_register_to_qvariant_convertor( bool (*convertor)(PyObject *, QVariant &, bool *)); // Register a convertor function that converts a Python object to the // pre-allocated data of a QVariant with a specific meta-type. The convertor // will return true if the Python object was handled, so that no other // convertor need be tried. If the flag set was false then there was an error // and a Python exception raised. void pyqt6_register_to_qvariant_data_convertor( bool (*convertor)(PyObject *, void *, QMetaType, bool *)); // Update an Python list from a standard C array of command line arguments and // an argument count. void pyqt6_update_argv_list(PyObject *argv_list, int argc, char **argv); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.144772 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtboundsignal.cpp0000644000076500000240000007176514532160372021110 0ustar00philstaff// This contains the implementation of the pyqtBoundSignal type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" // The type object. PyTypeObject *qpycore_pyqtBoundSignal_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtBoundSignal_dealloc(PyObject *self); static Py_hash_t pyqtBoundSignal_hash(PyObject *self); static PyObject *pyqtBoundSignal_repr(PyObject *self); static PyObject *pyqtBoundSignal_richcompare(PyObject *self, PyObject *other, int op); static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *); static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *); static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args); static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript); } static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot); static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs); static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature); static void slot_signature_from_decorations(QByteArray &slot_signature, const Chimera::Signature *signal_signature, PyObject *decorations); static QByteArray slot_signature_from_signal( const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args); static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check); static void add_slot_prefix(QByteArray &slot_signature); // Doc-strings. PyDoc_STRVAR(pyqtBoundSignal_connect_doc, "connect(slot, type=Qt.AutoConnection, no_receiver_check=False)\n" "\n" "slot is either a Python callable or another signal.\n" "type is a Qt.ConnectionType.\n" "no_receiver_check is True to disable the check that the receiver's C++\n" "instance still exists when the signal is emitted.\n"); PyDoc_STRVAR(pyqtBoundSignal_disconnect_doc, "disconnect([slot])\n" "\n" "slot is an optional Python callable or another signal. If it is omitted\n" "then the signal is disconnected from everything it is connected to."); PyDoc_STRVAR(pyqtBoundSignal_emit_doc, "emit(*args)\n" "\n" "*args are the values that will be passed as arguments to all connected\n" "slots."); PyDoc_STRVAR(pyqtBoundSignal_signal_doc, "The signature of the signal that would be returned by SIGNAL()"); // Define the methods. static PyMethodDef pyqtBoundSignal_methods[] = { {"connect", (PyCFunction)pyqtBoundSignal_connect, METH_VARARGS|METH_KEYWORDS, pyqtBoundSignal_connect_doc}, {"disconnect", pyqtBoundSignal_disconnect, METH_VARARGS, pyqtBoundSignal_disconnect_doc}, {"emit", pyqtBoundSignal_emit, METH_VARARGS, pyqtBoundSignal_emit_doc}, {0, 0, 0, 0} }; // The getters/setters. static PyGetSetDef pyqtBoundSignal_getset[] = { {(char *)"__doc__", pyqtBoundSignal_get_doc, NULL, NULL, NULL}, {(char *)"signal", pyqtBoundSignal_get_signal, NULL, (char *)pyqtBoundSignal_signal_doc, NULL}, {NULL, NULL, NULL, NULL, NULL} }; // Define the slots. static PyType_Slot qpycore_pyqtBoundSignal_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_dealloc, (void *)pyqtBoundSignal_dealloc}, {Py_tp_repr, (void *)pyqtBoundSignal_repr}, {Py_tp_richcompare, (void *)pyqtBoundSignal_richcompare}, {Py_tp_hash, (void *)pyqtBoundSignal_hash}, {Py_tp_call, (void *)pyqtBoundSignal_call}, {Py_mp_subscript, (void *)pyqtBoundSignal_mp_subscript}, {Py_tp_methods, pyqtBoundSignal_methods}, {Py_tp_getset, pyqtBoundSignal_getset}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtBoundSignal_Spec = { "PyQt6.QtCore.pyqtBoundSignal", sizeof (qpycore_pyqtBoundSignal), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtBoundSignal_Slots }; // The __doc__ getter. static PyObject *pyqtBoundSignal_get_doc(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; const char *docstring = bs->unbound_signal->docstring; if (!docstring) { Py_INCREF(Py_None); return Py_None; } if (*docstring == '\1') ++docstring; return PyUnicode_FromString(docstring); } // The 'signal' getter. static PyObject *pyqtBoundSignal_get_signal(PyObject *self, void *) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return PyUnicode_FromString( bs->unbound_signal->parsed_signature->signature.constData()); } // The type repr slot. static PyObject *pyqtBoundSignal_repr(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; QByteArray name = bs->unbound_signal->parsed_signature->name(); return PyUnicode_FromFormat("", name.constData() + 1, sipPyTypeName(Py_TYPE(bs->bound_pyobject)), bs->bound_pyobject); } // The type richcompare slot. static PyObject *pyqtBoundSignal_richcompare(PyObject *self, PyObject *other, int op) { if ((op != Py_EQ && op != Py_NE) || !PyObject_TypeCheck(other, qpycore_pyqtBoundSignal_TypeObject)) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; qpycore_pyqtBoundSignal *other_bs = (qpycore_pyqtBoundSignal *)other; int eq = PyObject_RichCompareBool((PyObject *)(bs->unbound_signal), (PyObject *)(other_bs->unbound_signal), Py_EQ); if (eq == 1) eq = PyObject_RichCompareBool(bs->bound_pyobject, other_bs->bound_pyobject, Py_EQ); if (eq < 0) return 0; PyObject *res; if (op == Py_EQ) res = eq ? Py_True : Py_False; else res = eq ? Py_False : Py_True; Py_INCREF(res); return res; } // The type hash slot. static Py_hash_t pyqtBoundSignal_hash(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; Py_hash_t signal_hash = PyObject_Hash((PyObject *)(bs->unbound_signal)); if (signal_hash == -1) return -1; Py_hash_t object_hash = PyObject_Hash((PyObject *)(bs->bound_pyobject)); if (object_hash == -1) return -1; Py_hash_t hash = signal_hash ^ object_hash; if (hash == -1) hash = -2; return hash; } // The type call slot. static PyObject *pyqtBoundSignal_call(PyObject *self, PyObject *args, PyObject *kw) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; return qpycore_call_signal_overload(bs->unbound_signal, bs->bound_pyobject, args, kw); } // The type dealloc slot. static void pyqtBoundSignal_dealloc(PyObject *self) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; Py_XDECREF((PyObject *)bs->unbound_signal); PyObject_Del(self); } // Initialise the type and return true if there was no error. bool qpycore_pyqtBoundSignal_init_type() { qpycore_pyqtBoundSignal_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtBoundSignal_Spec); return qpycore_pyqtBoundSignal_TypeObject; } // Create a bound signal. PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)PyType_GenericNew( qpycore_pyqtBoundSignal_TypeObject, 0, 0); if (bs) { Py_INCREF((PyObject *)unbound_signal); bs->unbound_signal = unbound_signal; bs->bound_pyobject = bound_pyobject; bs->bound_qobject = bound_qobject; } return (PyObject *)bs; } // The mapping subscript slot. static PyObject *pyqtBoundSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; qpycore_pyqtSignal *ps = qpycore_find_signal(bs->unbound_signal, subscript, "a bound signal type argument"); if (!ps) return 0; // Create a new bound signal. return qpycore_pyqtBoundSignal_New(ps, bs->bound_pyobject, bs->bound_qobject); } // Connect a signal. static PyObject *pyqtBoundSignal_connect(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; static const char *kwds[] = { "slot", "type", "no_receiver_check", 0 }; PyObject *py_slot, *py_type = 0; int no_receiver_check = 0; if (!PyArg_ParseTupleAndKeywords(args, kwd_args, "O|Op:connect", const_cast(kwds), &py_slot, &py_type, &no_receiver_check)) return 0; Qt::ConnectionType q_type = Qt::AutoConnection; if (py_type) { int v = sipConvertToEnum(py_type, sipType_Qt_ConnectionType); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "Qt.ConnectionType expected, not '%s'", sipPyTypeName(Py_TYPE(py_slot))); return 0; } q_type = static_cast(v); } QObject *q_tx = bs->bound_qobject, *q_rx; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; QByteArray slot_signature; sipErrorState estate = get_receiver_slot_signature(py_slot, q_tx, signal_signature, false, &q_rx, slot_signature, ((q_type & Qt::UniqueConnection) == Qt::UniqueConnection), no_receiver_check); if (estate != sipErrorNone) { if (estate == sipErrorContinue) sipBadCallableArg(0, py_slot); return 0; } // Connect the signal to the slot and handle any errors. QMetaObject::Connection connection; Py_BEGIN_ALLOW_THREADS connection = QObject::connect(q_tx, signal_signature->signature.constData(), q_rx, slot_signature.constData(), q_type); Py_END_ALLOW_THREADS if (!connection) { QByteArray slot_name = Chimera::Signature::name(slot_signature); PyErr_Format(PyExc_TypeError, "connect() failed between %s and %s()", signal_signature->py_signature.constData(), slot_name.constData() + 1); return 0; } // Save the connection in any proxy. if (qstrcmp(q_rx->metaObject()->className(), "PyQtSlotProxy") == 0) static_cast(q_rx)->connection = connection; return sipConvertFromNewType(new QMetaObject::Connection(connection), sipType_QMetaObject_Connection, NULL); } // Get the receiver object and slot signature from a callable or signal. sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature) { return get_receiver_slot_signature(slot, transmitter, signal_signature, single_shot, receiver, slot_signature, false, 0); } // Get the receiver object and slot signature from a callable or signal. // Optionally disable the receiver check. static sipErrorState get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature, bool unique_connection_check, int no_receiver_check) { // See if the slot is a signal. if (PyObject_TypeCheck(slot, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)slot; *receiver = bs->bound_qobject; slot_signature = bs->unbound_signal->parsed_signature->signature; return sipErrorNone; } // Make sure the slot is callable. if (!PyCallable_Check(slot)) return sipErrorContinue; // See if the slot can be used directly (ie. it wraps a Qt slot) or if it // needs a proxy. if (!get_receiver(slot, signal_signature, receiver, slot_signature)) return sipErrorFail; if (slot_signature.isEmpty()) { slot_signature = PyQtSlotProxy::proxy_slot_signature; // Create a proxy for the slot. PyQtSlotProxy *proxy; if (unique_connection_check) { proxy = PyQtSlotProxy::findSlotProxy(transmitter, signal_signature->signature, slot); if (proxy) { // We give more information than we could if it was a Qt slot // but to be consistent we raise a TypeError even though it's // not the most appropriate for the type of error. PyErr_SetString(PyExc_TypeError, "connection is not unique"); return sipErrorFail; } } Py_BEGIN_ALLOW_THREADS proxy = new PyQtSlotProxy(slot, transmitter, signal_signature, single_shot); if (no_receiver_check) proxy->disableReceiverCheck(); if (proxy->metaObject()) { if (*receiver) proxy->moveToThread((*receiver)->thread()); *receiver = proxy; } else { delete proxy; proxy = 0; } Py_END_ALLOW_THREADS if (!proxy) return sipErrorFail; } return sipErrorNone; } // Disconnect all of a QObject's signals. PyObject *qpycore_qobject_disconnect(const QObject *q_obj) { PyObject *res_obj; bool ok; Py_BEGIN_ALLOW_THREADS ok = q_obj->disconnect(); Py_END_ALLOW_THREADS if (ok) { res_obj = Py_None; Py_INCREF(res_obj); } else { PyErr_SetString(PyExc_TypeError, "disconnect() of all signals failed"); res_obj = 0; } PyQtSlotProxy::deleteSlotProxies(q_obj, QByteArray()); return res_obj; } // Disconnect a signal. static PyObject *pyqtBoundSignal_disconnect(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; PyObject *py_slot = 0, *res_obj; Chimera::Signature *signal_signature = bs->unbound_signal->parsed_signature; if (!PyArg_ParseTuple(args, "|O:disconnect", &py_slot)) return 0; // See if we are disconnecting everything from the overload. if (!py_slot) { res_obj = disconnect(bs, 0, 0); PyQtSlotProxy::deleteSlotProxies(bs->bound_qobject, signal_signature->signature); return res_obj; } // See if the slot is a connection. if (sipCanConvertToType(py_slot, sipType_QMetaObject_Connection, SIP_NOT_NONE)) { int is_error = 0; QMetaObject::Connection *connection = reinterpret_cast(sipConvertToType(py_slot, sipType_QMetaObject_Connection, NULL, 0, NULL, &is_error)); if (is_error) return 0; if (!QObject::disconnect(*connection)) { PyErr_SetString(PyExc_TypeError, "disconnect() of connection failed"); return 0; } // Delete any connected slot proxy. PyQtSlotProxy::deleteSlotProxy(connection); Py_INCREF(Py_None); return Py_None; } // See if the slot is a signal. if (PyObject_TypeCheck(py_slot, qpycore_pyqtBoundSignal_TypeObject)) { qpycore_pyqtBoundSignal *slot_bs = (qpycore_pyqtBoundSignal *)py_slot; return disconnect(bs, slot_bs->bound_qobject, slot_bs->unbound_signal->parsed_signature->signature.constData()); } if (!PyCallable_Check(py_slot)) { sipBadCallableArg(0, py_slot); return 0; } // See if the slot has been used directly (ie. it wraps a Qt slot) or if it // has a proxy. QObject *q_rx; QByteArray slot_signature; if (!get_receiver(py_slot, signal_signature, &q_rx, slot_signature)) return 0; if (!slot_signature.isEmpty()) return disconnect(bs, q_rx, slot_signature.constData()); PyQtSlotProxy *proxy = PyQtSlotProxy::findSlotProxy(bs->bound_qobject, signal_signature->signature, py_slot); if (!proxy) { PyErr_Format(PyExc_TypeError, "'%s' object is not connected", sipPyTypeName(Py_TYPE(py_slot))); return 0; } res_obj = disconnect(bs, proxy, PyQtSlotProxy::proxy_slot_signature.constData()); proxy->disable(); return res_obj; } // Disonnect a signal from a slot and handle any errors. static PyObject *disconnect(qpycore_pyqtBoundSignal *bs, QObject *qrx, const char *slot) { Chimera::Signature *signature = bs->unbound_signal->parsed_signature; bool ok; Py_BEGIN_ALLOW_THREADS ok = QObject::disconnect(bs->bound_qobject, signature->signature.constData(), qrx, slot); Py_END_ALLOW_THREADS if (!ok) { QByteArray tx_name = signature->name(); if (slot) { QByteArray rx_name = Chimera::Signature::name(slot); PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and '%s'", tx_name.constData() + 1, rx_name.constData() + 1); } else { PyErr_Format(PyExc_TypeError, "disconnect() failed between '%s' and all its connections", tx_name.constData() + 1); } return 0; } Py_INCREF(Py_None); return Py_None; } // Emit a signal. static PyObject *pyqtBoundSignal_emit(PyObject *self, PyObject *args) { qpycore_pyqtBoundSignal *bs = (qpycore_pyqtBoundSignal *)self; if (!bs->bound_qobject->signalsBlocked()) { Q_ASSERT(PyTuple_Check(args)); qpycore_pyqtSignal *ps = bs->unbound_signal; // Use the emitter if there is one. if (ps->emitter) { if (ps->emitter(bs->bound_qobject, args) < 0) return 0; } else { Chimera::Signature *signature = ps->parsed_signature; int mo_index = bs->bound_qobject->metaObject()->indexOfSignal( signature->signature.constData() + 1); if (mo_index < 0) { PyErr_Format(PyExc_AttributeError, "'%s' does not have a signal with the signature %s", sipPyTypeName(Py_TYPE(bs->bound_pyobject)), signature->signature.constData() + 1); return 0; } // Use the docstring if there is one and it is auto-generated. const char *docstring = bs->unbound_signal->docstring; if (!docstring || *docstring != '\1') { docstring = signature->py_signature.constData(); } else { // Skip the auto-generated marker. ++docstring; } if (!do_emit(bs->bound_qobject, mo_index, signature, docstring, args)) return 0; } } Py_INCREF(Py_None); return Py_None; } // Emit a signal based on a parsed signature. static bool do_emit(QObject *qtx, int signal_index, const Chimera::Signature *parsed_signature, const char *docstring, PyObject *sigargs) { const QList &args = parsed_signature->parsed_arguments; if (args.size() != PyTuple_Size(sigargs)) { PyErr_Format(PyExc_TypeError, "%s signal has %d argument(s) but %d provided", docstring, args.size(), (int)PyTuple_Size(sigargs)); return false; } // Convert the arguments. QList values; void **argv = new void *[1 + args.size()]; argv[0] = 0; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg_obj = PyTuple_GetItem(sigargs, a); Chimera::Storage *val = (*it)->fromPyObjectToStorage(arg_obj); if (!val) { // Mimic SIP's exception text. PyErr_Format(PyExc_TypeError, "%s.emit(): argument %d has unexpected type '%s'", docstring, a + 1, sipPyTypeName(Py_TYPE(arg_obj))); delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return false; } argv[1 + a] = val->address(); values << val; ++it; } Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qtx, signal_index, argv); Py_END_ALLOW_THREADS delete[] argv; qDeleteAll(values.constBegin(), values.constEnd()); return true; } // Get the receiver QObject from the slot (if there is one) and its signature // (if it wraps a Qt slot). Return true if there was no error. static bool get_receiver(PyObject *slot, const Chimera::Signature *signal_signature, QObject **receiver, QByteArray &slot_signature) { bool try_qt_slot = false; PyObject *rx_self = 0; QByteArray rx_name; sipMethodDef slot_m; sipCFunctionDef slot_cf; // Assume there isn't a QObject receiver. *receiver = 0; if (sipGetMethod(slot, &slot_m)) { rx_self = slot_m.pm_self; // The method may be any callable so don't assume it has a __name__. PyObject *f_name_obj = PyObject_GetAttr(slot_m.pm_function, qpycore_dunder_name); if (!f_name_obj) return false; rx_name = qpycore_convert_ASCII(f_name_obj); Py_DECREF(f_name_obj); if (rx_name.isNull()) return false; // See if this has been decorated. PyObject *decorations = PyObject_GetAttr(slot_m.pm_function, qpycore_dunder_pyqtsignature); if (decorations) { // Choose from the decorations. slot_signature_from_decorations(slot_signature, signal_signature, decorations); Py_DECREF(decorations); if (slot_signature.isEmpty()) { PyErr_Format(PyExc_TypeError, "decorated slot has no signature compatible with %s", signal_signature->py_signature.constData()); return false; } } Py_XINCREF(rx_self); } else if (sipGetCFunction(slot, &slot_cf)) { rx_self = slot_cf.cf_self; rx_name = slot_cf.cf_function->ml_name; // We actually want the C++ name which may (in theory) be completely // different. However this will cope with the exec_ case which is // probably good enough. if (rx_name.endsWith('_')) rx_name.chop(1); try_qt_slot = true; Py_XINCREF(rx_self); } else { static PyObject *partial = 0; // Get the functools.partial type object if we haven't already got it. if (!partial) { PyObject *functools = PyImport_ImportModule("functools"); if (functools) { partial = PyObject_GetAttrString(functools, "partial"); Py_DECREF(functools); } } // If we know about functools.partial then remove the outer partials to // get to the original function. if (partial && PyObject_IsInstance(slot, partial) > 0) { PyObject *func = slot; sipMethodDef func_m; sipCFunctionDef func_cf; Py_INCREF(func); do { PyObject *subfunc = PyObject_GetAttrString(func, "func"); Py_DECREF(func); // This should never happen. if (!subfunc) return false; func = subfunc; } while (PyObject_IsInstance(func, partial) > 0); if (sipGetMethod(func, &func_m)) rx_self = func_m.pm_self; else if (sipGetCFunction(func, &func_cf)) rx_self = func_cf.cf_self; Py_XINCREF(rx_self); Py_DECREF(func); } } if (!rx_self) return true; int iserr = 0; void *rx = sipForceConvertToType(rx_self, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr); Py_DECREF(rx_self); PyErr_Clear(); if (iserr) return true; *receiver = reinterpret_cast(rx); // If there might be a Qt slot that can handle the arguments (or a subset // of them) then use it. Otherwise we will fallback to using a proxy. if (try_qt_slot) { const QMetaObject *mo = (*receiver)->metaObject(); for (int ol = signal_signature->parsed_arguments.count(); ol >= 0; --ol) { slot_signature = slot_signature_from_signal(signal_signature, rx_name, ol); if (mo->indexOfSlot(slot_signature.constData()) >= 0) { add_slot_prefix(slot_signature); break; } slot_signature.clear(); } } return true; } // Return the full name and signature of a Qt slot that a signal can be // connected to, taking the slot decorators into account. static void slot_signature_from_decorations(QByteArray &slot_signature, const Chimera::Signature *signal, PyObject *decorations) { Chimera::Signature *candidate = 0; int signal_nr_args = signal->parsed_arguments.count(); for (Py_ssize_t i = 0; i < PyList_Size(decorations); ++i) { Chimera::Signature *slot = Chimera::Signature::fromPyObject( PyList_GetItem(decorations, i)); int slot_nr_args = slot->parsed_arguments.count(); // Ignore the slot if it requires more arguments than the signal will // provide. if (slot_nr_args > signal_nr_args) continue; // Ignore the slot if any current candidate will accept more arguments. if (candidate && candidate->parsed_arguments.count() >= slot_nr_args) continue; for (int a = 0; a < slot_nr_args; ++a) { const Chimera *sig_arg = signal->parsed_arguments.at(a); const Chimera *slot_arg = slot->parsed_arguments.at(a); // In the first instance we compare meta-types (which deals with // typedefed types). However this can be unreliable as the // signal's type may have been registered by Qt internally (and so // given a new meta-type) after the slot was defined (and has the // meta-type of PyQt_PyObject) so we also compare the C++ names. if (sig_arg->metatype != slot_arg->metatype && sig_arg->name() != slot_arg->name()) { slot = 0; break; } } // If all of the slot's arguments were Ok then this will be the best // candidate so far. if (slot) candidate = slot; } if (candidate) { slot_signature = candidate->signature; add_slot_prefix(slot_signature); } } // Return the full name and signature of the Qt slot that a signal would be // connected to. static QByteArray slot_signature_from_signal( const Chimera::Signature *signal_signature, const QByteArray &slot_name, int nr_args) { QByteArray slot_sig = slot_name; slot_sig.append('('); for (int a = 0; a < nr_args; ++a) { if (a != 0) slot_sig.append(','); slot_sig.append(signal_signature->parsed_arguments.at(a)->name()); } slot_sig.append(')'); return slot_sig; } // Add the prefix to a signaturethat tells Qt it is a slot. static void add_slot_prefix(QByteArray &slot_signature) { slot_signature.prepend('1'); } ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372154.16057 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtboundsignal.h0000644000076500000240000000374714532160372020550 0ustar00philstaff// This defines the interfaces for the pyqtBoundSignal type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTBOUNDSIGNAL_H #define _QPYCORE_PYQTBOUNDSIGNAL_H #include #include #include "qpycore_pyqtsignal.h" #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QByteArray; class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a bound PyQt signal. typedef struct { PyObject_HEAD // The unbound signal. qpycore_pyqtSignal *unbound_signal; // A borrowed reference to the wrapped QObject that is bound to the signal. PyObject *bound_pyobject; // The QObject that is bound to the signal. QObject *bound_qobject; } qpycore_pyqtBoundSignal; } // The type object. extern PyTypeObject *qpycore_pyqtBoundSignal_TypeObject; bool qpycore_pyqtBoundSignal_init_type(); PyObject *qpycore_pyqtBoundSignal_New(qpycore_pyqtSignal *unbound_signal, PyObject *bound_pyobject, QObject *bound_qobject); sipErrorState qpycore_get_receiver_slot_signature(PyObject *slot, QObject *transmitter, const Chimera::Signature *signal_signature, bool single_shot, QObject **receiver, QByteArray &slot_signature); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1458461 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtconfigure.cpp0000644000076500000240000001371214532160372020550 0ustar00philstaff// This implements the helper for QObject.pyqtConfigure(). // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtboundsignal.h" #include "sipAPIQtCore.h" // The result of handling a keyword argument. enum ArgStatus { AsError, AsHandled, AsUnknown }; static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj); // This is the helper for QObject.pyqtConfigure(). PyObject *qpycore_pyqtconfigure(PyObject *self, PyObject *args, PyObject *kwds) { // Check there are no positional arguments. if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_TypeError, "QObject.pyqtConfigure() has no positional arguments"); return 0; } // Get the QObject self. QObject *qobj = reinterpret_cast( sipGetCppPtr((sipSimpleWrapper *)self, sipType_QObject)); if (!qobj) return 0; PyObject *name_obj, *value_obj; Py_ssize_t pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return 0; if (as == AsUnknown) { PyErr_Format(PyExc_AttributeError, "'%S' is not the name of a Qt property or signal", name_obj); return 0; } } Py_INCREF(Py_None); return Py_None; } // This is the helper for the QObject %FinalisationCode. int qpycore_qobject_finalisation(PyObject *self, QObject *qobj, PyObject *kwds, PyObject **updated_kwds) { // This will ensure that the type's QMetaObject has been constructed. qobj->metaObject(); // Handle the trivial case. if (!kwds) return 0; // The dict we will be removing handled arguments from, 0 if it needs to be // created. PyObject *unused = (updated_kwds ? 0 : kwds); PyObject *name_obj, *value_obj; Py_ssize_t pos = 0; while (PyDict_Next(kwds, &pos, &name_obj, &value_obj)) { ArgStatus as = handle_argument(self, qobj, name_obj, value_obj); if (as == AsError) return -1; if (as == AsHandled) { if (!unused) { unused = PyDict_Copy(kwds); if (!unused) return -1; *updated_kwds = unused; } if (PyDict_DelItem(unused, name_obj) < 0) { if (updated_kwds) Py_DECREF(unused); return -1; } } } return 0; } // Handle a single keyword argument. static ArgStatus handle_argument(PyObject *self, QObject *qobj, PyObject *name_obj, PyObject *value_obj) { const QMetaObject *mo = qobj->metaObject(); // Get the name encoded name. QByteArray enc_name = qpycore_convert_ASCII(name_obj); if (enc_name.isNull()) return AsError; // See if it is a property. int idx = mo->indexOfProperty(enc_name.constData()); if (idx >= 0) { QMetaProperty prop = mo->property(idx); // A negative type means a QVariant property. if (prop.userType() >= 0) { bool ok; QVariant value = qpycore_PyObject_AsQVariant(prop, value_obj, &ok); if (!ok) return AsError; qobj->setProperty(enc_name.constData(), value); } else { int value_state, iserr = 0; QVariant *value = reinterpret_cast( sipForceConvertToType(value_obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (iserr) return AsError; qobj->setProperty(enc_name.constData(), *value); sipReleaseType(value, sipType_QVariant, value_state); } } else { bool unknown = true; // See if it is a signal. PyObject *sig = PyObject_GetAttr(self, name_obj); if (sig) { if (PyObject_TypeCheck(sig, qpycore_pyqtBoundSignal_TypeObject)) { static PyObject *connect_obj = NULL; if (!connect_obj) { connect_obj = PyUnicode_FromString("connect"); if (!connect_obj) { Py_DECREF(sig); return AsError; } } // Connect the slot. PyObject *res = PyObject_CallMethodObjArgs(sig, connect_obj, value_obj, 0); if (!res) { Py_DECREF(sig); return AsError; } Py_DECREF(res); unknown = false; } Py_DECREF(sig); } if (unknown) { PyErr_Clear(); return AsUnknown; } } return AsHandled; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1406422 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtmethodproxy.cpp0000644000076500000240000001640014532160372021146 0ustar00philstaff// This contains the implementation of the pyqtMethodProxy type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtmethodproxy.h" // The type object. PyTypeObject *qpycore_pyqtMethodProxy_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args); static void pyqtMethodProxy_dealloc(PyObject *self); } static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name); // Define the slots. static PyType_Slot qpycore_pyqtMethodProxy_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_dealloc, (void *)pyqtMethodProxy_dealloc}, {Py_tp_call, (void *)pyqtMethodProxy_call}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtMethodProxy_Spec = { "PyQt6.QtCore.pyqtMethodProxy", sizeof (qpycore_pyqtMethodProxy), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtMethodProxy_Slots }; // The type dealloc slot. static void pyqtMethodProxy_dealloc(PyObject *self) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; delete mp->py_name; PyObject_Del(self); } // The type call slot. static PyObject *pyqtMethodProxy_call(PyObject *self, PyObject *args, PyObject *kw_args) { qpycore_pyqtMethodProxy *mp = (qpycore_pyqtMethodProxy *)self; const char *py_name = mp->py_name->constData(); // Check for keyword arguments. if (kw_args) { PyErr_Format(PyExc_TypeError, "%s() does not support keyword arguments", py_name); return 0; } QMetaMethod method = mp->qobject->metaObject()->method(mp->method_index); QList arg_types = method.parameterTypes(); if (PyTuple_Size(args) != arg_types.size()) { PyErr_Format(PyExc_TypeError, "%s() called with %zd arguments but %d expected", py_name, PyTuple_Size(args), arg_types.size()); return 0; } // Parse the return type and the arguments. QGenericReturnArgument ret; QGenericArgument a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; Chimera::Storage *return_storage, *storage[10]; QByteArray return_type(method.typeName()); bool failed = false; return_storage = 0; if (!return_type.isEmpty()) { const Chimera *ct = Chimera::parse(return_type); if (!ct) { PyErr_Format(PyExc_TypeError, "unable to convert return value of %s from '%s' to a Python object", py_name, return_type.constData()); return 0; } return_storage = ct->storageFactory(); ret = QGenericReturnArgument(return_type.constData(), return_storage->address()); } parse_arg(args, 0, arg_types, a0, storage, failed, py_name); parse_arg(args, 1, arg_types, a1, storage, failed, py_name); parse_arg(args, 2, arg_types, a2, storage, failed, py_name); parse_arg(args, 3, arg_types, a3, storage, failed, py_name); parse_arg(args, 4, arg_types, a4, storage, failed, py_name); parse_arg(args, 5, arg_types, a5, storage, failed, py_name); parse_arg(args, 6, arg_types, a6, storage, failed, py_name); parse_arg(args, 7, arg_types, a7, storage, failed, py_name); parse_arg(args, 8, arg_types, a8, storage, failed, py_name); parse_arg(args, 9, arg_types, a9, storage, failed, py_name); // Invoke the method. PyObject *result = 0; if (!failed) { Py_BEGIN_ALLOW_THREADS failed = !method.invoke(mp->qobject, Qt::DirectConnection, ret, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); Py_END_ALLOW_THREADS if (failed) { PyErr_Format(PyExc_TypeError, "invocation of %s() failed", py_name); } else if (return_storage) { result = return_storage->toPyObject(); } else { result = Py_None; Py_INCREF(result); } } // Release any storage. if (return_storage) { delete return_storage->type(); delete return_storage; } for (int i = 0; i < 10; ++i) { Chimera::Storage *st = storage[i]; if (st) { delete st->type(); delete st; } } return result; } // Convert a Python object to a QGenericArgument. static void parse_arg(PyObject *args, int arg_nr, const QList &types, QGenericArgument &arg, Chimera::Storage **storage, bool &failed, const char *py_name) { // Initialise so that we can safely release later. storage[arg_nr] = 0; // If we have already failed then there is nothing to do. if (failed) return; // If we have run out of arguments then there is nothing to do. if (arg_nr >= types.size()) return; PyObject *py_arg = PyTuple_GetItem(args, arg_nr); const QByteArray &cpp_type = types.at(arg_nr); const Chimera *ct = Chimera::parse(cpp_type); Chimera::Storage *st; if (ct) st = ct->fromPyObjectToStorage(py_arg); else st = 0; if (!st) { if (ct) delete ct; PyErr_Format(PyExc_TypeError, "unable to convert argument %d of %s from '%s' to '%s'", arg_nr, py_name, sipPyTypeName(Py_TYPE(py_arg)), cpp_type.constData()); failed = true; return; } storage[arg_nr] = st; arg = QGenericArgument(cpp_type.constData(), st->address()); } // Initialise the type and return true if there was no error. bool qpycore_pyqtMethodProxy_init_type() { qpycore_pyqtMethodProxy_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtMethodProxy_Spec); return qpycore_pyqtMethodProxy_TypeObject; } // Create a proxy for a bound introspected method. PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name) { qpycore_pyqtMethodProxy *mp; mp = (qpycore_pyqtMethodProxy *)PyType_GenericAlloc( qpycore_pyqtMethodProxy_TypeObject, 0); if (!mp) return 0; mp->qobject = qobject; mp->method_index = method_index; mp->py_name = new QByteArray(py_name); return (PyObject *)mp; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1079268 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtmethodproxy.h0000644000076500000240000000335114532160372020614 0ustar00philstaff// This defines the interfaces for the pyqtMethodProxy type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTMETHODPROXY_H #define _QPYCORE_PYQTMETHODPROXY_H #include #include #include #include "qpycore_namespace.h" QT_BEGIN_NAMESPACE class QObject; QT_END_NAMESPACE extern "C" { // This defines the structure of a pyqtMethodProxy object. typedef struct _qpycore_pyqtMethodProxy { PyObject_HEAD // The QObject whose method being proxied. QObject *qobject; // The method index in the QObject's meta-object. int method_index; // The fully qualified Python name of the method. const QByteArray *py_name; } qpycore_pyqtMethodProxy; } // The type object. extern PyTypeObject *qpycore_pyqtMethodProxy_TypeObject; bool qpycore_pyqtMethodProxy_init_type(); PyObject *qpycore_pyqtMethodProxy_New(QObject *qobject, int method_index, const QByteArray &py_name); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.151708 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtmutexlocker.cpp0000644000076500000240000000403014532160372021122 0ustar00philstaff// This is the implementation of the PyQtMutexLocker class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_pyqtmutexlocker.h" // Create a locker for a QMutex. PyQtMutexLocker::PyQtMutexLocker(QMutex *mutex, PyObject *wrapper) : _wrapper(wrapper), _r_locker(nullptr) { Py_INCREF(_wrapper); _locker = new QMutexLocker(mutex); } // Create a locker for a QRecursiveMutex. PyQtMutexLocker::PyQtMutexLocker(QRecursiveMutex *mutex, PyObject *wrapper) : _wrapper(wrapper), _locker(nullptr) { Py_INCREF(_wrapper); _r_locker = new QMutexLocker(mutex); } // Destroy the locker. PyQtMutexLocker::~PyQtMutexLocker() { if (_locker) delete _locker; else delete _r_locker; Py_DECREF(_wrapper); } // Return the Python object that wraps the mutex. PyObject *PyQtMutexLocker::mutex() { Py_INCREF(_wrapper); return _wrapper; } // Explicitly unlock the mutex. void PyQtMutexLocker::unlock() { if (_locker) _locker->unlock(); else _r_locker->unlock(); } // Explicitly relock the mutex. void PyQtMutexLocker::relock() { if (_locker) _locker->relock(); else _r_locker->relock(); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1287563 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtmutexlocker.h0000644000076500000240000000263614532160372020601 0ustar00philstaff// This is the declaration of the PyQtMutexLocker class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include // This class implements the Qt5 QMutexLocker on top of the Qt6 template-based // version. class PyQtMutexLocker { public: PyQtMutexLocker(QMutex *mutex, PyObject *wrapper); PyQtMutexLocker(QRecursiveMutex *mutex, PyObject *wrapper); ~PyQtMutexLocker(); PyObject *mutex(); void unlock(); void relock(); private: PyObject *_wrapper; QMutexLocker *_locker; QMutexLocker *_r_locker; PyQtMutexLocker(const PyQtMutexLocker &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1001132 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtproperty.cpp0000644000076500000240000003632314532160372020456 0ustar00philstaff// This is the implementation of pyqtProperty. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpycore_chimera.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" // The type object. PyTypeObject *qpycore_pyqtProperty_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter); static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter); static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter); static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset); static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *); static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value); static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds); static void pyqtProperty_dealloc(PyObject *self); static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds); static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg); } static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig); static PyObject *getter_docstring(PyObject *getter); // Doc-strings. PyDoc_STRVAR(pyqtProperty_doc, "pyqtProperty(type, fget=None, fset=None, freset=None, fdel=None, doc=None,\n" " designable=True, scriptable=True, stored=True, user=False,\n" " constant=False, final=False, notify=None,\n" " revision=0) -> property attribute\n" "\n" "type is the type of the property. It is either a type object or a string\n" "that is the name of a C++ type.\n" "freset is a function for resetting an attribute to its default value.\n" "designable sets the DESIGNABLE flag (the default is True for writable\n" "properties and False otherwise).\n" "scriptable sets the SCRIPTABLE flag.\n" "stored sets the STORED flag.\n" "user sets the USER flag.\n" "constant sets the CONSTANT flag.\n" "final sets the FINAL flag.\n" "notify is the NOTIFY signal.\n" "revision is the REVISION.\n" "The other parameters are the same as those required by the standard Python\n" "property type. Properties defined using pyqtProperty behave as both Python\n" "and Qt properties." "\n" "Decorators can be used to define new properties or to modify existing ones."); PyDoc_STRVAR(getter_doc, "Descriptor to change the getter on a property."); PyDoc_STRVAR(setter_doc, "Descriptor to change the setter on a property."); PyDoc_STRVAR(deleter_doc, "Descriptor to change the deleter on a property."); PyDoc_STRVAR(reset_doc, "Descriptor to change the reset on a property."); // Define the attributes. static PyMemberDef pyqtProperty_members[] = { {const_cast("type"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_type), READONLY, 0}, {const_cast("fget"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_get), READONLY, 0}, {const_cast("fset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_set), READONLY, 0}, {const_cast("fdel"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_del), READONLY, 0}, {const_cast("freset"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_reset), READONLY, 0}, {const_cast("__doc__"), T_OBJECT, offsetof(qpycore_pyqtProperty, pyqtprop_doc), READONLY, 0}, {0, 0, 0, 0, 0} }; // Define the methods. static PyMethodDef pyqtProperty_methods[] = { {"getter", pyqtProperty_getter, METH_O, getter_doc}, {"read", pyqtProperty_getter, METH_O, getter_doc}, {"setter", pyqtProperty_setter, METH_O, setter_doc}, {"write", pyqtProperty_setter, METH_O, setter_doc}, {"deleter", pyqtProperty_deleter, METH_O, deleter_doc}, {"reset", pyqtProperty_reset, METH_O, reset_doc}, {0, 0, 0, 0} }; // Define the slots. static PyType_Slot qpycore_pyqtProperty_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_alloc, (void *)PyType_GenericAlloc}, {Py_tp_init, (void *)pyqtProperty_init}, {Py_tp_dealloc, (void *)pyqtProperty_dealloc}, {Py_tp_free, (void *)PyObject_GC_Del}, {Py_tp_call, (void *)pyqtProperty_call}, {Py_tp_getattro, (void *)PyObject_GenericGetAttr}, {Py_tp_doc, (void *)pyqtProperty_doc}, {Py_tp_traverse, (void *)pyqtProperty_traverse}, {Py_tp_descr_get, (void *)pyqtProperty_descr_get}, {Py_tp_descr_set, (void *)pyqtProperty_descr_set}, {Py_tp_methods, pyqtProperty_methods}, {Py_tp_members, pyqtProperty_members}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtProperty_Spec = { "PyQt6.QtCore.pyqtProperty", sizeof (qpycore_pyqtProperty), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_BASETYPE, qpycore_pyqtProperty_Slots }; // This is the sequence number to allocate to the next PyQt property to be // defined. This ensures that properties appear in the QMetaObject in the same // order that they are defined in Python. static uint pyqtprop_sequence_nr = 0; // The pyqtProperty dealloc function. static void pyqtProperty_dealloc(PyObject *self) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject_GC_UnTrack(self); Py_XDECREF(pp->pyqtprop_get); Py_XDECREF(pp->pyqtprop_set); Py_XDECREF(pp->pyqtprop_del); Py_XDECREF(pp->pyqtprop_doc); Py_XDECREF(pp->pyqtprop_reset); Py_XDECREF(pp->pyqtprop_notify); Py_XDECREF(pp->pyqtprop_type); delete pp->pyqtprop_parsed_type; ((destructor)PyType_GetSlot(Py_TYPE(self), Py_tp_free))(self); } // The descriptor getter. static PyObject *pyqtProperty_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; if (!obj || obj == Py_None) { Py_INCREF(self); return self; } if (!pp->pyqtprop_get) { PyErr_SetString(PyExc_AttributeError, "unreadable attribute"); return 0; } return PyObject_CallFunction(pp->pyqtprop_get, const_cast("(O)"), obj); } // The descriptor setter. static int pyqtProperty_descr_set(PyObject *self, PyObject *obj, PyObject *value) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; PyObject *func, *res; func = (value ? pp->pyqtprop_set : pp->pyqtprop_del); if (!func) { PyErr_SetString(PyExc_AttributeError, (value ? "can't set attribute" : "can't delete attribute")); return -1; } if (value) res = PyObject_CallFunction(func, const_cast("(OO)"), obj, value); else res = PyObject_CallFunction(func, const_cast("(O)"), obj); if (!res) return -1; Py_DECREF(res); return 0; } // The pyqtProperty traverse function. static int pyqtProperty_traverse(PyObject *self, visitproc visit, void *arg) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; int vret; if (pp->pyqtprop_get) { vret = visit(pp->pyqtprop_get, arg); if (vret != 0) return vret; } if (pp->pyqtprop_set) { vret = visit(pp->pyqtprop_set, arg); if (vret != 0) return vret; } if (pp->pyqtprop_del) { vret = visit(pp->pyqtprop_del, arg); if (vret != 0) return vret; } if (pp->pyqtprop_doc) { vret = visit(pp->pyqtprop_doc, arg); if (vret != 0) return vret; } if (pp->pyqtprop_reset) { vret = visit(pp->pyqtprop_reset, arg); if (vret != 0) return vret; } if (pp->pyqtprop_notify) { vret = visit(pp->pyqtprop_notify, arg); if (vret != 0) return vret; } if (pp->pyqtprop_type) { vret = visit(pp->pyqtprop_type, arg); if (vret != 0) return vret; } return 0; } // The pyqtProperty init function. static int pyqtProperty_init(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *type, *get = 0, *set = 0, *reset = 0, *del = 0, *doc = 0, *notify = 0; int scriptable = 1, stored = 1, user = 0, constant = 0, final = 0; int designable = 1, revision = 0; static const char *kwlist[] = {"type", "fget", "fset", "freset", "fdel", "doc", "designable", "scriptable", "stored", "user", "constant", "final", "notify", "revision", 0}; qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp->pyqtprop_sequence = pyqtprop_sequence_nr++; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OOOOOiiiiiiO!i:pyqtProperty", const_cast(kwlist), &type, &get, &set, &reset, &del, &doc, &designable, &scriptable, &stored, &user, &constant, &final, qpycore_pyqtSignal_TypeObject, ¬ify, &revision)) return -1; if (get == Py_None) get = 0; if (set == Py_None) set = 0; if (del == Py_None) del = 0; if (reset == Py_None) reset = 0; if (notify == Py_None) notify = 0; // Parse the type. const Chimera *ptype = Chimera::parse(type); if (!ptype) { Chimera::raiseParseException(type, "a property"); return -1; } pp->pyqtprop_parsed_type = ptype; Py_XINCREF(get); Py_XINCREF(set); Py_XINCREF(del); Py_XINCREF(doc); Py_XINCREF(reset); Py_XINCREF(notify); Py_INCREF(type); // If no docstring was given try the getter. if (!doc || doc == Py_None) { PyObject *getter_doc = getter_docstring(get); if (getter_doc) { Py_XDECREF(doc); doc = getter_doc; } } pp->pyqtprop_get = get; pp->pyqtprop_set = set; pp->pyqtprop_del = del; pp->pyqtprop_doc = doc; pp->pyqtprop_reset = reset; pp->pyqtprop_notify = notify; pp->pyqtprop_type = type; // ResolveEditable is always set. unsigned flags = 0x00080000; if (designable) flags |= 0x00001000; if (scriptable) flags |= 0x00004000; if (stored) flags |= 0x00010000; if (user) flags |= 0x00100000; if (constant) flags |= 0x00000400; if (final) flags |= 0x00000800; pp->pyqtprop_flags = flags; pp->pyqtprop_revision = revision; return 0; } // Calling the property is a shorthand way of changing the getter. static PyObject *pyqtProperty_call(PyObject *self, PyObject *args, PyObject *kwds) { PyObject *get; static const char *kwlist[] = {"fget", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:pyqtProperty", const_cast(kwlist), &get)) return 0; return pyqtProperty_getter(self, get); } // Return a copy of the property with a different getter. static PyObject *pyqtProperty_getter(PyObject *self, PyObject *getter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_get); if (getter == Py_None) getter = 0; else Py_INCREF(getter); pp->pyqtprop_get = getter; // Use the getter's docstring if it has one. PyObject *getter_doc = getter_docstring(getter); if (getter_doc) { Py_XDECREF(pp->pyqtprop_doc); pp->pyqtprop_doc = getter_doc; } } return (PyObject *)pp; } // Return a copy of the property with a different setter. static PyObject *pyqtProperty_setter(PyObject *self, PyObject *setter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_set); if (setter == Py_None) setter = 0; else Py_INCREF(setter); pp->pyqtprop_set = setter; } return (PyObject *)pp; } // Return a copy of the property with a different deleter. static PyObject *pyqtProperty_deleter(PyObject *self, PyObject *deleter) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_del); if (deleter == Py_None) deleter = 0; else Py_INCREF(deleter); pp->pyqtprop_del = deleter; } return (PyObject *)pp; } // Return a copy of the property with a different reset. static PyObject *pyqtProperty_reset(PyObject *self, PyObject *reset) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)self; pp = clone(pp); if (pp) { Py_XDECREF(pp->pyqtprop_reset); if (reset == Py_None) reset = 0; else Py_INCREF(reset); pp->pyqtprop_reset = reset; } return (PyObject *)pp; } // Create a clone of a property. static qpycore_pyqtProperty *clone(qpycore_pyqtProperty *orig) { qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)PyType_GenericNew( Py_TYPE(orig), 0, 0); if (pp) { pp->pyqtprop_get = orig->pyqtprop_get; Py_XINCREF(pp->pyqtprop_get); pp->pyqtprop_set = orig->pyqtprop_set; Py_XINCREF(pp->pyqtprop_set); pp->pyqtprop_del = orig->pyqtprop_del; Py_XINCREF(pp->pyqtprop_del); pp->pyqtprop_doc = orig->pyqtprop_doc; Py_XINCREF(pp->pyqtprop_doc); pp->pyqtprop_reset = orig->pyqtprop_reset; Py_XINCREF(pp->pyqtprop_reset); pp->pyqtprop_notify = orig->pyqtprop_notify; Py_XINCREF(pp->pyqtprop_notify); pp->pyqtprop_type = orig->pyqtprop_type; Py_XINCREF(pp->pyqtprop_type); pp->pyqtprop_parsed_type = new Chimera(*orig->pyqtprop_parsed_type); pp->pyqtprop_flags = orig->pyqtprop_flags; pp->pyqtprop_revision = orig->pyqtprop_revision; pp->pyqtprop_sequence = orig->pyqtprop_sequence; } return pp; } // Return the docstring of an optional getter or 0 if it doesn't have one. static PyObject *getter_docstring(PyObject *getter) { // Handle the trivial case. if (!getter) return 0; PyObject *getter_doc = PyObject_GetAttrString(getter, "__doc__"); if (!getter_doc) { PyErr_Clear(); return 0; } if (getter_doc == Py_None) { Py_DECREF(getter_doc); return 0; } return getter_doc; } // Initialise the type and return true if there was no error. bool qpycore_pyqtProperty_init_type() { qpycore_pyqtProperty_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtProperty_Spec); return qpycore_pyqtProperty_TypeObject; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1013696 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtproperty.h0000644000076500000240000000403414532160372020115 0ustar00philstaff// This contains the definitions for the implementation of pyqtProperty. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPROPERTY_H #define _QPYCORE_PYQTPROPERTY_H #include class Chimera; extern "C" { // This defines the structure of a PyQt property. typedef struct { PyObject_HEAD // The fget/getter/read callable. PyObject *pyqtprop_get; // The fset/setter/write callable. PyObject *pyqtprop_set; // The fdel/deleter callable. PyObject *pyqtprop_del; // The docstring. PyObject *pyqtprop_doc; // The freset/reset callable. PyObject *pyqtprop_reset; // The notify signal. PyObject *pyqtprop_notify; // The property type. PyObject *pyqtprop_type; // The parsed type information. const Chimera *pyqtprop_parsed_type; // The DESIGNABLE, SCRIPTABLE, STORED, USER, CONSTANT and FINAL flags. unsigned pyqtprop_flags; // The REVISION. int pyqtprop_revision; // The property's sequence number that determines the position of the // property in the QMetaObject. uint pyqtprop_sequence; } qpycore_pyqtProperty; } // The type object. extern PyTypeObject *qpycore_pyqtProperty_TypeObject; bool qpycore_pyqtProperty_init_type(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1359055 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtpyobject.cpp0000644000076500000240000001123514532160372020404 0ustar00philstaff// This contains the support for Python objects and Qt's metatype system. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "qpycore_pyqtpyobject.h" #include "sipAPIQtCore.h" // The current pickle protocol. PyObject *qpycore_pickle_protocol; // Wrap a Python object. PyQt_PyObject::PyQt_PyObject(PyObject *py) { pyobject = py; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Create a new wrapper, with no Python object. This is called by Qt's // metatype system. PyQt_PyObject::PyQt_PyObject() { pyobject = 0; } // Create a copy of an existing wrapper. This is called by Qt's metatype // system. PyQt_PyObject::PyQt_PyObject(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS } // Destroy a wrapper. PyQt_PyObject::~PyQt_PyObject() { // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS Py_XDECREF(pyobject); SIP_UNBLOCK_THREADS } pyobject = 0; } // Assignment operator. PyQt_PyObject &PyQt_PyObject::operator=(const PyQt_PyObject &other) { pyobject = other.pyobject; SIP_BLOCK_THREADS Py_XINCREF(pyobject); SIP_UNBLOCK_THREADS return *this; } // Comparison operator. It must be global to be available to QMetaType. bool operator==(const PyQt_PyObject &self, const PyQt_PyObject &other) { // Note that we implement 'self is other' rather than 'self == other'. return self.pyobject == other.pyobject; } // Serialise operator. QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj) { PyObject *ser_obj = 0; const char *ser = 0; uint len = 0; if (obj.pyobject) { static PyObject *dumps = 0; SIP_BLOCK_THREADS if (!dumps) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { dumps = PyObject_GetAttrString(pickle, "dumps"); Py_DECREF(pickle); } } if (dumps) { if (!qpycore_pickle_protocol) { Py_INCREF(Py_None); qpycore_pickle_protocol = Py_None; } ser_obj = PyObject_CallFunctionObjArgs(dumps, obj.pyobject, qpycore_pickle_protocol, 0); if (ser_obj) { if (PyBytes_Check(ser_obj)) { ser = PyBytes_AsString(ser_obj); len = PyBytes_Size(ser_obj); } else { Py_DECREF(ser_obj); ser_obj = 0; } } else { pyqt6_err_print(); } } SIP_UNBLOCK_THREADS } out.writeBytes(ser, len); if (ser_obj) { SIP_BLOCK_THREADS Py_DECREF(ser_obj); SIP_UNBLOCK_THREADS } return out; } // De-serialise operator. QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj) { char *ser; uint len; in.readBytes(ser, len); if (len) { static PyObject *loads = 0; SIP_BLOCK_THREADS if (!loads) { PyObject *pickle = PyImport_ImportModule("pickle"); if (pickle) { loads = PyObject_GetAttrString(pickle, "loads"); Py_DECREF(pickle); } } if (loads) { PyObject *ser_obj = PyBytes_FromStringAndSize(ser, len); if (ser_obj) { obj.pyobject = PyObject_CallFunctionObjArgs(loads, ser_obj, 0); Py_DECREF(ser_obj); } } SIP_UNBLOCK_THREADS } delete[] ser; return in; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.107141 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtpyobject.h0000644000076500000240000000331614532160372020052 0ustar00philstaff// This contains definitions related to the support for Python objects and Qt's // meta-type system. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTPYOBJECT_H #define _QPYCORE_PYQTPYOBJECT_H #include #include #include // This class is used to wrap a PyObject so it can be passed around Qt's // meta-type system while maintaining its reference count. class PyQt_PyObject { public: PyQt_PyObject(PyObject *py); PyQt_PyObject(); PyQt_PyObject(const PyQt_PyObject &other); ~PyQt_PyObject(); PyQt_PyObject &operator=(const PyQt_PyObject &other); // The Python object being wrapped. PyObject *pyobject; }; bool operator==(const PyQt_PyObject &self, const PyQt_PyObject &other); QDataStream &operator<<(QDataStream &out, const PyQt_PyObject &obj); QDataStream &operator>>(QDataStream &in, PyQt_PyObject &obj); Q_DECLARE_METATYPE(PyQt_PyObject) #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0784345 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtsignal.cpp0000644000076500000240000004773014532160372020053 0ustar00philstaff// This contains the implementation of the pyqtSignal type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtsignal.h" // The type object. PyTypeObject *qpycore_pyqtSignal_TypeObject; // Forward declarations. extern "C" { static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw); static void pyqtSignal_dealloc(PyObject *self); static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *type); static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args); static PyObject *pyqtSignal_repr(PyObject *self); static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript); static PyObject *pyqtSignal_get_doc(PyObject *self, void *); static PyObject *pyqtSignal_get_signatures(PyObject *self, void *); } static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types); static void append_overload(qpycore_pyqtSignal *ps); static bool is_signal_name(const char *sig, const QByteArray &name); // Doc-strings. PyDoc_STRVAR(pyqtSignal_doc, "pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL\n" "\n" "types is normally a sequence of individual types. Each type is either a\n" "type object or a string that is the name of a C++ type. Alternatively\n" "each type could itself be a sequence of types each describing a different\n" "overloaded signal.\n" "name is the optional C++ name of the signal. If it is not specified then\n" "the name of the class attribute that is bound to the signal is used.\n" "revision is the optional revision of the signal that is exported to QML.\n" "If it is not specified then 0 is used.\n" "arguments is the optional sequence of the names of the signal's arguments.\n"); PyDoc_STRVAR(pyqtSignal_signatures_doc, "The signatures of each of the overloaded signals"); // The getters/setters. static PyGetSetDef pyqtSignal_getset[] = { {const_cast("__doc__"), pyqtSignal_get_doc, NULL, NULL, NULL}, {const_cast("signatures"), pyqtSignal_get_signatures, NULL, const_cast(pyqtSignal_signatures_doc), NULL}, {NULL, NULL, NULL, NULL, NULL} }; // Define the slots. static PyType_Slot qpycore_pyqtSignal_Slots[] = { {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_init, (void *)pyqtSignal_init}, {Py_tp_dealloc, (void *)pyqtSignal_dealloc}, {Py_tp_doc, (void *)pyqtSignal_doc}, {Py_tp_repr, (void *)pyqtSignal_repr}, {Py_tp_call, (void *)pyqtSignal_call}, {Py_tp_descr_get, (void *)pyqtSignal_descr_get}, {Py_mp_subscript, (void *)pyqtSignal_mp_subscript}, {Py_tp_getset, pyqtSignal_getset}, {0, 0} }; // Define the type. static PyType_Spec qpycore_pyqtSignal_Spec = { "PyQt6.QtCore.pyqtSignal", sizeof (qpycore_pyqtSignal), 0, Py_TPFLAGS_DEFAULT, qpycore_pyqtSignal_Slots }; // The __doc__ getter. static PyObject *pyqtSignal_get_doc(PyObject *self, void *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Make sure we have the default signal. ps = ps->default_signal; QByteArray doc; // Get any docstrings from any non-signal overloads. if (ps->non_signals && ps->non_signals->ml_doc) { doc.append('\n'); doc.append(ps->non_signals->ml_doc); } // Get any docstrings from the signals. do { const char *docstring = ps->docstring; if (docstring) { if (*docstring == '\1') ++docstring; doc.append('\n'); doc.append(docstring); doc.append(" [signal]"); } ps = ps->next; } while (ps); if (doc.isEmpty()) { Py_INCREF(Py_None); return Py_None; } return PyUnicode_FromString(doc.constData() + 1); } // The 'signatures' getter. static PyObject *pyqtSignal_get_signatures(PyObject *self, void *) { qpycore_pyqtSignal *head = ((qpycore_pyqtSignal *)self)->default_signal; qpycore_pyqtSignal *ps; PyObject *sigs; Py_ssize_t sig_nr; // Count the number of overloads. for (sig_nr = 0, ps = head; ps; ps = ps->next, ++sig_nr) ; sigs = PyTuple_New(sig_nr); if (!sigs) return 0; for (sig_nr = 0, ps = head; ps; ps = ps->next, ++sig_nr) { PyObject *sig = PyUnicode_FromString( ps->parsed_signature->signature.constData() + 1); if (!sig || PyTuple_SetItem(sigs, sig_nr, sig)) { Py_DECREF(sigs); return 0; } } return sigs; } // The type repr slot. static PyObject *pyqtSignal_repr(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; return PyUnicode_FromFormat("", ps->parsed_signature->signature.constData() + 1); } // The type call slot. static PyObject *pyqtSignal_call(PyObject *self, PyObject *args, PyObject *kw) { return qpycore_call_signal_overload((qpycore_pyqtSignal *)self, 0, args, kw); } // The type dealloc slot. static void pyqtSignal_dealloc(PyObject *self) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; delete ps->parsed_signature; if (ps->parameter_names) delete ps->parameter_names; // If we are the default then we own the overloads references. if (ps == ps->default_signal) { qpycore_pyqtSignal *next = ps->next; while (next) { ps = next; next = ps->next; Py_DECREF((PyObject *)ps); } } PyObject_Del(self); } // The type descriptor get slot. static PyObject *pyqtSignal_descr_get(PyObject *self, PyObject *obj, PyObject *) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Return the unbound signal if there is nothing to bind it to. if (obj == NULL || obj == Py_None) { Py_INCREF(self); return self; } // Get the QObject. int is_err = 0; void *qobject = sipForceConvertToType(obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &is_err); if (is_err) return 0; // Return the bound signal. return qpycore_pyqtBoundSignal_New(ps, obj, reinterpret_cast(qobject)); } // The type init slot. static int pyqtSignal_init(PyObject *self, PyObject *args, PyObject *kwd_args) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; // Get the keyword arguments. PyObject *name_obj = 0; const char *name = 0; int revision = 0; QList *parameter_names = 0; if (kwd_args) { Py_ssize_t pos = 0; PyObject *key, *value; while (PyDict_Next(kwd_args, &pos, &key, &value)) { if (PyUnicode_CompareWithASCIIString(key, "name") == 0) { name_obj = value; name = sipString_AsASCIIString(&name_obj); if (!name) { PyErr_Format(PyExc_TypeError, "signal 'name' must be a str, not %s", sipPyTypeName(Py_TYPE(value))); return -1; } } else if (PyUnicode_CompareWithASCIIString(key, "revision") == 0) { revision = sipLong_AsInt(value); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "signal 'revision' must be an int, not %s", sipPyTypeName(Py_TYPE(value))); Py_XDECREF(name_obj); return -1; } } else if (PyUnicode_CompareWithASCIIString(key, "arguments") == 0) { bool ok = true; if (PySequence_Check(value)) { Py_ssize_t len = PySequence_Size(value); parameter_names = new QList; for (Py_ssize_t i = 0; i < len; ++i) { PyObject *py_attr = PySequence_GetItem(value, i); if (!py_attr) { ok = false; break; } QByteArray attr = qpycore_convert_ASCII(py_attr); Py_DECREF(py_attr); if (attr.isNull()) { ok = false; break; } parameter_names->append(attr); } } else { ok = false; } if (!ok) { PyErr_Format(PyExc_TypeError, "signal 'attribute_names' must be a sequence of str, not %s", sipPyTypeName(Py_TYPE(value))); if (parameter_names) delete parameter_names; Py_XDECREF(name_obj); return -1; } } else { PyErr_Format(PyExc_TypeError, "pyqtSignal() got an unexpected keyword argument '%U'", key); Py_XDECREF(name_obj); return -1; } } } // If there is at least one argument and it is a sequence then assume all // arguments are sequences. Unfortunately a string is also a sequence so // check for tuples and lists explicitly. if (PyTuple_Size(args) > 0 && (PyTuple_Check(PyTuple_GetItem(args, 0)) || PyList_Check(PyTuple_GetItem(args, 0)))) { for (Py_ssize_t i = 0; i < PyTuple_Size(args); ++i) { PyObject *types = PySequence_Tuple(PyTuple_GetItem(args, i)); if (!types) { PyErr_SetString(PyExc_TypeError, "pyqtSignal() argument expected to be sequence of types"); if (name) { Py_DECREF(name_obj); } return -1; } int rc; if (i == 0) { // The first is the default. rc = init_signal_from_types(ps, name, parameter_names, revision, types); } else { qpycore_pyqtSignal *overload = (qpycore_pyqtSignal *)PyType_GenericNew(qpycore_pyqtSignal_TypeObject, 0, 0); if (!overload) { rc = -1; } else if ((rc = init_signal_from_types(overload, name, 0, revision, types)) < 0) { Py_DECREF((PyObject *)overload); } else { overload->default_signal = ps; append_overload(overload); } } Py_DECREF(types); if (rc < 0) { if (name) { Py_DECREF(name_obj); } return -1; } } } else if (init_signal_from_types(ps, name, parameter_names, revision, args) < 0) { if (name) { Py_DECREF(name_obj); } return -1; } if (name) { Py_DECREF(name_obj); } return 0; } // The mapping subscript slot. static PyObject *pyqtSignal_mp_subscript(PyObject *self, PyObject *subscript) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)self; PyObject *sig = (PyObject *)qpycore_find_signal(ps, subscript, "an unbound signal type argument"); Py_XINCREF(sig); return sig; } // Initialise the type and return true if there was no error. bool qpycore_pyqtSignal_init_type() { qpycore_pyqtSignal_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpycore_pyqtSignal_Spec); return qpycore_pyqtSignal_TypeObject; } // Create a new signal instance. qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal) { // Assume any error is fatal. if (fatal) *fatal = true; // See if we have two variants of the signature, ie. one with namespaces // stripped that we can use with connect() and another that we can parse. const char *full_sig = strchr(signature, '|'); Chimera::Signature *parsed_signature = Chimera::parse( (full_sig ? full_sig + 1 : signature), "a signal argument"); // At first glance the parse should never fail because the signature // originates from the .sip file. However it might if it includes a type // that has been forward declared, but not yet defined. The only example // in PyQt is the declaration of QWidget by QSignalMapper. Therefore we // assume the error isn't fatal. if (!parsed_signature) { if (fatal) *fatal = false; return 0; } if (full_sig) // Use the variant with namespaces stripped. parsed_signature->signature = QByteArray(signature, full_sig - signature); parsed_signature->signature.prepend('2'); // Create and initialise the signal. qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)PyType_GenericNew( qpycore_pyqtSignal_TypeObject, 0, 0); if (!ps) { delete parsed_signature; return 0; } ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = 0; ps->revision = 0; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return ps; } // Find an overload that matches a subscript. qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context) { // Make sure the subscript is a tuple. PyObject *args; if (PyTuple_Check(subscript)) { args = subscript; } else { args = PyTuple_New(1); if (!args) return 0; PyTuple_SetItem(args, 0, subscript); } Py_INCREF(subscript); // Parse the subscript as a tuple of types. Chimera::Signature *ss_signature = Chimera::parse(args, 0, context); Py_DECREF(args); if (!ss_signature) return 0; // Search for an overload with this signature. qpycore_pyqtSignal *overload = ps->default_signal; do { if (overload->parsed_signature->arguments() == ss_signature->signature) break; overload = overload->next; } while (overload); delete ss_signature; if (!overload) PyErr_SetString(PyExc_KeyError, "there is no matching overloaded signal"); return overload; } // Initialise a signal when given a tuple of types. static int init_signal_from_types(qpycore_pyqtSignal *ps, const char *name, const QList *parameter_names, int revision, PyObject *types) { Chimera::Signature *parsed_signature = Chimera::parse(types, name, "a pyqtSignal() type argument"); if (!parsed_signature) return -1; if (name) parsed_signature->signature.prepend('2'); ps->default_signal = ps; ps->next = 0; ps->docstring = 0; ps->parameter_names = parameter_names; ps->revision = revision; ps->parsed_signature = parsed_signature; ps->emitter = 0; ps->non_signals = 0; return 0; } // Append an overload to the default signal's list. static void append_overload(qpycore_pyqtSignal *ps) { // Append to the list of overloads. qpycore_pyqtSignal **tailp = &ps->default_signal->next; while (*tailp) tailp = &(*tailp)->next; *tailp = ps; } // Give a signal a name if it hasn't already got one. void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name) { ps = ps->default_signal; // If the signature already has a name then they all have and there is // nothing more to do. if (!ps->parsed_signature->signature.startsWith('(')) return; do { QByteArray &sig = ps->parsed_signature->signature; sig.prepend(name); sig.prepend('2'); QByteArray &py_sig = ps->parsed_signature->py_signature; py_sig.prepend(name); py_sig.prepend('.'); py_sig.prepend(type_name); ps = ps->next; } while (ps); } // Handle the getting of a lazy attribute, ie. a native Qt signal. int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict) { const pyqt6ClassPluginDef *plugin = reinterpret_cast(sipTypePluginData(td)); // Handle the trvial cases. if (!plugin) return 0; const pyqt6QtSignal *sigs = plugin->qt_signals; if (!sigs) return 0; QByteArray default_name; qpycore_pyqtSignal *default_signal = 0; do { // See if we have come to the end of the current signal. if (default_signal && !is_signal_name(sigs->signature, default_name)) { if (PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal) < 0) return -1; default_signal = 0; } bool fatal; qpycore_pyqtSignal *sig = qpycore_pyqtSignal_New(sigs->signature, &fatal); if (!sig) { if (fatal) return -1; PyErr_Clear(); continue; } sig->docstring = sigs->docstring; sig->emitter = sigs->emitter; // See if this is a new default. if (default_signal) { sig->default_signal = default_signal; append_overload(sig); } else { sig->non_signals = sigs->non_signals; default_signal = sig->default_signal = sig; default_name = sigs->signature; default_name.truncate(default_name.indexOf('(')); } } while ((++sigs)->signature); // Save the last one, if any (in case of a non-fatal error). if (!default_signal) return 0; return PyDict_SetItemString(dict, default_name.constData(), (PyObject *)default_signal); } // Return true if a signal signatures has a particular name. static bool is_signal_name(const char *sig, const QByteArray &name) { return (qstrncmp(sig, name.constData(), name.size()) == 0 && sig[name.size()] == '('); } // Call a signal's overloaded method (if there is one). PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw) { if (!ps->non_signals) { PyErr_SetString(PyExc_TypeError, "native Qt signal is not callable"); return 0; } PyObject *func = PyCFunction_New(ps->non_signals, bound); if (!func) return 0; PyObject *result = PyObject_Call(func, args, kw); Py_DECREF(func); return result; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1345096 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtsignal.h0000644000076500000240000000475114532160372017514 0ustar00philstaff// This defines the interfaces for the pyqtSignal type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSIGNAL_H #define _QPYCORE_PYQTSIGNAL_H #include #include #include #include #include "qpycore_chimera.h" extern "C" { // This defines the structure of a PyQt signal. typedef struct _qpycore_pyqtSignal { PyObject_HEAD // The default signal. This is the head of the linked list of overloads // and holds references to rest of the list elements. struct _qpycore_pyqtSignal *default_signal; // The next overload in the list. struct _qpycore_pyqtSignal *next; // The docstring. const char *docstring; // The optional parameter names. const QList *parameter_names; // The revision. int revision; // The parsed signature, not set if there is an emitter. Chimera::Signature *parsed_signature; // An optional emitter. pyqt6EmitFunc emitter; // The non-signal overloads (if any). This is only set for the default. PyMethodDef *non_signals; } qpycore_pyqtSignal; int qpycore_get_lazy_attr(const sipTypeDef *td, PyObject *dict); } // The type object. extern PyTypeObject *qpycore_pyqtSignal_TypeObject; bool qpycore_pyqtSignal_init_type(); qpycore_pyqtSignal *qpycore_pyqtSignal_New(const char *signature, bool *fatal = 0); qpycore_pyqtSignal *qpycore_find_signal(qpycore_pyqtSignal *ps, PyObject *subscript, const char *context); void qpycore_set_signal_name(qpycore_pyqtSignal *ps, const char *type_name, const char *name); PyObject *qpycore_call_signal_overload(qpycore_pyqtSignal *ps, PyObject *bound, PyObject *args, PyObject *kw); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1194746 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtslot.cpp0000644000076500000240000002161614532160372017552 0ustar00philstaff// This contains the implementation of the PyQtSlot class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_chimera.h" #include "qpycore_pyqtslot.h" // Create the slot for a callable. PyQtSlot::PyQtSlot(PyObject *callable, bool callable_is_method, const Chimera::Signature *slot_signature) : mfunc(0), mself(0), mself_wr(0), other(0), signature(slot_signature) { if (callable_is_method) { mfunc = callable; } else { sipMethodDef callable_m; if (sipGetMethod(callable, &callable_m)) { // Save the component parts. mfunc = callable_m.pm_function; mself = callable_m.pm_self; // Try and create a weak reference to the instance object. mself_wr = PyWeakref_NewRef(mself, 0); } else { // Give the slot an extra reference to keep it alive. Py_INCREF(callable); other = callable; } } // If the slot is a method then keep the function object alive. Py_XINCREF(mfunc); } // Destroy the slot. PyQtSlot::~PyQtSlot() { Py_XDECREF(mfunc); Py_XDECREF(mself_wr); Py_XDECREF(other); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, bool no_receiver_check) const { return invoke(qargs, 0, 0, no_receiver_check); } // Invoke the slot on behalf of C++. bool PyQtSlot::invoke(void **qargs, PyObject *self, void *result) const { return (invoke(qargs, self, result, false) != PyQtSlot::Failed); } // Invoke the slot on behalf of C++. PyQtSlot::Result PyQtSlot::invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const { // Get the callable. PyObject *callable; if (other) { callable = other; Py_INCREF(callable); } else { // Use the value we have if one wasn't supplied. if (!self) self = instance(); // If self is NULL then we didn't have a method in the first place. // Instead we had a callable that has been cleared during garbage // collection - so we can simply ignore the invocation. if (!self) return PyQtSlot::Ignored; // See if the instance has gone (which isn't an error). if (self == Py_None) return PyQtSlot::Ignored; // If the receiver wraps a C++ object then ignore the call if it no // longer exists. if (!no_receiver_check && PyObject_TypeCheck(self, sipSimpleWrapper_Type) && !sipGetAddress((sipSimpleWrapper *)self)) return PyQtSlot::Ignored; sipMethodDef callable_m; callable_m.pm_function = mfunc; callable_m.pm_self = self; callable = sipFromMethod(&callable_m); } // Convert the C++ arguments to Python objects. const QList &args = signature->parsed_arguments; PyObject *argtup = PyTuple_New(args.size()); if (!argtup) return PyQtSlot::Failed; QList::const_iterator it = args.constBegin(); for (int a = 0; it != args.constEnd(); ++a) { PyObject *arg = (*it)->toPyObject(*++qargs); if (!arg) { Py_DECREF(argtup); return PyQtSlot::Failed; } PyTuple_SetItem(argtup, a, arg); ++it; } // Dispatch to the real slot. PyObject *res = call(callable, argtup); Py_DECREF(argtup); Py_DECREF(callable); if (!res) return PyQtSlot::Failed; // Handle any result if required. bool ok; if (result && signature->result) ok = signature->result->fromPyObject(res, result); else ok = true; Py_DECREF(res); return (ok ? PyQtSlot::Succeeded : PyQtSlot::Failed); } // See if this slot corresponds to the given callable. bool PyQtSlot::operator==(PyObject *callable) const { sipMethodDef callable_m; if (sipGetMethod(callable, &callable_m)) { if (other) return false; return (mfunc == callable_m.pm_function && instance() == callable_m.pm_self); } if (!other) return false; // See if it is a wrapped C++ method. Note that the PyQt4 behaviour is to // not save a reference but to save the components (as we do with methods). // Hopefully it won't make a difference. However it begs the question as // to whether we should do the same with methods and rely on the garbage // collector - is the current way of handling methods purely historical? sipCFunctionDef other_cf, callable_cf; if (sipGetCFunction(other, &other_cf) && sipGetCFunction(callable, &callable_cf)) return (other_cf.cf_self == callable_cf.cf_self && other_cf.cf_function->ml_meth == callable_cf.cf_function->ml_meth); return (other == callable); } // Get the instance object. PyObject *PyQtSlot::instance() const { // Use the weak reference if possible. if (mself_wr) return PyWeakref_GetObject(mself_wr); return mself; } // Call a single slot and return the result. PyObject *PyQtSlot::call(PyObject *callable, PyObject *args) const { PyObject *sa, *oxtype, *oxvalue, *oxtb; // Keep some compilers quiet. oxtype = oxvalue = oxtb = 0; // We make repeated attempts to call a slot. If we work out that it failed // because of an immediate type error we try again with one less argument. // We keep going until we run out of arguments to drop. This emulates the // Qt ability of the slot to accept fewer arguments than a signal provides. sa = args; Py_INCREF(sa); for (;;) { PyObject *nsa, *xtype, *xvalue, *xtb, *res; if ((res = PyObject_Call(callable, sa, NULL)) != NULL) { // Remove any previous exception. if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); PyErr_Clear(); } Py_DECREF(sa); return res; } // Get the exception. PyErr_Fetch(&xtype, &xvalue, &xtb); // See if it is unacceptable. An acceptable failure is a type error // with no traceback - so long as we can still reduce the number of // arguments and try again. if (!PyErr_GivenExceptionMatches(xtype, PyExc_TypeError) || xtb || PyTuple_Size(sa) == 0) { // If there is a traceback then we must have called the slot and // the exception was later on - so report the exception as is. if (xtb) { if (sa != args) { Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); } PyErr_Restore(xtype,xvalue,xtb); } else if (sa == args) { PyErr_Restore(xtype, xvalue, xtb); } else { // Discard the latest exception and restore the original one. Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); PyErr_Restore(oxtype, oxvalue, oxtb); } break; } // If this is the first attempt, save the exception. if (sa == args) { oxtype = xtype; oxvalue = xvalue; oxtb = xtb; } else { Py_XDECREF(xtype); Py_XDECREF(xvalue); Py_XDECREF(xtb); } // Create the new argument tuple. if ((nsa = PyTuple_GetSlice(sa, 0, PyTuple_Size(sa) - 1)) == NULL) { // Tidy up. Py_XDECREF(oxtype); Py_XDECREF(oxvalue); Py_XDECREF(oxtb); break; } Py_DECREF(sa); sa = nsa; } Py_DECREF(sa); return 0; } // Clear the slot if it has an extra reference. void PyQtSlot::clearOther() { Py_CLEAR(other); } // Visit the slot if it has an extra reference. int PyQtSlot::visitOther(visitproc visit, void *arg) { Py_VISIT(other); return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1570897 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtslot.h0000644000076500000240000000435414532160372017217 0ustar00philstaff// This defines the definition of the PyQtSlot class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOT_H #define _QPYCORE_PYQTSLOT_H #include #include "qpycore_chimera.h" class PyQtSlot { public: enum Result { Succeeded, // The invocation was successful. Failed, // The invocation failed. Ignored // The invocation was ignored because the receiver has gone. }; PyQtSlot(PyObject *callable, bool callable_is_method, const Chimera::Signature *slot_signature); ~PyQtSlot(); PyQtSlot::Result invoke(void **qargs, bool no_receiver_check) const; bool invoke(void **qargs, PyObject *self, void *result) const; const Chimera::Signature *slotSignature() const {return signature;} void clearOther(); int visitOther(visitproc visit, void *arg); bool operator==(PyObject *callable) const; private: PyQtSlot::Result invoke(void **qargs, PyObject *self, void *result, bool no_receiver_check) const; PyObject *call(PyObject *callable, PyObject *args) const; PyObject *instance() const; PyObject *mfunc; PyObject *mself; PyObject *mself_wr; PyObject *other; const Chimera::Signature *signature; // By forcing the use of pointers we don't need to worry about managing the // reference counts of the component Python objects. PyQtSlot(const PyQtSlot &); PyQtSlot &operator=(const PyQtSlot &); }; #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.147714 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtslotproxy.cpp0000644000076500000240000002516014532160372020652 0ustar00philstaff// This contains the implementation of the PyQtSlotProxy class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_pyqtslot.h" #include "qpycore_pyqtslotproxy.h" #include "sipAPIQtCore.h" // Proxy flags. #define PROXY_SINGLE_SHOT 0x01 // The slot will only be called once. #define PROXY_SLOT_INVOKED 0x02 // The proxied slot is executing. #define PROXY_SLOT_DISABLED 0x04 // The proxy deleteLater() has been called // or should be called after the slot has // finished executing. #define PROXY_NO_RCVR_CHECK 0x08 // The existence of the receiver C++ object // should not be checked. // The last QObject sender. QObject *PyQtSlotProxy::last_sender = 0; // Create a universal proxy used as a slot. Note that this will leak if there // is no transmitter and this is not a single shot slot. There will be no // meta-object if there was a problem creating the proxy. This is called // without the GIL. PyQtSlotProxy::PyQtSlotProxy(PyObject *slot, QObject *q_tx, const Chimera::Signature *slot_signature, bool single_shot) : QObject(), proxy_flags(single_shot ? PROXY_SINGLE_SHOT : 0), signature(slot_signature->signature), transmitter(q_tx) { SIP_BLOCK_THREADS real_slot = new PyQtSlot(slot, false, slot_signature); SIP_UNBLOCK_THREADS // Create a new meta-object on the heap so that it looks like it has a slot // of the right name and signature. QMetaObjectBuilder builder; builder.setClassName("PyQtSlotProxy"); builder.setSuperClass(&QObject::staticMetaObject); builder.addSlot("unislot()"); builder.addSlot("disable()"); meta_object = builder.toMetaObject(); // Detect when any transmitter is destroyed. (Note that we used to do this // by making the proxy a child of the transmitter. This doesn't work as // expected because QWidget destroys its children before emitting the // destroyed signal.) We use a queued connection in case the proxy is also // connected to the same signal and we want to make sure it has a chance to // invoke the slot before being destroyed. if (transmitter) { // Add this one to the global hash. mutex->lock(); proxy_slots.insert(transmitter, this); mutex->unlock(); connect(transmitter, SIGNAL(destroyed(QObject *)), SLOT(disable()), Qt::QueuedConnection); } } // Destroy a universal proxy. This is called without the GIL. PyQtSlotProxy::~PyQtSlotProxy() { Q_ASSERT((proxy_flags & PROXY_SLOT_INVOKED) == 0); if (transmitter) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if (it.value() == this) it = proxy_slots.erase(it); else ++it; } mutex->unlock(); } // Qt can still be tidying up after Python has gone so make sure that it // hasn't. if (Py_IsInitialized()) { SIP_BLOCK_THREADS delete real_slot; SIP_UNBLOCK_THREADS } if (meta_object) { free(const_cast(meta_object)); } } // The static members of PyQtSlotProxy. const QByteArray PyQtSlotProxy::proxy_slot_signature(SLOT(unislot())); QRecursiveMutex *PyQtSlotProxy::mutex; PyQtSlotProxy::ProxyHash PyQtSlotProxy::proxy_slots; const QMetaObject *PyQtSlotProxy::metaObject() const { return meta_object; } void *PyQtSlotProxy::qt_metacast(const char *_clname) { if (!_clname) return 0; if (qstrcmp(_clname, "PyQtSlotProxy") == 0) return static_cast(const_cast(this)); return QObject::qt_metacast(_clname); } int PyQtSlotProxy::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: unislot(_a); break; case 1: disable(); break; } _id -= 2; } return _id; } // This is the universal slot itself that dispatches to the real slot. void PyQtSlotProxy::unislot(void **qargs) { // If we are marked as disabled (possible if a queued signal has been // disconnected but there is still a signal in the event queue) then just // ignore the call. if (proxy_flags & PROXY_SLOT_DISABLED) return; // sender() must be called without the GIL to avoid possible deadlocks // between the GIL and Qt's internal thread data mutex. QObject *new_last_sender = sender(); SIP_BLOCK_THREADS QObject *saved_last_sender = last_sender; last_sender = new_last_sender; proxy_flags |= PROXY_SLOT_INVOKED; switch (real_slot->invoke(qargs, (proxy_flags & PROXY_NO_RCVR_CHECK))) { case PyQtSlot::Succeeded: break; case PyQtSlot::Failed: pyqt6_err_print(); break; case PyQtSlot::Ignored: proxy_flags |= PROXY_SLOT_DISABLED; break; } proxy_flags &= ~PROXY_SLOT_INVOKED; // Self destruct if we are a single shot or disabled. if (proxy_flags & (PROXY_SINGLE_SHOT|PROXY_SLOT_DISABLED)) { // See the comment in disable() for why we deleteLater(). deleteLater(); } last_sender = saved_last_sender; SIP_UNBLOCK_THREADS } // Disable the slot by destroying it if possible, or delaying its destruction // until the proxied slot returns. void PyQtSlotProxy::disable() { proxy_flags |= PROXY_SLOT_DISABLED; // Delete it if the slot isn't currently executing, otherwise it will be // done after the slot returns. Note that we don't rely on deleteLater() // providing the necessary delay because the slot could process the event // loop and the proxy would be deleted too soon. if ((proxy_flags & PROXY_SLOT_INVOKED) == 0) { // Despite what the Qt documentation suggests, if there are outstanding // queued signals then we may crash so we always delete later when the // event queue will have been flushed. deleteLater(); } } // Find a slot proxy connected to a transmitter. PyQtSlotProxy *PyQtSlotProxy::findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot) { PyQtSlotProxy *proxy = 0; mutex->lock(); ProxyHash::const_iterator it(proxy_slots.find(transmitter)); ProxyHash::const_iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (!(sp->proxy_flags & PROXY_SLOT_DISABLED) && sp->signature == signal_signature && *(sp->real_slot) == slot) { proxy = sp; break; } ++it; } mutex->unlock(); return proxy; } // Delete any slot proxy for a particular connection. void PyQtSlotProxy::deleteSlotProxy(const QMetaObject::Connection *connection) { mutex->lock(); ProxyHash::iterator it(proxy_slots.begin()); ProxyHash::iterator end(proxy_slots.end()); while (it != end) { PyQtSlotProxy *sp = it.value(); if (sp->connection == *connection) { proxy_slots.erase(it); sp->disable(); break; } ++it; } mutex->unlock(); } // Delete any slot proxies for a particular transmitter and optional signal // signature. void PyQtSlotProxy::deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature) { mutex->lock(); ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { PyQtSlotProxy *sp = it.value(); if (signal_signature.isEmpty() || signal_signature == sp->signature) { it = proxy_slots.erase(it); sp->disable(); } else { ++it; } } mutex->unlock(); } // Clear the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::clearSlotProxies(const QObject *transmitter) { ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { it.value()->real_slot->clearOther(); ++it; } return 0; } // A thing wrapper available to the generated code. int qpycore_clearSlotProxies(const QObject *transmitter) { return PyQtSlotProxy::clearSlotProxies(transmitter); } // Visit the extra references of any slots connected to a transmitter. This is // called with the GIL. int PyQtSlotProxy::visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { int vret = 0; ProxyHash::iterator it(proxy_slots.find(transmitter)); ProxyHash::iterator end(proxy_slots.end()); while (it != end && it.key() == transmitter) { if ((vret = it.value()->real_slot->visitOther(visit, arg)) != 0) break; ++it; } return vret; } // A thing wrapper available to the generated code. int qpycore_visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg) { return PyQtSlotProxy::visitSlotProxies(transmitter, visit, arg); } // Get the last sender. QObject *PyQtSlotProxy::lastSender() { return last_sender; } // Disable the check that the receiver C++ object exists before invoking a // slot. void PyQtSlotProxy::disableReceiverCheck() { proxy_flags |= PROXY_NO_RCVR_CHECK; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1386592 PyQt6-6.6.1/qpy/QtCore/qpycore_pyqtslotproxy.h0000644000076500000240000000674014532160372020322 0ustar00philstaff// This contains the definition of the PyQtSlotProxy class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_PYQTSLOTPROXY_H #define _QPYCORE_PYQTSLOTPROXY_H #include #include #include #include #include #include "qpycore_namespace.h" #include "qpycore_chimera.h" QT_BEGIN_NAMESPACE class QRecursiveMutex; QT_END_NAMESPACE class PyQtSlot; // This class is implements a slot on behalf of Python callables. It is // derived from QObject but is not run through moc. Instead the normal // moc-generated methods are handwritten in order to implement a universal // slot. This requires some knowledge of the internal structure of QObject but // it is likely that they will only change between major Qt versions. class PyQtSlotProxy : public QObject { public: PyQtSlotProxy(PyObject *slot, QObject *transmitter, const Chimera::Signature *slot_signature, bool single_shot); ~PyQtSlotProxy(); static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); void unislot(void **qargs); void disable(); static void deleteSlotProxy(const QMetaObject::Connection *connection); static void deleteSlotProxies(const QObject *transmitter, const QByteArray &signal_signature); static PyQtSlotProxy *findSlotProxy(const QObject *transmitter, const QByteArray &signal_signature, PyObject *slot); void disableReceiverCheck(); static int clearSlotProxies(const QObject *transmitter); static int visitSlotProxies(const QObject *transmitter, visitproc visit, void *arg); static QObject *lastSender(); // The signature of the slot that receives connections. static const QByteArray proxy_slot_signature; // The mutex around the proxies hash. static QRecursiveMutex *mutex; // The connection to the proxy. QMetaObject::Connection connection; private: // The last QObject sender. static QObject *last_sender; // The type of a proxy hash. typedef QMultiHash ProxyHash; // The hash of proxies. static ProxyHash proxy_slots; // The proxy flags. int proxy_flags; // The normalised signature. QByteArray signature; // The QObject transmitter the proxy will be connected to (if any). const QObject *transmitter; // The slot we are proxying for. PyQtSlot *real_slot; // The meta-object. const QMetaObject *meta_object; PyQtSlotProxy(const PyQtSlotProxy &); PyQtSlotProxy &operator=(const PyQtSlotProxy &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1600273 PyQt6-6.6.1/qpy/QtCore/qpycore_qjsonvalue.cpp0000644000076500000240000001042714532160372020040 0ustar00philstaff// This is the support for QJsonValue. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // See if a Python object can be converted to a QJsonValue. int qpycore_canConvertTo_QJsonValue(PyObject *py) { // Note that the API doesn't provide a test for constrained named enums. if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) return 1; // We must check for QJsonValue before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonValue, SIP_NO_CONVERTORS)) return 1; return sipCanConvertToType(py, sipType_QJsonArray, 0); } // Convert a Python object to a QJsonValue. int qpycore_convertTo_QJsonValue(PyObject *py, PyObject *transferObj, QJsonValue **cpp, int *isErr) { if (py == Py_None) { *cpp = new QJsonValue(); return sipGetState(transferObj); } if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJsonValue_Type))) { int v = sipConvertToEnum(py, sipType_QJsonValue_Type); if (PyErr_Occurred()) { *isErr = 1; return 0; } *cpp = new QJsonValue(static_cast(v)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJsonValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJsonValue((qint64)PyLong_AsLong(py)); return sipGetState(transferObj); } if (PyFloat_Check(py)) { *cpp = new QJsonValue((double)PyFloat_AsDouble(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *q = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) return 0; *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QString, state); return sipGetState(transferObj); } // We must check for QJsonObject before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonObject, 0)) { int state; QJsonObject *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonObject, 0, 0, &state, isErr)); if (*isErr) return 0; *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonObject, state); return sipGetState(transferObj); } // We must check for QJsonValue before QJsonArray. if (sipCanConvertToType(py, sipType_QJsonValue, SIP_NO_CONVERTORS)) { *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJsonValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } // Now it is safe to convert to QJsonArray. { int state; QJsonArray *q = reinterpret_cast(sipConvertToType(py, sipType_QJsonArray, 0, 0, &state, isErr)); if (*isErr) return 0; *cpp = new QJsonValue(*q); sipReleaseType(q, sipType_QJsonArray, state); return sipGetState(transferObj); } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1555014 PyQt6-6.6.1/qpy/QtCore/qpycore_qmessagelogger.cpp0000644000076500000240000000571014532160372020655 0ustar00philstaff// This is the support for QMessageLogger. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // Return the current Python context. This should be called with the GIL. int qpycore_current_context(const char **file, const char **function) { static PyObject *currentframe = 0; static PyObject *getframeinfo = 0; static PyObject *saved_file = 0; static PyObject *saved_function = 0; PyObject *frame, *info, *file_obj, *linenr_obj, *function_obj; int linenr; frame = info = NULL; // Make sure we have what we need from the inspect module. if (!currentframe || !getframeinfo) { PyObject *inspect = PyImport_ImportModule("inspect"); if (inspect) { if (!currentframe) currentframe = PyObject_GetAttrString(inspect, "currentframe"); if (!getframeinfo) getframeinfo = PyObject_GetAttrString(inspect, "getframeinfo"); Py_DECREF(inspect); } if (!currentframe || !getframeinfo) goto py_error; } // Get the current frame. if ((frame = PyObject_CallFunctionObjArgs(currentframe, NULL)) == NULL) goto py_error; // Get the frame details. if ((info = PyObject_CallFunctionObjArgs(getframeinfo, frame, NULL)) == NULL) goto py_error;; if ((file_obj = PyTuple_GetItem(info, 0)) == NULL) goto py_error; if ((linenr_obj = PyTuple_GetItem(info, 1)) == NULL) goto py_error; if ((function_obj = PyTuple_GetItem(info, 2)) == NULL) goto py_error; Py_XDECREF(saved_file); saved_file = PyUnicode_AsEncodedString(file_obj, "latin_1", "ignore"); *file = PyBytes_AsString(saved_file); // Ignore any overflow exception. linenr = sipLong_AsInt(linenr_obj); Py_XDECREF(saved_function); saved_function = PyUnicode_AsEncodedString(function_obj, "latin_1", "ignore"); *function = PyBytes_AsString(saved_function); Py_DECREF(info); Py_DECREF(frame); return linenr; py_error: Py_XDECREF(info); Py_XDECREF(frame); pyqt6_err_print(); *file = *function = ""; return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1296234 PyQt6-6.6.1/qpy/QtCore/qpycore_qmetaobject.cpp0000644000076500000240000001031014532160372020136 0ustar00philstaff// This is the support code for QMetaObject. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data); extern "C" {static void ArgumentStorage_delete(PyObject *cap);} // Return a wrapped QGenericArgument for the given type and Python object. PyObject *qpycore_ArgumentFactory(PyObject *type, PyObject *data) { PyObject *as_obj = ArgumentStorage_New(type, data); if (!as_obj) { Chimera::raiseParseException(type, "a Q_ARG()"); return 0; } Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); QGenericArgument *arg = new QGenericArgument( st->type()->name().constData(), st->address()); PyObject *ga_obj = sipConvertFromNewType(arg, sipType_QGenericArgument, 0); if (ga_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. sipSetUserObject((sipSimpleWrapper *)ga_obj, as_obj); } else { delete arg; Py_DECREF(as_obj); } return ga_obj; } // Return a wrapped QGenericReturnArgument for the given type. PyObject *qpycore_ReturnFactory(PyObject *type) { PyObject *as_obj = ArgumentStorage_New(type, 0); if (!as_obj) { Chimera::raiseParseException(type, "a Q_RETURN_ARG()"); return 0; } Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); QGenericReturnArgument *arg = new QGenericReturnArgument( st->type()->name().constData(), st->address()); PyObject *gra_obj = sipConvertFromNewType(arg, sipType_QGenericReturnArgument, 0); if (gra_obj) { // Stash the storage in the user field so that everything will be // properly garbage collected. sipSetUserObject((sipSimpleWrapper *)gra_obj, as_obj); } else { delete arg; Py_DECREF(as_obj); } return gra_obj; } // Return the Python result from a QGenericReturnArgument. PyObject *qpycore_ReturnValue(PyObject *gra_obj) { PyObject *as_obj = sipGetUserObject((sipSimpleWrapper *)gra_obj); Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(as_obj, NULL)); return st->toPyObject(); } // The PyCapsule destructor for the ArgumentStorage type. static void ArgumentStorage_delete(PyObject *cap) { Chimera::Storage *st = reinterpret_cast( PyCapsule_GetPointer(cap, NULL)); const Chimera *ct = st->type(); delete st; delete ct; } // Returns a Python object wrapping an ArgumentStorage instance. static PyObject *ArgumentStorage_New(PyObject *type, PyObject *data) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; Chimera::Storage *st; if (data) st = ct->fromPyObjectToStorage(data); else st = ct->storageFactory(); if (!st) { delete ct; return 0; } // Convert to a Python object. PyObject *as_obj = PyCapsule_New(st, NULL, ArgumentStorage_delete); if (!as_obj) { delete st; delete ct; } return as_obj; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.149277 PyQt6-6.6.1/qpy/QtCore/qpycore_qmetaobject_helpers.cpp0000644000076500000240000001073114532160372021667 0ustar00philstaff// This implements the helpers for QMetaObject. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_public_api.h" #include "sipAPIQtCore.h" // Forward declarations. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args); void qpycore_qmetaobject_connectslotsbyname(QObject *qobj, PyObject *qobj_wrapper) { // Get the class attributes. PyObject *dir = PyObject_Dir((PyObject *)Py_TYPE(qobj_wrapper)); if (!dir) return; PyObject *slot_obj = 0; for (Py_ssize_t li = 0; li < PyList_Size(dir); ++li) { PyObject *name_obj = PyList_GetItem(dir, li); // Get the slot object. Py_XDECREF(slot_obj); slot_obj = PyObject_GetAttr(qobj_wrapper, name_obj); if (!slot_obj) continue; // Ignore it if it is not a callable. if (!PyCallable_Check(slot_obj)) continue; // Use the signature attribute instead of the name if there is one. PyObject *sigattr = PyObject_GetAttr(slot_obj, qpycore_dunder_pyqtsignature); if (sigattr) { for (Py_ssize_t i = 0; i < PyList_Size(sigattr); ++i) { PyObject *decoration = PyList_GetItem(sigattr, i); Chimera::Signature *sig = Chimera::Signature::fromPyObject(decoration); QByteArray args = sig->arguments(); if (!args.isEmpty()) connect(qobj, slot_obj, sig->name(), args); } Py_DECREF(sigattr); } else { QByteArray name = qpycore_convert_ASCII(name_obj); if (name.isNull()) continue; PyErr_Clear(); connect(qobj, slot_obj, name, QByteArray()); } } Py_XDECREF(slot_obj); Py_DECREF(dir); } // Connect up a particular slot name, with optional arguments. static void connect(QObject *qobj, PyObject *slot_obj, const QByteArray &slot_nm, const QByteArray &args) { // Ignore if it's not an autoconnect slot. if (!slot_nm.startsWith("on_")) return; // Extract the names of the emitting object and the signal. int i; i = slot_nm.lastIndexOf('_'); if (i - 3 < 1 || i + 1 >= slot_nm.size()) return; QByteArray ename = slot_nm.mid(3, i - 3); QByteArray sname = slot_nm.mid(i + 1); // Find the emitting object and get its meta-object. QObject *eobj = qobj->findChild(ename); if (!eobj) return; const QMetaObject *mo = eobj->metaObject(); // Got through the methods looking for a matching signal. for (int m = 0; m < mo->methodCount(); ++m) { QMetaMethod mm = mo->method(m); if (mm.methodType() != QMetaMethod::Signal) continue; QByteArray sig(mm.methodSignature()); if (Chimera::Signature::name(sig) != sname) continue; // If we have slot arguments then they must match as well. if (!args.isEmpty() && Chimera::Signature::arguments(sig) != args) continue; QObject *receiver; QByteArray slot_sig; if (pyqt6_get_connection_parts(slot_obj, eobj, sig.constData(), false, &receiver, slot_sig) != sipErrorNone) continue; // Add the type character. sig.prepend('2'); // Connect the signal. QObject::connect(eobj, sig.constData(), receiver, slot_sig.constData()); } } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1308947 PyQt6-6.6.1/qpy/QtCore/qpycore_qmetaobjectbuilder.h0000644000076500000240000000666114532160372021170 0ustar00philstaff// This defines the subset of the interface to Qt5's internal // QMetaObjectBuilder class. The internal representation of a QMetaObject // changed in Qt5 (specifically revision 7) sufficiently to justify using this // internal code. The alternative would be to reverse engineer other internal // data structures which would be even more fragile. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QMETAOBJECTBUILDER_H #define _QPYCORE_QMETAOBJECTBUILDER_H #include #include #include QT_BEGIN_NAMESPACE class QMetaEnumBuilder; class QMetaMethodBuilder; class QMetaPropertyBuilder; class Q_CORE_EXPORT QMetaObjectBuilder { public: QMetaObjectBuilder(); virtual ~QMetaObjectBuilder(); void setClassName(const QByteArray &name); void setSuperClass(const QMetaObject *meta); QMetaMethodBuilder addSlot(const QByteArray &signature); QMetaMethodBuilder addSignal(const QByteArray &signature); QMetaPropertyBuilder addProperty(const QByteArray &name, const QByteArray &type, int notifierId=-1); QMetaEnumBuilder addEnumerator(const QByteArray &name); int addClassInfo(const QByteArray &name, const QByteArray &value); int addRelatedMetaObject(const QMetaObject *meta); int indexOfSignal(const QByteArray &signature); QMetaObject *toMetaObject() const; private: Q_DISABLE_COPY(QMetaObjectBuilder) void *d; }; class Q_CORE_EXPORT QMetaMethodBuilder { public: QMetaMethodBuilder() : _mobj(0), _index(0) {} void setReturnType(const QByteArray &type); void setParameterNames(const QList ¶meter_names); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaPropertyBuilder { public: QMetaPropertyBuilder() : _mobj(0), _index(0) {} void setReadable(bool value); void setWritable(bool value); void setResettable(bool value); void setDesignable(bool value); void setScriptable(bool value); void setStored(bool value); void setUser(bool value); void setStdCppSet(bool value); void setEnumOrFlag(bool value); void setConstant(bool value); void setFinal(bool value); void setAlias(bool value); void setBindable(bool value); void setRevision(int revision); private: const QMetaObjectBuilder *_mobj; int _index; }; class Q_CORE_EXPORT QMetaEnumBuilder { public: QMetaEnumBuilder() : _mobj(0), _index(0) {} void setIsFlag(bool value); void setIsScoped(bool value); int addKey(const QByteArray &name, int value); private: const QMetaObjectBuilder *_mobj; int _index; }; QT_END_NAMESPACE #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1394181 PyQt6-6.6.1/qpy/QtCore/qpycore_qobject_getattr.cpp0000644000076500000240000001026114532160372021026 0ustar00philstaff// This implements the helper for QObject.__getattr__(). // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtmethodproxy.h" #include "qpycore_pyqtsignal.h" // See if we can find an attribute in the Qt meta-type system. This is // primarily to support access to JavaScript (e.g. QQuickItem) so we don't // support overloads. PyObject *qpycore_qobject_getattr(const QObject *qobj, PyObject *py_qobj, const char *name) { const QMetaObject *mo = qobj->metaObject(); // Try and find a method with the name. QMetaMethod method; int method_index = -1; // Count down to allow overrides (assuming they are possible). for (int m = mo->methodCount() - 1; m >= 0; --m) { method = mo->method(m); if (method.methodType() == QMetaMethod::Constructor) continue; // Get the method name. QByteArray mname(method.methodSignature()); int idx = mname.indexOf('('); if (idx >= 0) mname.truncate(idx); if (mname == name) { method_index = m; break; } } if (method_index >= 0) { // Get the value to return. Note that this is recreated each time. We // could put a descriptor in the type dictionary to satisfy the request // in future but the typical use case is getting a value from a C++ // proxy (e.g. QDeclarativeItem) and we can't assume that what is being // proxied is the same each time. if (method.methodType() == QMetaMethod::Signal) { // We need to keep explicit references to the unbound signals // (because we don't use the type dictionary to do so) because they // own the parsed signature which may be needed by a PyQtSlotProxy // at some point. typedef QHash SignalHash; static SignalHash *sig_hash = 0; // For crappy compilers. if (!sig_hash) sig_hash = new SignalHash; PyObject *sig_obj; QByteArray sig_str = method.methodSignature(); SignalHash::const_iterator it = sig_hash->find(sig_str); if (it == sig_hash->end()) { sig_obj = (PyObject *)qpycore_pyqtSignal_New( sig_str.constData()); if (!sig_obj) return 0; sig_hash->insert(sig_str, sig_obj); } else { sig_obj = it.value(); } return qpycore_pyqtBoundSignal_New((qpycore_pyqtSignal *)sig_obj, py_qobj, const_cast(qobj)); } // Respect the 'private' nature of __ names. if (name[0] != '_' || name[1] != '_') { QByteArray py_name(sipPyTypeName(Py_TYPE(py_qobj))); py_name.append('.'); py_name.append(name); return qpycore_pyqtMethodProxy_New(const_cast(qobj), method_index, py_name); } } // Replicate the standard Python exception. PyErr_Format(PyExc_AttributeError, "'%s' object has no attribute '%s'", sipPyTypeName(Py_TYPE(py_qobj)), name); return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1374316 PyQt6-6.6.1/qpy/QtCore/qpycore_qobject_helpers.cpp0000644000076500000240000002075114532160372021023 0ustar00philstaff// This implements the helpers for QObject. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtboundsignal.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtpyobject.h" #include "qpycore_pyqtslot.h" #include "qpycore_qobject_helpers.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // Forward declarations. static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); // This is the helper for all implementations of QObject::metaObject(). const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base) { sipWrapperType *wt = (pySelf ? (sipWrapperType *)Py_TYPE(pySelf) : 0); return qpycore_get_qmetaobject(wt, base); } // This is the helper for all implementations of QObject::qt_metacall(). int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // Check if the Python object has gone. if (!pySelf) return -1; return qt_metacall_worker(pySelf, Py_TYPE(pySelf), base, _c, _id, _a); } // This does the real work for all implementations of QObject::qt_metacall(). static int qt_metacall_worker(sipSimpleWrapper *pySelf, PyTypeObject *pytype, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a) { // See if this is a wrapped C++ type rather than a Python sub-type. if (pytype == sipTypeAsPyTypeObject(base)) return _id; PyTypeObject *tp_base = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_base)); _id = qt_metacall_worker(pySelf, tp_base, base, _c, _id, _a); if (_id < 0) return _id; const qpycore_metaobject *qo = qpycore_get_dynamic_metaobject( (sipWrapperType *)pytype); bool ok = true; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < qo->nr_signals + qo->pslots.count()) { if (_id < qo->nr_signals) { QObject *qthis = reinterpret_cast(sipGetCppPtr(pySelf, sipType_QObject)); Py_BEGIN_ALLOW_THREADS QMetaObject::activate(qthis, qo->mo, _id, _a); Py_END_ALLOW_THREADS } else { PyQtSlot *slot = qo->pslots.at(_id - qo->nr_signals); ok = slot->invoke(_a, (PyObject *)pySelf, _a[0]); } } _id -= qo->nr_signals + qo->pslots.count(); } else if (_c == QMetaObject::ReadProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_get) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_get, const_cast("O"), pySelf); if (py) { ok = prop->pyqtprop_parsed_type->fromPyObject(py, _a[0]); Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::WriteProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_set) { PyObject *py = prop->pyqtprop_parsed_type->toPyObject(_a[0]); if (py) { PyObject *res = PyObject_CallFunction(prop->pyqtprop_set, const_cast("OO"), pySelf, py); if (res) Py_DECREF(res); else ok = false; Py_DECREF(py); } else { ok = false; } } } _id -= qo->pprops.count(); } else if (_c == QMetaObject::ResetProperty) { if (_id < qo->pprops.count()) { qpycore_pyqtProperty *prop = qo->pprops.at(_id); if (prop->pyqtprop_reset) { PyObject *py = PyObject_CallFunction(prop->pyqtprop_reset, const_cast("O"), pySelf); if (py) Py_DECREF(py); else ok = false; } } _id -= qo->pprops.count(); } // Handle any Python errors. if (!ok) { pyqt6_err_print(); return -1; } return _id; } // This is the helper for all implementations of QObject::qt_metacast(). bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **sipCpp) { *sipCpp = 0; if (!_clname) return false; // Check if the Python object has gone. if (!pySelf) return false; bool is_py_class = false; SIP_BLOCK_THREADS PyTypeObject *base_pytype = sipTypeAsPyTypeObject(base); // We only need to look at the MRO if the object is a wrapped type (rather // than a user sub-class). if (base_pytype != Py_TYPE(pySelf)) { PyObject *mro = PyObject_GetAttr((PyObject *)Py_TYPE(pySelf), qpycore_dunder_mro); Q_ASSERT(mro); for (Py_ssize_t i = 0; i < PyTuple_Size(mro); ++i) { PyTypeObject *pytype = (PyTypeObject *)PyTuple_GetItem(mro, i); const sipTypeDef *td = sipTypeFromPyTypeObject(pytype); if (!td || !qpycore_is_pyqt_type(td)) continue; if (qstrcmp(sipPyTypeName(pytype), _clname) == 0) { // The generated type definitions represent the C++ (rather // than Python) hierachy. If the C++ hierachy doesn't match // then the super-type must be provided by a mixin. Note that // we check the type in both "directions" as we may be either // "side" of the base type in the MRO. if (PyType_IsSubtype(pytype, base_pytype) || PyType_IsSubtype(base_pytype, pytype)) *sipCpp = sipGetAddress(pySelf); else *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } const pyqt6ClassPluginDef *plugin = reinterpret_cast(sipTypePluginData(td)); if (plugin && plugin->qt_interface && qstrcmp(plugin->qt_interface, _clname) == 0) { *sipCpp = sipGetMixinAddress(pySelf, td); is_py_class = true; break; } } Py_DECREF(mro); } SIP_UNBLOCK_THREADS return is_py_class; } // This is a helper for QObject.staticMetaObject %GetCode. PyObject *qpycore_qobject_staticmetaobject(PyObject *type_obj) { const QMetaObject *mo = qpycore_get_qmetaobject((sipWrapperType *)type_obj); if (!mo) { // We assume that this is a side effect of a wrapped class not being // fully ready until sip's meta-class's __init__() has run (rather than // after its __new__() method as might be expected). PyErr_SetString(PyExc_AttributeError, "staticMetaObject isn't available until the meta-class's __init__ returns"); return 0; } return sipConvertFromType(const_cast(mo), sipType_QMetaObject, 0); } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.160949 PyQt6-6.6.1/qpy/QtCore/qpycore_qobject_helpers.h0000644000076500000240000000260014532160372020461 0ustar00philstaff// This defines the interfaces of the helpers for QObject. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_QOBJECT_HELPERS_H #define _QPYCORE_QOBJECT_HELPERS_H #include #include #include "sipAPIQtCore.h" const QMetaObject *qpycore_qobject_metaobject(sipSimpleWrapper *pySelf, sipTypeDef *base); int qpycore_qobject_qt_metacall(sipSimpleWrapper *pySelf, sipTypeDef *base, QMetaObject::Call _c, int _id, void **_a); bool qpycore_qobject_qt_metacast(sipSimpleWrapper *pySelf, const sipTypeDef *base, const char *_clname, void **); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1208122 PyQt6-6.6.1/qpy/QtCore/qpycore_qstring.cpp0000644000076500000240000001012514532160372017333 0ustar00philstaff// This is the support for QString. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpycore_api.h" #include "sipAPIQtCore.h" // Convert a QString to a Python Unicode object. PyObject *qpycore_PyObject_FromQString(const QString &qstr) { PyObject *obj; int qt_len = qstr.length(); int kind; void *data; // We have to work out exactly which kind to use. We assume ASCII while we // are checking so that we only go through the string once in the most // common case. Note that we can't use PyUnicode_FromKindAndData() because // it doesn't handle surrogates in UCS2 strings. if ((obj = sipUnicodeNew(qt_len, 0x007f, &kind, &data)) == NULL) return NULL; const QChar *qch = qstr.constData(); for (int qt_i = 0; qt_i < qt_len; ++qt_i) { ushort uch = qch->unicode(); if (uch > 0x007f) { // This is useless. Py_DECREF(obj); // Work out what kind we really need and what the Python length // should be. uint maxchar = 0x00ff; int py_len = qt_len; while (qt_i < qt_len) { uch = qch->unicode(); if (uch > 0x00ff) { if (maxchar == 0x00ff) maxchar = 0x00ffff; // See if this is a surrogate pair. Note that we cannot // trust that the QString is terminated by a null QChar. if (qch->isHighSurrogate() && qt_i + 1 < qt_len && (qch + 1)->isLowSurrogate()) { maxchar = 0x10ffff; --py_len; ++qch; ++qt_i; } } ++qch; ++qt_i; } // Create the correctly sized object. if ((obj = sipUnicodeNew(py_len, maxchar, &kind, &data)) == NULL) return NULL; qch = qstr.constData(); int qt_i2 = 0; for (int py_i = 0; py_i < py_len; ++py_i) { uint py_ch; if (qch->isHighSurrogate() && qt_i2 + 1 < qt_len && (qch + 1)->isLowSurrogate()) { py_ch = QChar::surrogateToUcs4(*qch, *(qch + 1)); ++qt_i2; ++qch; } else { py_ch = qch->unicode(); } ++qt_i2; ++qch; sipUnicodeWrite(kind, data, py_i, py_ch); } break; } ++qch; sipUnicodeWrite(kind, data, qt_i, uch); } return obj; } // Convert a Python string object to a QString. QString qpycore_PyObject_AsQString(PyObject *obj) { int char_size; Py_ssize_t len; void *data = sipUnicodeData(obj, &char_size, &len); if (char_size == 1) return QString::fromLatin1(reinterpret_cast(data), len); if (char_size == 2) return QString::fromUtf16(reinterpret_cast(data), len); if (char_size == 4) return QString::fromUcs4(reinterpret_cast(data), len); return QString(); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0926356 PyQt6-6.6.1/qpy/QtCore/qpycore_qt_conf.cpp0000644000076500000240000000615214532160372017302 0ustar00philstaff// This is the implementatation of an embedded qt.conf file. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpycore_api.h" static const unsigned char qt_resource_name[] = { // qt 0x0,0x2, 0x0,0x0,0x7,0x84, 0x0,0x71, 0x0,0x74, // etc 0x0,0x3, 0x0,0x0,0x6c,0xa3, 0x0,0x65, 0x0,0x74,0x0,0x63, // qt.conf 0x0,0x7, 0x8,0x74,0xa6,0xa6, 0x0,0x71, 0x0,0x74,0x0,0x2e,0x0,0x63,0x0,0x6f,0x0,0x6e,0x0,0x66, }; static const unsigned char qt_resource_struct[] = { // : 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, // :/qt 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2, // :/qt/etc 0x0,0x0,0x0,0xa,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3, // :/qt/etc/qt.conf 0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, }; QT_BEGIN_NAMESPACE bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); QT_END_NAMESPACE // Embed a qt.conf file. bool qpycore_qt_conf() { // Get PyQt6.__file__. PyObject *pyqt = PyImport_ImportModule("PyQt6"); if (!pyqt) return false; PyObject *init = PyObject_GetAttrString(pyqt, "__file__"); Py_DECREF(pyqt); if (!init) return false; QString init_impl(qpycore_PyObject_AsQString(init)); Py_DECREF(init); if (init_impl.isEmpty()) return false; // Get the directory containing the PyQt6 extension modules. QDir pyqt_dir = QFileInfo(QDir::fromNativeSeparators(init_impl)).absoluteDir(); QString qt_dir_name = pyqt_dir.absoluteFilePath(QLatin1String("Qt6")); // Check if there is a bundled copy of Qt. if (QFileInfo(qt_dir_name).exists()) { // Get the prefix path with non-native separators. static QByteArray qt_conf = qt_dir_name.toUtf8(); qt_conf.prepend("[Paths]\nPrefix = "); qt_conf.append("\n"); // Prepend the 4-byte size. int size = qt_conf.size(); for (int i = 0; i < 4; ++i) { qt_conf.prepend(size & 0xff); size >>= 8; } // Register the structures. qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, (const unsigned char *)qt_conf.constData()); } return true; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.151067 PyQt6-6.6.1/qpy/QtCore/qpycore_qvariant.cpp0000644000076500000240000000474714532160372017506 0ustar00philstaff// This is the support for QVariant. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_api.h" #include "qpycore_chimera.h" // Return the Python object from the variant. PyObject *qpycore_PyObject_FromQVariant(const QVariant &qvar) { return Chimera::toAnyPyObject(qvar); } // Return a variant containing the Python object. It will be converted to a // C++ instance if possible (ie. if it is a fundamental type or a direct // wrapped type). Otherwise it is left as a Python object (with an increased // reference count). An exception is raised if there was a conversion error. // (The type of the object will never be the cause of an error.) QVariant qpycore_PyObject_AsQVariant(PyObject *obj, int *is_err) { return Chimera::fromAnyPyObject(obj, is_err); } // Return the Python object from the variant using the information provided by // a QMetaProperty. PyObject *qpycore_PyObject_FromQVariant(const QMetaProperty &mprop, const QVariant &qvar) { if (!qvar.isValid()) { Py_INCREF(Py_None); return Py_None; } const Chimera *ct = Chimera::parse(mprop); PyObject *py = ct->toPyObject(qvar); delete ct; return py; } // Return a variant containing the Python object using the information provided // by a QMetaProperty. An exception is raised if there was a conversion error. // (The type of the object will never be the cause of an error.) QVariant qpycore_PyObject_AsQVariant(const QMetaProperty &mprop, PyObject *obj, bool *ok) { const Chimera *ct = Chimera::parse(mprop); QVariant value; *ok = ct->fromPyObject(obj, &value); delete ct; return value; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1056192 PyQt6-6.6.1/qpy/QtCore/qpycore_qvariant_value.cpp0000644000076500000240000001447314532160372020677 0ustar00philstaff// This implements the conversion of a QVariant to a Python object and is part // of the public API. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpycore_chimera.h" #include "sipAPIQtCore.h" // Forward declarations. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value); static PyObject *convert_list(const Chimera *ct, const QVariantList &value); static PyObject *convert_map(const Chimera *ct, const QVariantMap &value); static PyObject *convert(const Chimera *ct, const QVariant &value); static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value); // Convert a QVariant to a Python object according to an optional type. PyObject *pyqt6_from_qvariant_by_type(QVariant &value, PyObject *type) { PyObject *value_obj; if (type) { const Chimera *ct = Chimera::parse(type); if (!ct) return 0; int wanted = ct->metatype.id(); // Get QVariant to do a conversion if there is one to do. if (value.isValid() && ct->metatype.id() < QMetaType::User) { int value_type = value.metaType().id(); // If we have a QStringList but are not wanting one then convert it // to a QVariantList. if (wanted != QMetaType::QStringList && value_type == QMetaType::QStringList) { value.convert(QMetaType(QMetaType::QVariantList)); value_type = QMetaType::QVariantList; } // If we have a container but are not wanting one then assume we // want a container with elements of the wanted type. if (wanted != QMetaType::QVariantList && value_type == QMetaType::QVariantList) { // If we have a QVariantList but we wanted a QStringList then // assume each variant is a string. if (wanted == QMetaType::QStringList) value_obj = convert(ct, value); else value_obj = convert_list(ct, value.toList()); } else if (wanted != QMetaType::QVariantMap && value_type == QMetaType::QVariantMap) { value_obj = convert_map(ct, value.toMap()); } else if (wanted != QMetaType::QVariantHash && value_type == QMetaType::QVariantHash) { value_obj = convert_hash(ct, value.toHash()); } else { value_obj = convert(ct, value); } } else if (!value.isValid()) { // Convert an invalid value to the default value of the requested // type. if (ct->py_type()) value_obj = PyObject_CallObject(ct->py_type(), NULL); else value_obj = ct->toPyObject(QVariant(QMetaType(wanted))); } else { // This is likely to fail and the exception will say why. value_obj = ct->toPyObject(value); } delete ct; } else { QVariant *heap = new QVariant(value); value_obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!value_obj) delete heap; } return value_obj; } // Convert a QVariantList to a list of Python objects. static PyObject *convert_list(const Chimera *ct, const QVariantList &value) { PyObject *list = PyList_New(value.size()); if (!list) return 0; for (int i = 0; i < value.size(); ++i) { PyObject *el = convert(ct, value.at(i)); if (!el) { Py_DECREF(list); return 0; } PyList_SetItem(list, i, el); } return list; } // Convert a QVariantMap to a dict of Python objects. static PyObject *convert_map(const Chimera *ct, const QVariantMap &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantMap::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariantHash to a dict of Python objects. static PyObject *convert_hash(const Chimera *ct, const QVariantHash &value) { PyObject *dict = PyDict_New(); if (!dict) return 0; for (QVariantHash::const_iterator it = value.constBegin(); it != value.constEnd(); ++it) { if (add_variant_to_dict(ct, dict, it.key(), it.value()) < 0) { Py_DECREF(dict); return 0; } } return dict; } // Convert a QVariant to a Python object. static PyObject *convert(const Chimera *ct, const QVariant &value) { QVariant converted = value; if (!converted.convert(ct->metatype)) converted = value; return ct->toPyObject(converted); } // Add a QVariant to a Python dict with a QString key. static int add_variant_to_dict(const Chimera *ct, PyObject *dict, const QString &key, const QVariant &value) { QString *key_heap = new QString(key); PyObject *key_obj = sipConvertFromNewType(key_heap, sipType_QString, 0); if (!key_obj) { delete key_heap; return -1; } PyObject *value_obj = convert(ct, value); if (!value_obj) { Py_DECREF(key_obj); return -1; } int rc = PyDict_SetItem(dict, key_obj, value_obj); Py_DECREF(key_obj); Py_DECREF(value_obj); return rc; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0963404 PyQt6-6.6.1/qpy/QtCore/qpycore_types.cpp0000644000076500000240000004215514532160372017020 0ustar00philstaff// This contains the meta-type used by PyQt. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include "qpycore_chimera.h" #include "qpycore_classinfo.h" #include "qpycore_enums_flags.h" #include "qpycore_misc.h" #include "qpycore_objectified_strings.h" #include "qpycore_pyqtproperty.h" #include "qpycore_pyqtsignal.h" #include "qpycore_pyqtslot.h" #include "qpycore_qmetaobjectbuilder.h" #include "qpycore_types.h" #include "sipAPIQtCore.h" // A tuple of the property name and definition. typedef QPair PropertyData; // Forward declarations. static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &penums, QList &psigs, QMap &pprops); static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &penums, QList &psigs, QMap &pprops); static const QMetaObject *get_scope_qmetaobject(const Chimera *ct); // Create a dynamic meta-object for a Python type by introspecting its // attributes. Note that it leaks if the type is deleted. const qpycore_metaobject *qpycore_get_dynamic_metaobject(sipWrapperType *wt) { qpycore_metaobject *qo = reinterpret_cast( sipGetTypeUserData(wt)); // Return any QMetaObject from a previous call. if (qo) return qo; PyTypeObject *pytype = (PyTypeObject *)wt; const pyqt6ClassPluginDef *plugin = reinterpret_cast(sipTypePluginData(sipTypeFromPyTypeObject(pytype))); // Only create a dynamic meta-object if its base wrapped type has a static // Qt meta-object. if (!plugin || !plugin->static_metaobject) return 0; QMetaObjectBuilder builder; // Get the super-type's meta-object. PyTypeObject *tp_base = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_base)); builder.setSuperClass(qpycore_get_qmetaobject((sipWrapperType *)tp_base)); // Get the name of the type. Dynamic types have simple names. builder.setClassName(sipPyTypeName(pytype)); // Go through the class hierarchy getting all PyQt enums, properties, slots // and signals. QList penums; QList psigs; QMap pprops; qo = new qpycore_metaobject; if (trawl_hierarchy(pytype, qo, builder, penums, psigs, pprops) < 0) return 0; qo->nr_signals = psigs.count(); // Initialise the header section of the data table. Note that Qt v4.5 // introduced revision 2 which added constructors. However the design is // broken in that the static meta-call function doesn't provide enough // information to determine which Python sub-class of a Qt class is to be // created. So we stick with revision 1 (and don't allow pyqtSlot() to // decorate __init__). // Set up any class information. QList class_info_list = qpycore_pop_class_info_list( (PyObject *)pytype); for (int i = 0; i < class_info_list.length(); ++i) { const ClassInfo &ci = class_info_list.at(i); builder.addClassInfo(ci.first, ci.second); } // Set up any enums/flags. for (int i = 0; i < penums.count(); ++i) { const EnumFlag &ef = penums.at(i); QMetaEnumBuilder enum_builder = builder.addEnumerator(ef.name); enum_builder.setIsFlag(ef.isFlag); enum_builder.setIsScoped(true); QList >::const_iterator it = ef.keys.constBegin(); while (it != ef.keys.constEnd()) { enum_builder.addKey(it->first, it->second); ++it; } } // Add the signals to the meta-object. for (int g = 0; g < qo->nr_signals; ++g) { const qpycore_pyqtSignal *ps = psigs.at(g); QMetaMethodBuilder signal_builder = builder.addSignal( ps->parsed_signature->signature.mid(1)); if (ps->parameter_names) signal_builder.setParameterNames(*ps->parameter_names); signal_builder.setRevision(ps->revision); } // Add the slots to the meta-object. for (int s = 0; s < qo->pslots.count(); ++s) { const Chimera::Signature *slot_signature = qo->pslots.at(s)->slotSignature(); const QByteArray &sig = slot_signature->signature; QMetaMethodBuilder slot_builder = builder.addSlot(sig); // Add any type. if (slot_signature->result) slot_builder.setReturnType(slot_signature->result->name()); slot_builder.setRevision(slot_signature->revision); } // Add the properties to the meta-object. QMapIterator it(pprops); while (it.hasNext()) { it.next(); const PropertyData &pprop = it.value(); const char *prop_name = PyBytes_AsString(pprop.first); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)pprop.second; int notifier_id; if (pp->pyqtprop_notify) { qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)pp->pyqtprop_notify; const QByteArray &sig = ps->parsed_signature->signature; notifier_id = builder.indexOfSignal(sig.mid(1)); if (notifier_id < 0) { PyErr_Format(PyExc_TypeError, "the notify signal '%s' was not defined in this class", sig.constData() + 1); // Note that we leak the property name. return 0; } } else { notifier_id = -1; } // A Qt v5 revision 7 meta-object holds the QMetaType::Type of the type // or its name if it is unresolved (ie. not known to the type system). // In Qt v4 both are held. For QObject sub-classes Chimera will fall // back to the QMetaType::QObjectStar if there is no specific meta-type // for the sub-class. This means that, for Qt v4, // QMetaProperty::read() can handle the type. However, Qt v5 doesn't // know that the unresolved type is a QObject sub-class. Therefore we // have to tell it that the property is a QObject, rather than the // sub-class. This means that QMetaProperty.typeName() will always // return "QObject*". QByteArray prop_type; if (pp->pyqtprop_parsed_type->metatype.id() == QMetaType::QObjectStar) { // However, if the type is a Python sub-class of QObject then we // use the name of the Python type. This anticipates that the type // is one that will be proxied by QML at some point. if (pp->pyqtprop_parsed_type->typeDef() == sipType_QObject) { prop_type = sipPyTypeName( (PyTypeObject *)pp->pyqtprop_parsed_type->py_type()); prop_type.append('*'); } else { prop_type = "QObject*"; } } else { prop_type = pp->pyqtprop_parsed_type->name(); } // Note that there is an addProperty() overload that also takes a // QMetaType argument (rather than call QMetaType::fromType() as this // overload does) so we could pass the QMetaType that the parser // created. However this breaks properties that are application Python // enums which have a parsed QMetaType that describes an int whereas Qt // seems to need an invalid QMetaType for these to work. QMetaPropertyBuilder prop_builder = builder.addProperty( QByteArray(prop_name), prop_type, notifier_id); // Reset the defaults. prop_builder.setReadable(false); prop_builder.setWritable(false); // Enum or flag. if (pp->pyqtprop_parsed_type->isEnumOrFlag()) { prop_builder.setEnumOrFlag(true); } if (pp->pyqtprop_get && PyCallable_Check(pp->pyqtprop_get)) { // Readable. prop_builder.setReadable(true); } if (pp->pyqtprop_set && PyCallable_Check(pp->pyqtprop_set)) { // Writable. prop_builder.setWritable(true); // See if the name of the setter follows the Designer convention. // If so tell the UI compilers not to use setProperty(). PyObject *setter_name_obj = PyObject_GetAttr(pp->pyqtprop_set, qpycore_dunder_name); if (setter_name_obj) { QByteArray ascii = qpycore_convert_ASCII(setter_name_obj); Py_DECREF(setter_name_obj); if (ascii.startsWith("set") && ascii[3] == (char)toupper(prop_name[0]) && ascii.mid(4) == prop_name + 1) prop_builder.setStdCppSet(true); } PyErr_Clear(); } if (pp->pyqtprop_reset && PyCallable_Check(pp->pyqtprop_reset)) { // Resetable. prop_builder.setResettable(true); } // Add the property flags. prop_builder.setDesignable(pp->pyqtprop_flags & 0x00001000); prop_builder.setScriptable(pp->pyqtprop_flags & 0x00004000); prop_builder.setStored(pp->pyqtprop_flags & 0x00010000); prop_builder.setUser(pp->pyqtprop_flags & 0x00100000); prop_builder.setConstant(pp->pyqtprop_flags & 0x00000400); prop_builder.setFinal(pp->pyqtprop_flags & 0x00000800); prop_builder.setRevision(pp->pyqtprop_revision); // Save the property data for qt_metacall(). (We already have a // reference.) qo->pprops.append(pp); // We've finished with the property name. Py_DECREF(pprop.first); } // Initialise the rest of the meta-object. qo->mo = builder.toMetaObject(); // Save for next time. sipSetTypeUserData(wt, qo); return qo; } // Trawl a type's hierarchy looking for any enums, slots, signals or // properties. static int trawl_hierarchy(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &penums, QList &psigs, QMap &pprops) { if (trawl_type(pytype, qo, builder, penums, psigs, pprops) < 0) return -1; PyObject *tp_bases; if (PyType_HasFeature(pytype, Py_TPFLAGS_HEAPTYPE)) tp_bases = reinterpret_cast( PyType_GetSlot(pytype, Py_tp_bases)); else tp_bases = 0; if (!tp_bases) return 0; Q_ASSERT(PyTuple_Check(tp_bases)); for (Py_ssize_t i = 0; i < PyTuple_Size(tp_bases); ++i) { PyTypeObject *sup = (PyTypeObject *)PyTuple_GetItem(tp_bases, i); if (PyType_IsSubtype(sup, sipTypeAsPyTypeObject(sipType_QObject))) continue; if (trawl_hierarchy(sup, qo, builder, penums, psigs, pprops) < 0) return -1; } return 0; } // Trawl a type's dict looking for any enums, slots, signals or properties. static int trawl_type(PyTypeObject *pytype, qpycore_metaobject *qo, QMetaObjectBuilder &builder, QList &penums, QList &psigs, QMap &pprops) { int rc = 0; Py_ssize_t pos = 0; PyObject *key, *value, *dict; if ((dict = sipPyTypeDictRef(pytype)) == NULL) return -1; while (PyDict_Next(dict, &pos, &key, &value)) { // See if it is an enum. EnumFlag enum_flag = qpycore_pop_enum_flag(value); if (!enum_flag.name.isNull()) { penums.append(enum_flag); continue; } // See if it is a slot, ie. it has been decorated with pyqtSlot(). PyObject *sig_obj = PyObject_GetAttr(value, qpycore_dunder_pyqtsignature); if (sig_obj) { // Make sure it is a list and not some legitimate attribute that // happens to use our special name. if (PyList_Check(sig_obj)) { for (Py_ssize_t i = 0; i < PyList_Size(sig_obj); ++i) { // Set up the skeleton slot. PyObject *decoration = PyList_GetItem(sig_obj, i); Chimera::Signature *slot_signature = Chimera::Signature::fromPyObject(decoration); // Check if a slot of the same signature has already been // defined. This typically happens with sub-classed // mixins. bool overridden = false; for (int i = 0; i < qo->pslots.size(); ++i) if (qo->pslots.at(i)->slotSignature()->signature == slot_signature->signature) { overridden = true; break; } if (!overridden) qo->pslots.append( new PyQtSlot(value, true, slot_signature)); } } Py_DECREF(sig_obj); } else { PyErr_Clear(); // Make sure the key is an ASCII string. Delay the error checking // until we know we actually need it. const char *ascii_key = sipString_AsASCIIString(&key); // See if the value is of interest. if (PyObject_TypeCheck(value, qpycore_pyqtProperty_TypeObject)) { // It is a property. if (!ascii_key) { rc = -1; break; } Py_INCREF(value); qpycore_pyqtProperty *pp = (qpycore_pyqtProperty *)value; pprops.insert(pp->pyqtprop_sequence, PropertyData(key, value)); // See if the property has a scope. If so, collect all // QMetaObject pointers that are not in the super-class // hierarchy. const QMetaObject *mo = get_scope_qmetaobject(pp->pyqtprop_parsed_type); if (mo) builder.addRelatedMetaObject(mo); } else if (PyObject_TypeCheck(value, qpycore_pyqtSignal_TypeObject)) { // It is a signal. if (!ascii_key) { rc = -1; break; } qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)value; // Make sure the signal has a name. qpycore_set_signal_name(ps, sipPyTypeName(pytype), ascii_key); // Add all the overloads. do { psigs.append(ps); ps = ps->next; } while (ps); Py_DECREF(key); } else { PyErr_Clear(); } } } Py_DECREF(dict); return rc; } // Return the QMetaObject for an enum type's scope. static const QMetaObject *get_scope_qmetaobject(const Chimera *ct) { // Check it is an enum. if (!ct->isEnumOrFlag()) return 0; // Check it has a scope. if (!ct->typeDef()) return 0; const sipTypeDef *td = sipTypeScope(ct->typeDef()); if (!td) return 0; // Check the scope is wrapped by PyQt. if (!qpycore_is_pyqt_type(td)) return 0; return qpycore_get_qmetaobject((sipWrapperType *)sipTypeAsPyTypeObject(td)); } // Return the QMetaObject for a type. const QMetaObject *qpycore_get_qmetaobject(sipWrapperType *wt, const sipTypeDef *base_td) { if (wt && sipIsUserType(wt)) { const qpycore_metaobject *qo = qpycore_get_dynamic_metaobject(wt); if (qo) return qo->mo; } // Get the static meta-object if there is one. if (!base_td) { if (!wt) return 0; base_td = sipTypeFromPyTypeObject((PyTypeObject *)wt); if (!base_td) return 0; } const pyqt6ClassPluginDef *plugin = reinterpret_cast(sipTypePluginData(base_td)); if (!plugin) return 0; return reinterpret_cast(plugin->static_metaobject); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.0970616 PyQt6-6.6.1/qpy/QtCore/qpycore_types.h0000644000076500000240000000305014532160372016454 0ustar00philstaff// This defines the interfaces for the meta-type used by PyQt. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYCORE_TYPES_H #define _QPYCORE_TYPES_H #include #include #include "qpycore_pyqtproperty.h" class PyQtSlot; // This describes a dynamic meta-object. struct qpycore_metaobject { // The meta-object built by QMetaObjectBuilder. QMetaObject *mo; // The list of properties. QList pprops; // The list of slots. QList pslots; // The number of signals. int nr_signals; }; const qpycore_metaobject *qpycore_get_dynamic_metaobject(sipWrapperType *wt); const QMetaObject *qpycore_get_qmetaobject(sipWrapperType *wt, const sipTypeDef *base_td = 0); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3565946 PyQt6-6.6.1/qpy/QtDBus/0000755000076500000240000000000014532160402013336 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1722608 PyQt6-6.6.1/qpy/QtDBus/qpydbus_api.h0000644000076500000240000000174714532160372016046 0ustar00philstaff// This defines the API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_API_H #define _QPYDBUS_API_H // Initialisation. void qpydbus_post_init(); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.175534 PyQt6-6.6.1/qpy/QtDBus/qpydbus_chimera_helpers.cpp0000644000076500000240000001315314532160372020754 0ustar00philstaff// This is the implementation of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Forward declarations. static PyObject *from_variant_type(const QDBusArgument &arg); static PyObject *from_array_type(const QDBusArgument &arg); static PyObject *from_structure_type(const QDBusArgument &arg); static PyObject *from_map_type(const QDBusArgument &arg); static PyObject *from_qstring(const QString &arg); static PyObject *from_qvariant(const QVariant &arg); // Convert a QVariant to a Python object. bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp) { // Handle QDBusObjectPath. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().path()); return true; } // Handle QDBusSignature. if (var.userType() == qMetaTypeId()) { *objp = from_qstring(var.value().signature()); return true; } // Handle QDBusVariant. if (var.userType() == qMetaTypeId()) { *objp = from_qvariant(var.value().variant()); return true; } // Anything else must be a QDBusArgument. if (var.userType() != qMetaTypeId()) return false; QDBusArgument arg = var.value(); switch (arg.currentType()) { case QDBusArgument::BasicType: *objp = from_qvariant(arg.asVariant()); break; case QDBusArgument::VariantType: *objp = from_variant_type(arg); break; case QDBusArgument::ArrayType: *objp = from_array_type(arg); break; case QDBusArgument::StructureType: *objp = from_structure_type(arg); break; case QDBusArgument::MapType: *objp = from_map_type(arg); break; default: PyErr_Format(PyExc_TypeError, "unsupported DBus argument type %d", (int)arg.currentType()); *objp = 0; } return true; } // Convert a QDBusArgument variant type to a Python object. static PyObject *from_variant_type(const QDBusArgument &arg) { QDBusVariant dbv; arg >> dbv; return from_qvariant(dbv.variant()); } // Convert a QDBusArgument array type to a Python object. static PyObject *from_array_type(const QDBusArgument &arg) { QVariantList vl; arg.beginArray(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endArray(); PyObject *obj = PyList_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyList_SetItem(obj, i, itm); } return obj; } // Convert a QDBusArgument structure type to a Python object. static PyObject *from_structure_type(const QDBusArgument &arg) { QVariantList vl; arg.beginStructure(); while (!arg.atEnd()) vl.append(arg.asVariant()); arg.endStructure(); PyObject *obj = PyTuple_New(vl.count()); if (!obj) return 0; for (int i = 0; i < vl.count(); ++i) { PyObject *itm = from_qvariant(vl.at(i)); if (!itm) { Py_DECREF(obj); return 0; } PyTuple_SetItem(obj, i, itm); } return obj; } // Convert a QDBusArgument map type to a Python object. static PyObject *from_map_type(const QDBusArgument &arg) { PyObject *obj = PyDict_New(); if (!obj) return 0; arg.beginMap(); while (!arg.atEnd()) { arg.beginMapEntry(); PyObject *key = from_qvariant(arg.asVariant()); PyObject *value = from_qvariant(arg.asVariant()); arg.endMapEntry(); if (!key || !value) { Py_XDECREF(key); Py_XDECREF(value); Py_DECREF(obj); return 0; } int rc = PyDict_SetItem(obj, key, value); Py_DECREF(key); Py_DECREF(value); if (rc < 0) { Py_DECREF(obj); return 0; } } arg.endMap(); return obj; } // Convert a QString to a Python object. static PyObject *from_qstring(const QString &arg) { QString *heap = new QString(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QString, 0); if (!obj) delete heap; return obj; } // Convert a QVariant to a Python object. static PyObject *from_qvariant(const QVariant &arg) { QVariant *heap = new QVariant(arg); PyObject *obj = sipConvertFromNewType(heap, sipType_QVariant, 0); if (!obj) delete heap; return obj; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1743078 PyQt6-6.6.1/qpy/QtDBus/qpydbus_chimera_helpers.h0000644000076500000240000000232414532160372020417 0ustar00philstaff// This is the definition of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUS_CHIMERAHELPERS_H #define _QPYDBUS_CHIMERAHELPERS_H #include #include // Keep this in sync. with that defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant &, PyObject **); bool qpydbus_from_qvariant_convertor(const QVariant &var, PyObject **objp); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1711416 PyQt6-6.6.1/qpy/QtDBus/qpydbus_post_init.cpp0000644000076500000240000000323514532160372017632 0ustar00philstaff// This is the initialisation support code for the QtDBus module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpydbus_api.h" #include "qpydbus_chimera_helpers.h" #include "sipAPIQtDBus.h" // Perform any required initialisation. void qpydbus_post_init() { // Make sure these are registered. qMetaTypeId(); qMetaTypeId(); qMetaTypeId(); // Get the Chimera helper registration function. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt6_register_from_qvariant_convertor"); Q_ASSERT(register_from_qvariant_convertor); register_from_qvariant_convertor(qpydbus_from_qvariant_convertor); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1718802 PyQt6-6.6.1/qpy/QtDBus/qpydbuspendingreply.cpp0000644000076500000240000000351114532160372020160 0ustar00philstaff// This is the implementation of the QPyDBusPendingReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpydbuspendingreply.h" #include "sipAPIQtDBus.h" // Default ctor. QPyDBusPendingReply::QPyDBusPendingReply() : QDBusPendingReply() { } // Copy a reply. QPyDBusPendingReply::QPyDBusPendingReply(const QPyDBusPendingReply &other) : QDBusPendingReply(other) { } // Extract a reply from another pending call. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusPendingCall &call) : QDBusPendingReply(call) { } // Extract a reply from a message. QPyDBusPendingReply::QPyDBusPendingReply(const QDBusMessage &reply) : QDBusPendingReply(reply) { } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusPendingReply::value(PyObject *type) const { QVariant val; // This will wait for the call to complete. Py_BEGIN_ALLOW_THREADS val = argumentAt(0); Py_END_ALLOW_THREADS return pyqt6_qtdbus_from_qvariant_by_type(val, type); } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.173864 PyQt6-6.6.1/qpy/QtDBus/qpydbuspendingreply.h0000644000076500000240000000247414532160372017634 0ustar00philstaff// This is the definition of the QPyDBusPendingReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSPENDINGREPLY_H #define _QPYDBUSPENDINGREPLY_H #include #include class QPyDBusPendingReply : public QDBusPendingReply { public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); PyObject *value(PyObject *type) const; }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1734667 PyQt6-6.6.1/qpy/QtDBus/qpydbusreply.cpp0000644000076500000240000000677714532160372016634 0ustar00philstaff// This is the implementation of the QPyDBusReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpydbusreply.h" #include "sipAPIQtDBus.h" // Extract a reply from a message. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusMessage &reply) { *this = reply; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply::QPyDBusReply(const QDBusPendingCall &call) { *this = call; } // Extract a reply from an error. QPyDBusReply::QPyDBusReply(const QDBusError &error) { _q_value = 0; _q_is_valid = !error.isValid(); _q_error = error; } // Copy a reply. The GIL should be held. QPyDBusReply::QPyDBusReply(const QPyDBusReply &other) { _q_value = other._q_value; Py_XINCREF(_q_value); _q_value_variant = other._q_value_variant; _q_is_valid = other._q_is_valid; _q_error = other._q_error; } // A reply created from a QDBusReply<> mapped type convertor. QPyDBusReply::QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error) : _q_value(q_value), _q_is_valid(q_is_valid), _q_error(q_error) { } // The dtor. The GIL should be held. QPyDBusReply::~QPyDBusReply() { Py_XDECREF(_q_value); } // Return the value of the reply. The GIL should be held. PyObject *QPyDBusReply::value(PyObject *type) const { if (!_q_is_valid) { PyErr_SetString(PyExc_ValueError, "QDBusReply value is invalid"); return 0; } // Return any explicit value. if (_q_value) { if (type) { PyErr_SetString(PyExc_ValueError, "'type' argument cannot be used with an explcitly typed reply"); return 0; } Py_INCREF(_q_value); return _q_value; } QVariant val(_q_value_variant); return pyqt6_qtdbus_from_qvariant_by_type(val, type); } // Extract a reply from a message. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusMessage &reply) { _q_value = 0; _q_error = reply; _q_is_valid = !_q_error.isValid(); if (_q_is_valid) { QList results = reply.arguments(); if (results.count() == 0) { Py_INCREF(Py_None); _q_value = Py_None; } else { // Convert this later if requested. _q_value_variant = results.at(0); } } return *this; } // Extract a reply from a pending call. The GIL should be held. QPyDBusReply &QPyDBusReply::operator=(const QDBusPendingCall &call) { QDBusPendingCall other(call); Py_BEGIN_ALLOW_THREADS other.waitForFinished(); Py_END_ALLOW_THREADS return *this = other.reply(); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1704564 PyQt6-6.6.1/qpy/QtDBus/qpydbusreply.h0000644000076500000240000000337414532160372016267 0ustar00philstaff// This is the definition of the QPyDBusReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDBUSREPLY_H #define _QPYDBUSREPLY_H #include #include #include class QDBusMessage; class QDBusPendingCall; class QPyDBusReply { public: QPyDBusReply(const QDBusMessage &reply); QPyDBusReply(const QDBusPendingCall &call); QPyDBusReply(const QDBusError &error = QDBusError()); QPyDBusReply(const QPyDBusReply &other); QPyDBusReply(PyObject *q_value, bool q_is_valid, const QDBusError &q_error); ~QPyDBusReply(); inline const QDBusError &error() const {return _q_error;} inline bool isValid() const {return _q_is_valid;} PyObject *value(PyObject *type) const; QPyDBusReply &operator=(const QDBusMessage &reply); QPyDBusReply &operator=(const QDBusPendingCall &call); private: PyObject *_q_value; QVariant _q_value_variant; bool _q_is_valid; QDBusError _q_error; }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3465273 PyQt6-6.6.1/qpy/QtDesigner/0000755000076500000240000000000014532160402014241 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1776288 PyQt6-6.6.1/qpy/QtDesigner/qpydesignercontainerextension.h0000644000076500000240000000260214532160372022612 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerContainerExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCONTAINEREXTENSION_H #define _QPYDESIGNERCONTAINEREXTENSION_H #include #include class QPyDesignerContainerExtension : public QObject, public QDesignerContainerExtension { Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) public: QPyDesignerContainerExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1801417 PyQt6-6.6.1/qpy/QtDesigner/qpydesignercustomwidgetcollectionplugin.h0000644000076500000240000000272414532160372024711 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerCustomWidgetCollectionPlugin class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETCOLLECTIONPLUGIN_H #include #include class QPyDesignerCustomWidgetCollectionPlugin : public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1790714 PyQt6-6.6.1/qpy/QtDesigner/qpydesignercustomwidgetplugin.h0000644000076500000240000000257214532160372022636 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #define _QPYDESIGNERCUSTOMWIDGETPLUGIN_H #include #include class QPyDesignerCustomWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT Q_INTERFACES(QDesignerCustomWidgetInterface) public: QPyDesignerCustomWidgetPlugin(QObject *parent = 0) : QObject(parent) {} private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1766858 PyQt6-6.6.1/qpy/QtDesigner/qpydesignermembersheetextension.h0000644000076500000240000000262614532160372023136 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerMemberSheetExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERMEMBERSHEETEXTENSION_H #define _QPYDESIGNERMEMBERSHEETEXTENSION_H #include #include class QPyDesignerMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: QPyDesignerMemberSheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1780727 PyQt6-6.6.1/qpy/QtDesigner/qpydesignerpropertysheetextension.h0000644000076500000240000000265214532160372023552 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerPropertySheetExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERPROPERTYSHEETEXTENSION_H #define _QPYDESIGNERPROPERTYSHEETEXTENSION_H #include #include class QPyDesignerPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) public: QPyDesignerPropertySheetExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1809378 PyQt6-6.6.1/qpy/QtDesigner/qpydesignertaskmenuextension.h0000644000076500000240000000257014532160372022463 0ustar00philstaff// This is the definition and implementation of the // QPyDesignerTaskMenuExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYDESIGNERTASKMENUEXTENSION_H #define _QPYDESIGNERTASKMENUEXTENSION_H #include #include class QPyDesignerTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: QPyDesignerTaskMenuExtension(QObject *parent) : QObject(parent) {}; private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3373213 PyQt6-6.6.1/qpy/QtOpenGL/0000755000076500000240000000000014532160402013625 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2181928 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_add_constants.cpp0000644000076500000240000063201414532160372021267 0ustar00philstaff/* * This implements a function to populate a Python object with the OpenGL * constants. This file is automatically generated. * * Copyright (c) 2023 Riverbank Computing Limited * * This file is part of PyQt6. * * This file may be used under the terms of the GNU General Public License * version 3.0 as published by the Free Software Foundation and appearing in * the file LICENSE included in the packaging of this file. Please review the * following information to ensure the GNU General Public License version 3.0 * requirements will be met: http://www.gnu.org/copyleft/gpl.html. * * If you do not wish to use this file under the terms of the GPL version 3.0 * then you may purchase a commercial license. For more information contact * info@riverbankcomputing.com. * * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #include struct OpenGLEnum_i { const char *name; int value; }; static OpenGLEnum_i openGLEnums_i[] = { {"GL_CURRENT_BIT", 0x00000001}, {"GL_POINT_BIT", 0x00000002}, {"GL_LINE_BIT", 0x00000004}, {"GL_POLYGON_BIT", 0x00000008}, {"GL_POLYGON_STIPPLE_BIT", 0x00000010}, {"GL_PIXEL_MODE_BIT", 0x00000020}, {"GL_LIGHTING_BIT", 0x00000040}, {"GL_FOG_BIT", 0x00000080}, {"GL_DEPTH_BUFFER_BIT", 0x00000100}, {"GL_ACCUM_BUFFER_BIT", 0x00000200}, {"GL_STENCIL_BUFFER_BIT", 0x00000400}, {"GL_VIEWPORT_BIT", 0x00000800}, {"GL_TRANSFORM_BIT", 0x00001000}, {"GL_ENABLE_BIT", 0x00002000}, {"GL_COLOR_BUFFER_BIT", 0x00004000}, {"GL_HINT_BIT", 0x00008000}, {"GL_EVAL_BIT", 0x00010000}, {"GL_LIST_BIT", 0x00020000}, {"GL_TEXTURE_BIT", 0x00040000}, {"GL_SCISSOR_BIT", 0x00080000}, {"GL_MULTISAMPLE_BIT", 0x20000000}, {"GL_MULTISAMPLE_BIT_ARB", 0x20000000}, {"GL_MULTISAMPLE_BIT_EXT", 0x20000000}, {"GL_MULTISAMPLE_BIT_3DFX", 0x20000000}, {"GL_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_COVERAGE_BUFFER_BIT_NV", 0x00008000}, {"GL_CLIENT_PIXEL_STORE_BIT", 0x00000001}, {"GL_CLIENT_VERTEX_ARRAY_BIT", 0x00000002}, {"GL_CLIENT_ALL_ATTRIB_BITS", static_cast(0xFFFFFFFF)}, {"GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT", 0x00000001}, {"GL_CONTEXT_FLAG_DEBUG_BIT", 0x00000002}, {"GL_CONTEXT_FLAG_DEBUG_BIT_KHR", 0x00000002}, {"GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB", 0x00000004}, {"GL_CONTEXT_CORE_PROFILE_BIT", 0x00000001}, {"GL_CONTEXT_COMPATIBILITY_PROFILE_BIT", 0x00000002}, {"GL_MAP_READ_BIT", 0x0001}, {"GL_MAP_READ_BIT_EXT", 0x0001}, {"GL_MAP_WRITE_BIT", 0x0002}, {"GL_MAP_WRITE_BIT_EXT", 0x0002}, {"GL_MAP_INVALIDATE_RANGE_BIT", 0x0004}, {"GL_MAP_INVALIDATE_RANGE_BIT_EXT", 0x0004}, {"GL_MAP_INVALIDATE_BUFFER_BIT", 0x0008}, {"GL_MAP_INVALIDATE_BUFFER_BIT_EXT", 0x0008}, {"GL_MAP_FLUSH_EXPLICIT_BIT", 0x0010}, {"GL_MAP_FLUSH_EXPLICIT_BIT_EXT", 0x0010}, {"GL_MAP_UNSYNCHRONIZED_BIT", 0x0020}, {"GL_MAP_UNSYNCHRONIZED_BIT_EXT", 0x0020}, {"GL_MAP_PERSISTENT_BIT", 0x0040}, {"GL_MAP_COHERENT_BIT", 0x0080}, {"GL_DYNAMIC_STORAGE_BIT", 0x0100}, {"GL_CLIENT_STORAGE_BIT", 0x0200}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT", 0x00000001}, {"GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT", 0x00000001}, {"GL_ELEMENT_ARRAY_BARRIER_BIT", 0x00000002}, {"GL_ELEMENT_ARRAY_BARRIER_BIT_EXT", 0x00000002}, {"GL_UNIFORM_BARRIER_BIT", 0x00000004}, {"GL_UNIFORM_BARRIER_BIT_EXT", 0x00000004}, {"GL_TEXTURE_FETCH_BARRIER_BIT", 0x00000008}, {"GL_TEXTURE_FETCH_BARRIER_BIT_EXT", 0x00000008}, {"GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV", 0x00000010}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT", 0x00000020}, {"GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT", 0x00000020}, {"GL_COMMAND_BARRIER_BIT", 0x00000040}, {"GL_COMMAND_BARRIER_BIT_EXT", 0x00000040}, {"GL_PIXEL_BUFFER_BARRIER_BIT", 0x00000080}, {"GL_PIXEL_BUFFER_BARRIER_BIT_EXT", 0x00000080}, {"GL_TEXTURE_UPDATE_BARRIER_BIT", 0x00000100}, {"GL_TEXTURE_UPDATE_BARRIER_BIT_EXT", 0x00000100}, {"GL_BUFFER_UPDATE_BARRIER_BIT", 0x00000200}, {"GL_BUFFER_UPDATE_BARRIER_BIT_EXT", 0x00000200}, {"GL_FRAMEBUFFER_BARRIER_BIT", 0x00000400}, {"GL_FRAMEBUFFER_BARRIER_BIT_EXT", 0x00000400}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT", 0x00000800}, {"GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT", 0x00000800}, {"GL_ATOMIC_COUNTER_BARRIER_BIT", 0x00001000}, {"GL_ATOMIC_COUNTER_BARRIER_BIT_EXT", 0x00001000}, {"GL_SHADER_STORAGE_BARRIER_BIT", 0x00002000}, {"GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT", 0x00004000}, {"GL_QUERY_BUFFER_BARRIER_BIT", 0x00008000}, {"GL_ALL_BARRIER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_BARRIER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_SYNC_FLUSH_COMMANDS_BIT", 0x00000001}, {"GL_SYNC_FLUSH_COMMANDS_BIT_APPLE", 0x00000001}, {"GL_VERTEX_SHADER_BIT", 0x00000001}, {"GL_VERTEX_SHADER_BIT_EXT", 0x00000001}, {"GL_FRAGMENT_SHADER_BIT", 0x00000002}, {"GL_FRAGMENT_SHADER_BIT_EXT", 0x00000002}, {"GL_GEOMETRY_SHADER_BIT", 0x00000004}, {"GL_TESS_CONTROL_SHADER_BIT", 0x00000008}, {"GL_TESS_EVALUATION_SHADER_BIT", 0x00000010}, {"GL_COMPUTE_SHADER_BIT", 0x00000020}, {"GL_ALL_SHADER_BITS", static_cast(0xFFFFFFFF)}, {"GL_ALL_SHADER_BITS_EXT", static_cast(0xFFFFFFFF)}, {"GL_TEXTURE_STORAGE_SPARSE_BIT_AMD", 0x00000001}, {"GL_RED_BIT_ATI", 0x00000001}, {"GL_GREEN_BIT_ATI", 0x00000002}, {"GL_BLUE_BIT_ATI", 0x00000004}, {"GL_2X_BIT_ATI", 0x00000001}, {"GL_4X_BIT_ATI", 0x00000002}, {"GL_8X_BIT_ATI", 0x00000004}, {"GL_HALF_BIT_ATI", 0x00000008}, {"GL_QUARTER_BIT_ATI", 0x00000010}, {"GL_EIGHTH_BIT_ATI", 0x00000020}, {"GL_SATURATE_BIT_ATI", 0x00000040}, {"GL_COMP_BIT_ATI", 0x00000002}, {"GL_NEGATE_BIT_ATI", 0x00000004}, {"GL_BIAS_BIT_ATI", 0x00000008}, {"GL_TRACE_OPERATIONS_BIT_MESA", 0x0001}, {"GL_TRACE_PRIMITIVES_BIT_MESA", 0x0002}, {"GL_TRACE_ARRAYS_BIT_MESA", 0x0004}, {"GL_TRACE_TEXTURES_BIT_MESA", 0x0008}, {"GL_TRACE_PIXELS_BIT_MESA", 0x0010}, {"GL_TRACE_ERRORS_BIT_MESA", 0x0020}, {"GL_TRACE_ALL_BITS_MESA", 0xFFFF}, {"GL_BOLD_BIT_NV", 0x01}, {"GL_ITALIC_BIT_NV", 0x02}, {"GL_GLYPH_WIDTH_BIT_NV", 0x01}, {"GL_GLYPH_HEIGHT_BIT_NV", 0x02}, {"GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV", 0x04}, {"GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV", 0x08}, {"GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV", 0x10}, {"GL_GLYPH_VERTICAL_BEARING_X_BIT_NV", 0x20}, {"GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV", 0x40}, {"GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV", 0x80}, {"GL_GLYPH_HAS_KERNING_BIT_NV", 0x100}, {"GL_FONT_X_MIN_BOUNDS_BIT_NV", 0x00010000}, {"GL_FONT_Y_MIN_BOUNDS_BIT_NV", 0x00020000}, {"GL_FONT_X_MAX_BOUNDS_BIT_NV", 0x00040000}, {"GL_FONT_Y_MAX_BOUNDS_BIT_NV", 0x00080000}, {"GL_FONT_UNITS_PER_EM_BIT_NV", 0x00100000}, {"GL_FONT_ASCENDER_BIT_NV", 0x00200000}, {"GL_FONT_DESCENDER_BIT_NV", 0x00400000}, {"GL_FONT_HEIGHT_BIT_NV", 0x00800000}, {"GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV", 0x01000000}, {"GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV", 0x02000000}, {"GL_FONT_UNDERLINE_POSITION_BIT_NV", 0x04000000}, {"GL_FONT_UNDERLINE_THICKNESS_BIT_NV", 0x08000000}, {"GL_FONT_HAS_KERNING_BIT_NV", 0x10000000}, {"GL_VERTEX23_BIT_PGI", 0x00000004}, {"GL_VERTEX4_BIT_PGI", 0x00000008}, {"GL_COLOR3_BIT_PGI", 0x00010000}, {"GL_COLOR4_BIT_PGI", 0x00020000}, {"GL_EDGEFLAG_BIT_PGI", 0x00040000}, {"GL_INDEX_BIT_PGI", 0x00080000}, {"GL_MAT_AMBIENT_BIT_PGI", 0x00100000}, {"GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI", 0x00200000}, {"GL_MAT_DIFFUSE_BIT_PGI", 0x00400000}, {"GL_MAT_EMISSION_BIT_PGI", 0x00800000}, {"GL_MAT_COLOR_INDEXES_BIT_PGI", 0x01000000}, {"GL_MAT_SHININESS_BIT_PGI", 0x02000000}, {"GL_MAT_SPECULAR_BIT_PGI", 0x04000000}, {"GL_NORMAL_BIT_PGI", 0x08000000}, {"GL_TEXCOORD1_BIT_PGI", 0x10000000}, {"GL_TEXCOORD2_BIT_PGI", 0x20000000}, {"GL_TEXCOORD3_BIT_PGI", 0x40000000}, {"GL_TEXCOORD4_BIT_PGI", static_cast(0x80000000)}, {"GL_COLOR_BUFFER_BIT0_QCOM", 0x00000001}, {"GL_COLOR_BUFFER_BIT1_QCOM", 0x00000002}, {"GL_COLOR_BUFFER_BIT2_QCOM", 0x00000004}, {"GL_COLOR_BUFFER_BIT3_QCOM", 0x00000008}, {"GL_COLOR_BUFFER_BIT4_QCOM", 0x00000010}, {"GL_COLOR_BUFFER_BIT5_QCOM", 0x00000020}, {"GL_COLOR_BUFFER_BIT6_QCOM", 0x00000040}, {"GL_COLOR_BUFFER_BIT7_QCOM", 0x00000080}, {"GL_DEPTH_BUFFER_BIT0_QCOM", 0x00000100}, {"GL_DEPTH_BUFFER_BIT1_QCOM", 0x00000200}, {"GL_DEPTH_BUFFER_BIT2_QCOM", 0x00000400}, {"GL_DEPTH_BUFFER_BIT3_QCOM", 0x00000800}, {"GL_DEPTH_BUFFER_BIT4_QCOM", 0x00001000}, {"GL_DEPTH_BUFFER_BIT5_QCOM", 0x00002000}, {"GL_DEPTH_BUFFER_BIT6_QCOM", 0x00004000}, {"GL_DEPTH_BUFFER_BIT7_QCOM", 0x00008000}, {"GL_STENCIL_BUFFER_BIT0_QCOM", 0x00010000}, {"GL_STENCIL_BUFFER_BIT1_QCOM", 0x00020000}, {"GL_STENCIL_BUFFER_BIT2_QCOM", 0x00040000}, {"GL_STENCIL_BUFFER_BIT3_QCOM", 0x00080000}, {"GL_STENCIL_BUFFER_BIT4_QCOM", 0x00100000}, {"GL_STENCIL_BUFFER_BIT5_QCOM", 0x00200000}, {"GL_STENCIL_BUFFER_BIT6_QCOM", 0x00400000}, {"GL_STENCIL_BUFFER_BIT7_QCOM", 0x00800000}, {"GL_MULTISAMPLE_BUFFER_BIT0_QCOM", 0x01000000}, {"GL_MULTISAMPLE_BUFFER_BIT1_QCOM", 0x02000000}, {"GL_MULTISAMPLE_BUFFER_BIT2_QCOM", 0x04000000}, {"GL_MULTISAMPLE_BUFFER_BIT3_QCOM", 0x08000000}, {"GL_MULTISAMPLE_BUFFER_BIT4_QCOM", 0x10000000}, {"GL_MULTISAMPLE_BUFFER_BIT5_QCOM", 0x20000000}, {"GL_MULTISAMPLE_BUFFER_BIT6_QCOM", 0x40000000}, {"GL_MULTISAMPLE_BUFFER_BIT7_QCOM", static_cast(0x80000000)}, {"GL_TEXTURE_DEFORMATION_BIT_SGIX", 0x00000001}, {"GL_GEOMETRY_DEFORMATION_BIT_SGIX", 0x00000002}, {"GL_RESTART_SUN", 0x0001}, {"GL_REPLACE_MIDDLE_SUN", 0x0002}, {"GL_REPLACE_OLDEST_SUN", 0x0003}, {"GL_LAYOUT_DEFAULT_INTEL", 0}, {"GL_LAYOUT_LINEAR_INTEL", 1}, {"GL_LAYOUT_LINEAR_CPU_CACHED_INTEL", 2}, {"GL_NEXT_BUFFER_NV", -2}, {"GL_SKIP_COMPONENTS4_NV", -3}, {"GL_SKIP_COMPONENTS3_NV", -4}, {"GL_SKIP_COMPONENTS2_NV", -5}, {"GL_SKIP_COMPONENTS1_NV", -6}, {"GL_CLOSE_PATH_NV", 0x00}, {"GL_MOVE_TO_NV", 0x02}, {"GL_RELATIVE_MOVE_TO_NV", 0x03}, {"GL_LINE_TO_NV", 0x04}, {"GL_RELATIVE_LINE_TO_NV", 0x05}, {"GL_HORIZONTAL_LINE_TO_NV", 0x06}, {"GL_RELATIVE_HORIZONTAL_LINE_TO_NV", 0x07}, {"GL_VERTICAL_LINE_TO_NV", 0x08}, {"GL_RELATIVE_VERTICAL_LINE_TO_NV", 0x09}, {"GL_QUADRATIC_CURVE_TO_NV", 0x0A}, {"GL_RELATIVE_QUADRATIC_CURVE_TO_NV", 0x0B}, {"GL_CUBIC_CURVE_TO_NV", 0x0C}, {"GL_RELATIVE_CUBIC_CURVE_TO_NV", 0x0D}, {"GL_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0E}, {"GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV", 0x0F}, {"GL_SMOOTH_CUBIC_CURVE_TO_NV", 0x10}, {"GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV", 0x11}, {"GL_SMALL_CCW_ARC_TO_NV", 0x12}, {"GL_RELATIVE_SMALL_CCW_ARC_TO_NV", 0x13}, {"GL_SMALL_CW_ARC_TO_NV", 0x14}, {"GL_RELATIVE_SMALL_CW_ARC_TO_NV", 0x15}, {"GL_LARGE_CCW_ARC_TO_NV", 0x16}, {"GL_RELATIVE_LARGE_CCW_ARC_TO_NV", 0x17}, {"GL_LARGE_CW_ARC_TO_NV", 0x18}, {"GL_RELATIVE_LARGE_CW_ARC_TO_NV", 0x19}, {"GL_RESTART_PATH_NV", 0xF0}, {"GL_DUP_FIRST_CUBIC_CURVE_TO_NV", 0xF2}, {"GL_DUP_LAST_CUBIC_CURVE_TO_NV", 0xF4}, {"GL_RECT_NV", 0xF6}, {"GL_CIRCULAR_CCW_ARC_TO_NV", 0xF8}, {"GL_CIRCULAR_CW_ARC_TO_NV", 0xFA}, {"GL_CIRCULAR_TANGENT_ARC_TO_NV", 0xFC}, {"GL_ARC_TO_NV", 0xFE}, {"GL_RELATIVE_ARC_TO_NV", 0xFF}, {"GL_FALSE", 0}, {"GL_NO_ERROR", 0}, {"GL_ZERO", 0}, {"GL_NONE", 0}, {"GL_NONE_OES", 0}, {"GL_TRUE", 1}, {"GL_ONE", 1}, {"GL_VERSION_ES_CL_1_0", 1}, {"GL_VERSION_ES_CM_1_1", 1}, {"GL_VERSION_ES_CL_1_1", 1}, {"GL_POINTS", 0x0000}, {"GL_LINES", 0x0001}, {"GL_LINE_LOOP", 0x0002}, {"GL_LINE_STRIP", 0x0003}, {"GL_TRIANGLES", 0x0004}, {"GL_TRIANGLE_STRIP", 0x0005}, {"GL_TRIANGLE_FAN", 0x0006}, {"GL_QUADS", 0x0007}, {"GL_QUAD_STRIP", 0x0008}, {"GL_POLYGON", 0x0009}, {"GL_LINES_ADJACENCY", 0x000A}, {"GL_LINES_ADJACENCY_ARB", 0x000A}, {"GL_LINES_ADJACENCY_EXT", 0x000A}, {"GL_LINE_STRIP_ADJACENCY", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_ARB", 0x000B}, {"GL_LINE_STRIP_ADJACENCY_EXT", 0x000B}, {"GL_TRIANGLES_ADJACENCY", 0x000C}, {"GL_TRIANGLES_ADJACENCY_ARB", 0x000C}, {"GL_TRIANGLES_ADJACENCY_EXT", 0x000C}, {"GL_TRIANGLE_STRIP_ADJACENCY", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_ARB", 0x000D}, {"GL_TRIANGLE_STRIP_ADJACENCY_EXT", 0x000D}, {"GL_PATCHES", 0x000E}, {"GL_ACCUM", 0x0100}, {"GL_LOAD", 0x0101}, {"GL_RETURN", 0x0102}, {"GL_MULT", 0x0103}, {"GL_ADD", 0x0104}, {"GL_NEVER", 0x0200}, {"GL_LESS", 0x0201}, {"GL_EQUAL", 0x0202}, {"GL_LEQUAL", 0x0203}, {"GL_GREATER", 0x0204}, {"GL_NOTEQUAL", 0x0205}, {"GL_GEQUAL", 0x0206}, {"GL_ALWAYS", 0x0207}, {"GL_SRC_COLOR", 0x0300}, {"GL_ONE_MINUS_SRC_COLOR", 0x0301}, {"GL_SRC_ALPHA", 0x0302}, {"GL_ONE_MINUS_SRC_ALPHA", 0x0303}, {"GL_DST_ALPHA", 0x0304}, {"GL_ONE_MINUS_DST_ALPHA", 0x0305}, {"GL_DST_COLOR", 0x0306}, {"GL_ONE_MINUS_DST_COLOR", 0x0307}, {"GL_SRC_ALPHA_SATURATE", 0x0308}, {"GL_FRONT_LEFT", 0x0400}, {"GL_FRONT_RIGHT", 0x0401}, {"GL_BACK_LEFT", 0x0402}, {"GL_BACK_RIGHT", 0x0403}, {"GL_FRONT", 0x0404}, {"GL_BACK", 0x0405}, {"GL_LEFT", 0x0406}, {"GL_RIGHT", 0x0407}, {"GL_FRONT_AND_BACK", 0x0408}, {"GL_AUX0", 0x0409}, {"GL_AUX1", 0x040A}, {"GL_AUX2", 0x040B}, {"GL_AUX3", 0x040C}, {"GL_INVALID_ENUM", 0x0500}, {"GL_INVALID_VALUE", 0x0501}, {"GL_INVALID_OPERATION", 0x0502}, {"GL_STACK_OVERFLOW", 0x0503}, {"GL_STACK_OVERFLOW_KHR", 0x0503}, {"GL_STACK_UNDERFLOW", 0x0504}, {"GL_STACK_UNDERFLOW_KHR", 0x0504}, {"GL_OUT_OF_MEMORY", 0x0505}, {"GL_INVALID_FRAMEBUFFER_OPERATION", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_EXT", 0x0506}, {"GL_INVALID_FRAMEBUFFER_OPERATION_OES", 0x0506}, {"GL_2D", 0x0600}, {"GL_3D", 0x0601}, {"GL_3D_COLOR", 0x0602}, {"GL_3D_COLOR_TEXTURE", 0x0603}, {"GL_4D_COLOR_TEXTURE", 0x0604}, {"GL_PASS_THROUGH_TOKEN", 0x0700}, {"GL_POINT_TOKEN", 0x0701}, {"GL_LINE_TOKEN", 0x0702}, {"GL_POLYGON_TOKEN", 0x0703}, {"GL_BITMAP_TOKEN", 0x0704}, {"GL_DRAW_PIXEL_TOKEN", 0x0705}, {"GL_COPY_PIXEL_TOKEN", 0x0706}, {"GL_LINE_RESET_TOKEN", 0x0707}, {"GL_EXP", 0x0800}, {"GL_EXP2", 0x0801}, {"GL_CW", 0x0900}, {"GL_CCW", 0x0901}, {"GL_COEFF", 0x0A00}, {"GL_ORDER", 0x0A01}, {"GL_DOMAIN", 0x0A02}, {"GL_CURRENT_COLOR", 0x0B00}, {"GL_CURRENT_INDEX", 0x0B01}, {"GL_CURRENT_NORMAL", 0x0B02}, {"GL_CURRENT_TEXTURE_COORDS", 0x0B03}, {"GL_CURRENT_RASTER_COLOR", 0x0B04}, {"GL_CURRENT_RASTER_INDEX", 0x0B05}, {"GL_CURRENT_RASTER_TEXTURE_COORDS", 0x0B06}, {"GL_CURRENT_RASTER_POSITION", 0x0B07}, {"GL_CURRENT_RASTER_POSITION_VALID", 0x0B08}, {"GL_CURRENT_RASTER_DISTANCE", 0x0B09}, {"GL_POINT_SMOOTH", 0x0B10}, {"GL_POINT_SIZE", 0x0B11}, {"GL_POINT_SIZE_RANGE", 0x0B12}, {"GL_SMOOTH_POINT_SIZE_RANGE", 0x0B12}, {"GL_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_SMOOTH_POINT_SIZE_GRANULARITY", 0x0B13}, {"GL_LINE_SMOOTH", 0x0B20}, {"GL_LINE_WIDTH", 0x0B21}, {"GL_LINE_WIDTH_RANGE", 0x0B22}, {"GL_SMOOTH_LINE_WIDTH_RANGE", 0x0B22}, {"GL_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_SMOOTH_LINE_WIDTH_GRANULARITY", 0x0B23}, {"GL_LINE_STIPPLE", 0x0B24}, {"GL_LINE_STIPPLE_PATTERN", 0x0B25}, {"GL_LINE_STIPPLE_REPEAT", 0x0B26}, {"GL_LIST_MODE", 0x0B30}, {"GL_MAX_LIST_NESTING", 0x0B31}, {"GL_LIST_BASE", 0x0B32}, {"GL_LIST_INDEX", 0x0B33}, {"GL_POLYGON_MODE", 0x0B40}, {"GL_POLYGON_SMOOTH", 0x0B41}, {"GL_POLYGON_STIPPLE", 0x0B42}, {"GL_EDGE_FLAG", 0x0B43}, {"GL_CULL_FACE", 0x0B44}, {"GL_CULL_FACE_MODE", 0x0B45}, {"GL_FRONT_FACE", 0x0B46}, {"GL_LIGHTING", 0x0B50}, {"GL_LIGHT_MODEL_LOCAL_VIEWER", 0x0B51}, {"GL_LIGHT_MODEL_TWO_SIDE", 0x0B52}, {"GL_LIGHT_MODEL_AMBIENT", 0x0B53}, {"GL_SHADE_MODEL", 0x0B54}, {"GL_COLOR_MATERIAL_FACE", 0x0B55}, {"GL_COLOR_MATERIAL_PARAMETER", 0x0B56}, {"GL_COLOR_MATERIAL", 0x0B57}, {"GL_FOG", 0x0B60}, {"GL_FOG_INDEX", 0x0B61}, {"GL_FOG_DENSITY", 0x0B62}, {"GL_FOG_START", 0x0B63}, {"GL_FOG_END", 0x0B64}, {"GL_FOG_MODE", 0x0B65}, {"GL_FOG_COLOR", 0x0B66}, {"GL_DEPTH_RANGE", 0x0B70}, {"GL_DEPTH_TEST", 0x0B71}, {"GL_DEPTH_WRITEMASK", 0x0B72}, {"GL_DEPTH_CLEAR_VALUE", 0x0B73}, {"GL_DEPTH_FUNC", 0x0B74}, {"GL_ACCUM_CLEAR_VALUE", 0x0B80}, {"GL_STENCIL_TEST", 0x0B90}, {"GL_STENCIL_CLEAR_VALUE", 0x0B91}, {"GL_STENCIL_FUNC", 0x0B92}, {"GL_STENCIL_VALUE_MASK", 0x0B93}, {"GL_STENCIL_FAIL", 0x0B94}, {"GL_STENCIL_PASS_DEPTH_FAIL", 0x0B95}, {"GL_STENCIL_PASS_DEPTH_PASS", 0x0B96}, {"GL_STENCIL_REF", 0x0B97}, {"GL_STENCIL_WRITEMASK", 0x0B98}, {"GL_MATRIX_MODE", 0x0BA0}, {"GL_NORMALIZE", 0x0BA1}, {"GL_VIEWPORT", 0x0BA2}, {"GL_MODELVIEW_STACK_DEPTH", 0x0BA3}, {"GL_MODELVIEW0_STACK_DEPTH_EXT", 0x0BA3}, {"GL_PROJECTION_STACK_DEPTH", 0x0BA4}, {"GL_TEXTURE_STACK_DEPTH", 0x0BA5}, {"GL_MODELVIEW_MATRIX", 0x0BA6}, {"GL_MODELVIEW0_MATRIX_EXT", 0x0BA6}, {"GL_PROJECTION_MATRIX", 0x0BA7}, {"GL_TEXTURE_MATRIX", 0x0BA8}, {"GL_ATTRIB_STACK_DEPTH", 0x0BB0}, {"GL_CLIENT_ATTRIB_STACK_DEPTH", 0x0BB1}, {"GL_ALPHA_TEST", 0x0BC0}, {"GL_ALPHA_TEST_QCOM", 0x0BC0}, {"GL_ALPHA_TEST_FUNC", 0x0BC1}, {"GL_ALPHA_TEST_FUNC_QCOM", 0x0BC1}, {"GL_ALPHA_TEST_REF", 0x0BC2}, {"GL_ALPHA_TEST_REF_QCOM", 0x0BC2}, {"GL_DITHER", 0x0BD0}, {"GL_BLEND_DST", 0x0BE0}, {"GL_BLEND_SRC", 0x0BE1}, {"GL_BLEND", 0x0BE2}, {"GL_LOGIC_OP_MODE", 0x0BF0}, {"GL_INDEX_LOGIC_OP", 0x0BF1}, {"GL_LOGIC_OP", 0x0BF1}, {"GL_COLOR_LOGIC_OP", 0x0BF2}, {"GL_AUX_BUFFERS", 0x0C00}, {"GL_DRAW_BUFFER", 0x0C01}, {"GL_DRAW_BUFFER_EXT", 0x0C01}, {"GL_READ_BUFFER", 0x0C02}, {"GL_READ_BUFFER_EXT", 0x0C02}, {"GL_READ_BUFFER_NV", 0x0C02}, {"GL_SCISSOR_BOX", 0x0C10}, {"GL_SCISSOR_TEST", 0x0C11}, {"GL_INDEX_CLEAR_VALUE", 0x0C20}, {"GL_INDEX_WRITEMASK", 0x0C21}, {"GL_COLOR_CLEAR_VALUE", 0x0C22}, {"GL_COLOR_WRITEMASK", 0x0C23}, {"GL_INDEX_MODE", 0x0C30}, {"GL_RGBA_MODE", 0x0C31}, {"GL_DOUBLEBUFFER", 0x0C32}, {"GL_STEREO", 0x0C33}, {"GL_RENDER_MODE", 0x0C40}, {"GL_PERSPECTIVE_CORRECTION_HINT", 0x0C50}, {"GL_POINT_SMOOTH_HINT", 0x0C51}, {"GL_LINE_SMOOTH_HINT", 0x0C52}, {"GL_POLYGON_SMOOTH_HINT", 0x0C53}, {"GL_FOG_HINT", 0x0C54}, {"GL_TEXTURE_GEN_S", 0x0C60}, {"GL_TEXTURE_GEN_T", 0x0C61}, {"GL_TEXTURE_GEN_R", 0x0C62}, {"GL_TEXTURE_GEN_Q", 0x0C63}, {"GL_PIXEL_MAP_I_TO_I", 0x0C70}, {"GL_PIXEL_MAP_S_TO_S", 0x0C71}, {"GL_PIXEL_MAP_I_TO_R", 0x0C72}, {"GL_PIXEL_MAP_I_TO_G", 0x0C73}, {"GL_PIXEL_MAP_I_TO_B", 0x0C74}, {"GL_PIXEL_MAP_I_TO_A", 0x0C75}, {"GL_PIXEL_MAP_R_TO_R", 0x0C76}, {"GL_PIXEL_MAP_G_TO_G", 0x0C77}, {"GL_PIXEL_MAP_B_TO_B", 0x0C78}, {"GL_PIXEL_MAP_A_TO_A", 0x0C79}, {"GL_PIXEL_MAP_I_TO_I_SIZE", 0x0CB0}, {"GL_PIXEL_MAP_S_TO_S_SIZE", 0x0CB1}, {"GL_PIXEL_MAP_I_TO_R_SIZE", 0x0CB2}, {"GL_PIXEL_MAP_I_TO_G_SIZE", 0x0CB3}, {"GL_PIXEL_MAP_I_TO_B_SIZE", 0x0CB4}, {"GL_PIXEL_MAP_I_TO_A_SIZE", 0x0CB5}, {"GL_PIXEL_MAP_R_TO_R_SIZE", 0x0CB6}, {"GL_PIXEL_MAP_G_TO_G_SIZE", 0x0CB7}, {"GL_PIXEL_MAP_B_TO_B_SIZE", 0x0CB8}, {"GL_PIXEL_MAP_A_TO_A_SIZE", 0x0CB9}, {"GL_UNPACK_SWAP_BYTES", 0x0CF0}, {"GL_UNPACK_LSB_FIRST", 0x0CF1}, {"GL_UNPACK_ROW_LENGTH", 0x0CF2}, {"GL_UNPACK_ROW_LENGTH_EXT", 0x0CF2}, {"GL_UNPACK_SKIP_ROWS", 0x0CF3}, {"GL_UNPACK_SKIP_ROWS_EXT", 0x0CF3}, {"GL_UNPACK_SKIP_PIXELS", 0x0CF4}, {"GL_UNPACK_SKIP_PIXELS_EXT", 0x0CF4}, {"GL_UNPACK_ALIGNMENT", 0x0CF5}, {"GL_PACK_SWAP_BYTES", 0x0D00}, {"GL_PACK_LSB_FIRST", 0x0D01}, {"GL_PACK_ROW_LENGTH", 0x0D02}, {"GL_PACK_SKIP_ROWS", 0x0D03}, {"GL_PACK_SKIP_PIXELS", 0x0D04}, {"GL_PACK_ALIGNMENT", 0x0D05}, {"GL_MAP_COLOR", 0x0D10}, {"GL_MAP_STENCIL", 0x0D11}, {"GL_INDEX_SHIFT", 0x0D12}, {"GL_INDEX_OFFSET", 0x0D13}, {"GL_RED_SCALE", 0x0D14}, {"GL_RED_BIAS", 0x0D15}, {"GL_ZOOM_X", 0x0D16}, {"GL_ZOOM_Y", 0x0D17}, {"GL_GREEN_SCALE", 0x0D18}, {"GL_GREEN_BIAS", 0x0D19}, {"GL_BLUE_SCALE", 0x0D1A}, {"GL_BLUE_BIAS", 0x0D1B}, {"GL_ALPHA_SCALE", 0x0D1C}, {"GL_ALPHA_BIAS", 0x0D1D}, {"GL_DEPTH_SCALE", 0x0D1E}, {"GL_DEPTH_BIAS", 0x0D1F}, {"GL_MAX_EVAL_ORDER", 0x0D30}, {"GL_MAX_LIGHTS", 0x0D31}, {"GL_MAX_CLIP_PLANES", 0x0D32}, {"GL_MAX_CLIP_DISTANCES", 0x0D32}, {"GL_MAX_TEXTURE_SIZE", 0x0D33}, {"GL_MAX_PIXEL_MAP_TABLE", 0x0D34}, {"GL_MAX_ATTRIB_STACK_DEPTH", 0x0D35}, {"GL_MAX_MODELVIEW_STACK_DEPTH", 0x0D36}, {"GL_MAX_NAME_STACK_DEPTH", 0x0D37}, {"GL_MAX_PROJECTION_STACK_DEPTH", 0x0D38}, {"GL_MAX_TEXTURE_STACK_DEPTH", 0x0D39}, {"GL_MAX_VIEWPORT_DIMS", 0x0D3A}, {"GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", 0x0D3B}, {"GL_SUBPIXEL_BITS", 0x0D50}, {"GL_INDEX_BITS", 0x0D51}, {"GL_RED_BITS", 0x0D52}, {"GL_GREEN_BITS", 0x0D53}, {"GL_BLUE_BITS", 0x0D54}, {"GL_ALPHA_BITS", 0x0D55}, {"GL_DEPTH_BITS", 0x0D56}, {"GL_STENCIL_BITS", 0x0D57}, {"GL_ACCUM_RED_BITS", 0x0D58}, {"GL_ACCUM_GREEN_BITS", 0x0D59}, {"GL_ACCUM_BLUE_BITS", 0x0D5A}, {"GL_ACCUM_ALPHA_BITS", 0x0D5B}, {"GL_NAME_STACK_DEPTH", 0x0D70}, {"GL_AUTO_NORMAL", 0x0D80}, {"GL_MAP1_COLOR_4", 0x0D90}, {"GL_MAP1_INDEX", 0x0D91}, {"GL_MAP1_NORMAL", 0x0D92}, {"GL_MAP1_TEXTURE_COORD_1", 0x0D93}, {"GL_MAP1_TEXTURE_COORD_2", 0x0D94}, {"GL_MAP1_TEXTURE_COORD_3", 0x0D95}, {"GL_MAP1_TEXTURE_COORD_4", 0x0D96}, {"GL_MAP1_VERTEX_3", 0x0D97}, {"GL_MAP1_VERTEX_4", 0x0D98}, {"GL_MAP2_COLOR_4", 0x0DB0}, {"GL_MAP2_INDEX", 0x0DB1}, {"GL_MAP2_NORMAL", 0x0DB2}, {"GL_MAP2_TEXTURE_COORD_1", 0x0DB3}, {"GL_MAP2_TEXTURE_COORD_2", 0x0DB4}, {"GL_MAP2_TEXTURE_COORD_3", 0x0DB5}, {"GL_MAP2_TEXTURE_COORD_4", 0x0DB6}, {"GL_MAP2_VERTEX_3", 0x0DB7}, {"GL_MAP2_VERTEX_4", 0x0DB8}, {"GL_MAP1_GRID_DOMAIN", 0x0DD0}, {"GL_MAP1_GRID_SEGMENTS", 0x0DD1}, {"GL_MAP2_GRID_DOMAIN", 0x0DD2}, {"GL_MAP2_GRID_SEGMENTS", 0x0DD3}, {"GL_TEXTURE_1D", 0x0DE0}, {"GL_TEXTURE_2D", 0x0DE1}, {"GL_FEEDBACK_BUFFER_POINTER", 0x0DF0}, {"GL_FEEDBACK_BUFFER_SIZE", 0x0DF1}, {"GL_FEEDBACK_BUFFER_TYPE", 0x0DF2}, {"GL_SELECTION_BUFFER_POINTER", 0x0DF3}, {"GL_SELECTION_BUFFER_SIZE", 0x0DF4}, {"GL_TEXTURE_WIDTH", 0x1000}, {"GL_TEXTURE_HEIGHT", 0x1001}, {"GL_TEXTURE_INTERNAL_FORMAT", 0x1003}, {"GL_TEXTURE_COMPONENTS", 0x1003}, {"GL_TEXTURE_BORDER_COLOR", 0x1004}, {"GL_TEXTURE_BORDER_COLOR_NV", 0x1004}, {"GL_TEXTURE_BORDER", 0x1005}, {"GL_DONT_CARE", 0x1100}, {"GL_FASTEST", 0x1101}, {"GL_NICEST", 0x1102}, {"GL_AMBIENT", 0x1200}, {"GL_DIFFUSE", 0x1201}, {"GL_SPECULAR", 0x1202}, {"GL_POSITION", 0x1203}, {"GL_SPOT_DIRECTION", 0x1204}, {"GL_SPOT_EXPONENT", 0x1205}, {"GL_SPOT_CUTOFF", 0x1206}, {"GL_CONSTANT_ATTENUATION", 0x1207}, {"GL_LINEAR_ATTENUATION", 0x1208}, {"GL_QUADRATIC_ATTENUATION", 0x1209}, {"GL_COMPILE", 0x1300}, {"GL_COMPILE_AND_EXECUTE", 0x1301}, {"GL_BYTE", 0x1400}, {"GL_UNSIGNED_BYTE", 0x1401}, {"GL_SHORT", 0x1402}, {"GL_UNSIGNED_SHORT", 0x1403}, {"GL_INT", 0x1404}, {"GL_UNSIGNED_INT", 0x1405}, {"GL_FLOAT", 0x1406}, {"GL_2_BYTES", 0x1407}, {"GL_3_BYTES", 0x1408}, {"GL_4_BYTES", 0x1409}, {"GL_DOUBLE", 0x140A}, {"GL_DOUBLE_EXT", 0x140A}, {"GL_HALF_FLOAT", 0x140B}, {"GL_HALF_FLOAT_ARB", 0x140B}, {"GL_HALF_FLOAT_NV", 0x140B}, {"GL_HALF_APPLE", 0x140B}, {"GL_FIXED", 0x140C}, {"GL_FIXED_OES", 0x140C}, {"GL_INT64_NV", 0x140E}, {"GL_UNSIGNED_INT64_ARB", 0x140F}, {"GL_UNSIGNED_INT64_NV", 0x140F}, {"GL_CLEAR", 0x1500}, {"GL_AND", 0x1501}, {"GL_AND_REVERSE", 0x1502}, {"GL_COPY", 0x1503}, {"GL_AND_INVERTED", 0x1504}, {"GL_NOOP", 0x1505}, {"GL_XOR", 0x1506}, {"GL_OR", 0x1507}, {"GL_NOR", 0x1508}, {"GL_EQUIV", 0x1509}, {"GL_INVERT", 0x150A}, {"GL_OR_REVERSE", 0x150B}, {"GL_COPY_INVERTED", 0x150C}, {"GL_OR_INVERTED", 0x150D}, {"GL_NAND", 0x150E}, {"GL_SET", 0x150F}, {"GL_EMISSION", 0x1600}, {"GL_SHININESS", 0x1601}, {"GL_AMBIENT_AND_DIFFUSE", 0x1602}, {"GL_COLOR_INDEXES", 0x1603}, {"GL_MODELVIEW", 0x1700}, {"GL_MODELVIEW0_ARB", 0x1700}, {"GL_MODELVIEW0_EXT", 0x1700}, {"GL_PROJECTION", 0x1701}, {"GL_TEXTURE", 0x1702}, {"GL_COLOR", 0x1800}, {"GL_COLOR_EXT", 0x1800}, {"GL_DEPTH", 0x1801}, {"GL_DEPTH_EXT", 0x1801}, {"GL_STENCIL", 0x1802}, {"GL_STENCIL_EXT", 0x1802}, {"GL_COLOR_INDEX", 0x1900}, {"GL_STENCIL_INDEX", 0x1901}, {"GL_DEPTH_COMPONENT", 0x1902}, {"GL_RED", 0x1903}, {"GL_RED_EXT", 0x1903}, {"GL_GREEN", 0x1904}, {"GL_BLUE", 0x1905}, {"GL_ALPHA", 0x1906}, {"GL_RGB", 0x1907}, {"GL_RGBA", 0x1908}, {"GL_LUMINANCE", 0x1909}, {"GL_LUMINANCE_ALPHA", 0x190A}, {"GL_BITMAP", 0x1A00}, {"GL_POINT", 0x1B00}, {"GL_LINE", 0x1B01}, {"GL_FILL", 0x1B02}, {"GL_RENDER", 0x1C00}, {"GL_FEEDBACK", 0x1C01}, {"GL_SELECT", 0x1C02}, {"GL_FLAT", 0x1D00}, {"GL_SMOOTH", 0x1D01}, {"GL_KEEP", 0x1E00}, {"GL_REPLACE", 0x1E01}, {"GL_INCR", 0x1E02}, {"GL_DECR", 0x1E03}, {"GL_VENDOR", 0x1F00}, {"GL_RENDERER", 0x1F01}, {"GL_VERSION", 0x1F02}, {"GL_EXTENSIONS", 0x1F03}, {"GL_S", 0x2000}, {"GL_T", 0x2001}, {"GL_R", 0x2002}, {"GL_Q", 0x2003}, {"GL_MODULATE", 0x2100}, {"GL_DECAL", 0x2101}, {"GL_TEXTURE_ENV_MODE", 0x2200}, {"GL_TEXTURE_ENV_COLOR", 0x2201}, {"GL_TEXTURE_ENV", 0x2300}, {"GL_EYE_LINEAR", 0x2400}, {"GL_OBJECT_LINEAR", 0x2401}, {"GL_SPHERE_MAP", 0x2402}, {"GL_TEXTURE_GEN_MODE", 0x2500}, {"GL_OBJECT_PLANE", 0x2501}, {"GL_EYE_PLANE", 0x2502}, {"GL_NEAREST", 0x2600}, {"GL_LINEAR", 0x2601}, {"GL_NEAREST_MIPMAP_NEAREST", 0x2700}, {"GL_LINEAR_MIPMAP_NEAREST", 0x2701}, {"GL_NEAREST_MIPMAP_LINEAR", 0x2702}, {"GL_LINEAR_MIPMAP_LINEAR", 0x2703}, {"GL_TEXTURE_MAG_FILTER", 0x2800}, {"GL_TEXTURE_MIN_FILTER", 0x2801}, {"GL_TEXTURE_WRAP_S", 0x2802}, {"GL_TEXTURE_WRAP_T", 0x2803}, {"GL_CLAMP", 0x2900}, {"GL_REPEAT", 0x2901}, {"GL_POLYGON_OFFSET_UNITS", 0x2A00}, {"GL_POLYGON_OFFSET_POINT", 0x2A01}, {"GL_POLYGON_OFFSET_LINE", 0x2A02}, {"GL_R3_G3_B2", 0x2A10}, {"GL_V2F", 0x2A20}, {"GL_V3F", 0x2A21}, {"GL_C4UB_V2F", 0x2A22}, {"GL_C4UB_V3F", 0x2A23}, {"GL_C3F_V3F", 0x2A24}, {"GL_N3F_V3F", 0x2A25}, {"GL_C4F_N3F_V3F", 0x2A26}, {"GL_T2F_V3F", 0x2A27}, {"GL_T4F_V4F", 0x2A28}, {"GL_T2F_C4UB_V3F", 0x2A29}, {"GL_T2F_C3F_V3F", 0x2A2A}, {"GL_T2F_N3F_V3F", 0x2A2B}, {"GL_T2F_C4F_N3F_V3F", 0x2A2C}, {"GL_T4F_C4F_N3F_V4F", 0x2A2D}, {"GL_CLIP_PLANE0", 0x3000}, {"GL_CLIP_DISTANCE0", 0x3000}, {"GL_CLIP_PLANE1", 0x3001}, {"GL_CLIP_DISTANCE1", 0x3001}, {"GL_CLIP_PLANE2", 0x3002}, {"GL_CLIP_DISTANCE2", 0x3002}, {"GL_CLIP_PLANE3", 0x3003}, {"GL_CLIP_DISTANCE3", 0x3003}, {"GL_CLIP_PLANE4", 0x3004}, {"GL_CLIP_DISTANCE4", 0x3004}, {"GL_CLIP_PLANE5", 0x3005}, {"GL_CLIP_DISTANCE5", 0x3005}, {"GL_CLIP_DISTANCE6", 0x3006}, {"GL_CLIP_DISTANCE7", 0x3007}, {"GL_LIGHT0", 0x4000}, {"GL_LIGHT1", 0x4001}, {"GL_LIGHT2", 0x4002}, {"GL_LIGHT3", 0x4003}, {"GL_LIGHT4", 0x4004}, {"GL_LIGHT5", 0x4005}, {"GL_LIGHT6", 0x4006}, {"GL_LIGHT7", 0x4007}, {"GL_ABGR_EXT", 0x8000}, {"GL_CONSTANT_COLOR", 0x8001}, {"GL_CONSTANT_COLOR_EXT", 0x8001}, {"GL_ONE_MINUS_CONSTANT_COLOR", 0x8002}, {"GL_ONE_MINUS_CONSTANT_COLOR_EXT", 0x8002}, {"GL_CONSTANT_ALPHA", 0x8003}, {"GL_CONSTANT_ALPHA_EXT", 0x8003}, {"GL_ONE_MINUS_CONSTANT_ALPHA", 0x8004}, {"GL_ONE_MINUS_CONSTANT_ALPHA_EXT", 0x8004}, {"GL_BLEND_COLOR", 0x8005}, {"GL_BLEND_COLOR_EXT", 0x8005}, {"GL_FUNC_ADD", 0x8006}, {"GL_FUNC_ADD_EXT", 0x8006}, {"GL_FUNC_ADD_OES", 0x8006}, {"GL_MIN", 0x8007}, {"GL_MIN_EXT", 0x8007}, {"GL_MAX", 0x8008}, {"GL_MAX_EXT", 0x8008}, {"GL_BLEND_EQUATION", 0x8009}, {"GL_BLEND_EQUATION_EXT", 0x8009}, {"GL_BLEND_EQUATION_OES", 0x8009}, {"GL_BLEND_EQUATION_RGB", 0x8009}, {"GL_BLEND_EQUATION_RGB_EXT", 0x8009}, {"GL_BLEND_EQUATION_RGB_OES", 0x8009}, {"GL_FUNC_SUBTRACT", 0x800A}, {"GL_FUNC_SUBTRACT_EXT", 0x800A}, {"GL_FUNC_SUBTRACT_OES", 0x800A}, {"GL_FUNC_REVERSE_SUBTRACT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_EXT", 0x800B}, {"GL_FUNC_REVERSE_SUBTRACT_OES", 0x800B}, {"GL_CMYK_EXT", 0x800C}, {"GL_CMYKA_EXT", 0x800D}, {"GL_PACK_CMYK_HINT_EXT", 0x800E}, {"GL_UNPACK_CMYK_HINT_EXT", 0x800F}, {"GL_CONVOLUTION_1D", 0x8010}, {"GL_CONVOLUTION_1D_EXT", 0x8010}, {"GL_CONVOLUTION_2D", 0x8011}, {"GL_CONVOLUTION_2D_EXT", 0x8011}, {"GL_SEPARABLE_2D", 0x8012}, {"GL_SEPARABLE_2D_EXT", 0x8012}, {"GL_CONVOLUTION_BORDER_MODE", 0x8013}, {"GL_CONVOLUTION_BORDER_MODE_EXT", 0x8013}, {"GL_CONVOLUTION_FILTER_SCALE", 0x8014}, {"GL_CONVOLUTION_FILTER_SCALE_EXT", 0x8014}, {"GL_CONVOLUTION_FILTER_BIAS", 0x8015}, {"GL_CONVOLUTION_FILTER_BIAS_EXT", 0x8015}, {"GL_REDUCE", 0x8016}, {"GL_REDUCE_EXT", 0x8016}, {"GL_CONVOLUTION_FORMAT", 0x8017}, {"GL_CONVOLUTION_FORMAT_EXT", 0x8017}, {"GL_CONVOLUTION_WIDTH", 0x8018}, {"GL_CONVOLUTION_WIDTH_EXT", 0x8018}, {"GL_CONVOLUTION_HEIGHT", 0x8019}, {"GL_CONVOLUTION_HEIGHT_EXT", 0x8019}, {"GL_MAX_CONVOLUTION_WIDTH", 0x801A}, {"GL_MAX_CONVOLUTION_WIDTH_EXT", 0x801A}, {"GL_MAX_CONVOLUTION_HEIGHT", 0x801B}, {"GL_MAX_CONVOLUTION_HEIGHT_EXT", 0x801B}, {"GL_POST_CONVOLUTION_RED_SCALE", 0x801C}, {"GL_POST_CONVOLUTION_RED_SCALE_EXT", 0x801C}, {"GL_POST_CONVOLUTION_GREEN_SCALE", 0x801D}, {"GL_POST_CONVOLUTION_GREEN_SCALE_EXT", 0x801D}, {"GL_POST_CONVOLUTION_BLUE_SCALE", 0x801E}, {"GL_POST_CONVOLUTION_BLUE_SCALE_EXT", 0x801E}, {"GL_POST_CONVOLUTION_ALPHA_SCALE", 0x801F}, {"GL_POST_CONVOLUTION_ALPHA_SCALE_EXT", 0x801F}, {"GL_POST_CONVOLUTION_RED_BIAS", 0x8020}, {"GL_POST_CONVOLUTION_RED_BIAS_EXT", 0x8020}, {"GL_POST_CONVOLUTION_GREEN_BIAS", 0x8021}, {"GL_POST_CONVOLUTION_GREEN_BIAS_EXT", 0x8021}, {"GL_POST_CONVOLUTION_BLUE_BIAS", 0x8022}, {"GL_POST_CONVOLUTION_BLUE_BIAS_EXT", 0x8022}, {"GL_POST_CONVOLUTION_ALPHA_BIAS", 0x8023}, {"GL_POST_CONVOLUTION_ALPHA_BIAS_EXT", 0x8023}, {"GL_HISTOGRAM", 0x8024}, {"GL_HISTOGRAM_EXT", 0x8024}, {"GL_PROXY_HISTOGRAM", 0x8025}, {"GL_PROXY_HISTOGRAM_EXT", 0x8025}, {"GL_HISTOGRAM_WIDTH", 0x8026}, {"GL_HISTOGRAM_WIDTH_EXT", 0x8026}, {"GL_HISTOGRAM_FORMAT", 0x8027}, {"GL_HISTOGRAM_FORMAT_EXT", 0x8027}, {"GL_HISTOGRAM_RED_SIZE", 0x8028}, {"GL_HISTOGRAM_RED_SIZE_EXT", 0x8028}, {"GL_HISTOGRAM_GREEN_SIZE", 0x8029}, {"GL_HISTOGRAM_GREEN_SIZE_EXT", 0x8029}, {"GL_HISTOGRAM_BLUE_SIZE", 0x802A}, {"GL_HISTOGRAM_BLUE_SIZE_EXT", 0x802A}, {"GL_HISTOGRAM_ALPHA_SIZE", 0x802B}, {"GL_HISTOGRAM_ALPHA_SIZE_EXT", 0x802B}, {"GL_HISTOGRAM_LUMINANCE_SIZE", 0x802C}, {"GL_HISTOGRAM_LUMINANCE_SIZE_EXT", 0x802C}, {"GL_HISTOGRAM_SINK", 0x802D}, {"GL_HISTOGRAM_SINK_EXT", 0x802D}, {"GL_MINMAX", 0x802E}, {"GL_MINMAX_EXT", 0x802E}, {"GL_MINMAX_FORMAT", 0x802F}, {"GL_MINMAX_FORMAT_EXT", 0x802F}, {"GL_MINMAX_SINK", 0x8030}, {"GL_MINMAX_SINK_EXT", 0x8030}, {"GL_TABLE_TOO_LARGE_EXT", 0x8031}, {"GL_TABLE_TOO_LARGE", 0x8031}, {"GL_UNSIGNED_BYTE_3_3_2", 0x8032}, {"GL_UNSIGNED_BYTE_3_3_2_EXT", 0x8032}, {"GL_UNSIGNED_SHORT_4_4_4_4", 0x8033}, {"GL_UNSIGNED_SHORT_4_4_4_4_EXT", 0x8033}, {"GL_UNSIGNED_SHORT_5_5_5_1", 0x8034}, {"GL_UNSIGNED_SHORT_5_5_5_1_EXT", 0x8034}, {"GL_UNSIGNED_INT_8_8_8_8", 0x8035}, {"GL_UNSIGNED_INT_8_8_8_8_EXT", 0x8035}, {"GL_UNSIGNED_INT_10_10_10_2", 0x8036}, {"GL_UNSIGNED_INT_10_10_10_2_EXT", 0x8036}, {"GL_POLYGON_OFFSET_EXT", 0x8037}, {"GL_POLYGON_OFFSET_FILL", 0x8037}, {"GL_POLYGON_OFFSET_FACTOR", 0x8038}, {"GL_POLYGON_OFFSET_FACTOR_EXT", 0x8038}, {"GL_POLYGON_OFFSET_BIAS_EXT", 0x8039}, {"GL_RESCALE_NORMAL", 0x803A}, {"GL_RESCALE_NORMAL_EXT", 0x803A}, {"GL_ALPHA4", 0x803B}, {"GL_ALPHA4_EXT", 0x803B}, {"GL_ALPHA8", 0x803C}, {"GL_ALPHA8_EXT", 0x803C}, {"GL_ALPHA12", 0x803D}, {"GL_ALPHA12_EXT", 0x803D}, {"GL_ALPHA16", 0x803E}, {"GL_ALPHA16_EXT", 0x803E}, {"GL_LUMINANCE4", 0x803F}, {"GL_LUMINANCE4_EXT", 0x803F}, {"GL_LUMINANCE8", 0x8040}, {"GL_LUMINANCE8_EXT", 0x8040}, {"GL_LUMINANCE12", 0x8041}, {"GL_LUMINANCE12_EXT", 0x8041}, {"GL_LUMINANCE16", 0x8042}, {"GL_LUMINANCE16_EXT", 0x8042}, {"GL_LUMINANCE4_ALPHA4", 0x8043}, {"GL_LUMINANCE4_ALPHA4_EXT", 0x8043}, {"GL_LUMINANCE6_ALPHA2", 0x8044}, {"GL_LUMINANCE6_ALPHA2_EXT", 0x8044}, {"GL_LUMINANCE8_ALPHA8", 0x8045}, {"GL_LUMINANCE8_ALPHA8_EXT", 0x8045}, {"GL_LUMINANCE12_ALPHA4", 0x8046}, {"GL_LUMINANCE12_ALPHA4_EXT", 0x8046}, {"GL_LUMINANCE12_ALPHA12", 0x8047}, {"GL_LUMINANCE12_ALPHA12_EXT", 0x8047}, {"GL_LUMINANCE16_ALPHA16", 0x8048}, {"GL_LUMINANCE16_ALPHA16_EXT", 0x8048}, {"GL_INTENSITY", 0x8049}, {"GL_INTENSITY_EXT", 0x8049}, {"GL_INTENSITY4", 0x804A}, {"GL_INTENSITY4_EXT", 0x804A}, {"GL_INTENSITY8", 0x804B}, {"GL_INTENSITY8_EXT", 0x804B}, {"GL_INTENSITY12", 0x804C}, {"GL_INTENSITY12_EXT", 0x804C}, {"GL_INTENSITY16", 0x804D}, {"GL_INTENSITY16_EXT", 0x804D}, {"GL_RGB2_EXT", 0x804E}, {"GL_RGB4", 0x804F}, {"GL_RGB4_EXT", 0x804F}, {"GL_RGB5", 0x8050}, {"GL_RGB5_EXT", 0x8050}, {"GL_RGB8", 0x8051}, {"GL_RGB8_EXT", 0x8051}, {"GL_RGB10", 0x8052}, {"GL_RGB10_EXT", 0x8052}, {"GL_RGB12", 0x8053}, {"GL_RGB12_EXT", 0x8053}, {"GL_RGB16", 0x8054}, {"GL_RGB16_EXT", 0x8054}, {"GL_RGBA2", 0x8055}, {"GL_RGBA2_EXT", 0x8055}, {"GL_RGBA4", 0x8056}, {"GL_RGBA4_EXT", 0x8056}, {"GL_RGBA4_OES", 0x8056}, {"GL_RGB5_A1", 0x8057}, {"GL_RGB5_A1_EXT", 0x8057}, {"GL_RGB5_A1_OES", 0x8057}, {"GL_RGBA8", 0x8058}, {"GL_RGBA8_EXT", 0x8058}, {"GL_RGBA8_OES", 0x8058}, {"GL_RGB10_A2", 0x8059}, {"GL_RGB10_A2_EXT", 0x8059}, {"GL_RGBA12", 0x805A}, {"GL_RGBA12_EXT", 0x805A}, {"GL_RGBA16", 0x805B}, {"GL_RGBA16_EXT", 0x805B}, {"GL_TEXTURE_RED_SIZE", 0x805C}, {"GL_TEXTURE_RED_SIZE_EXT", 0x805C}, {"GL_TEXTURE_GREEN_SIZE", 0x805D}, {"GL_TEXTURE_GREEN_SIZE_EXT", 0x805D}, {"GL_TEXTURE_BLUE_SIZE", 0x805E}, {"GL_TEXTURE_BLUE_SIZE_EXT", 0x805E}, {"GL_TEXTURE_ALPHA_SIZE", 0x805F}, {"GL_TEXTURE_ALPHA_SIZE_EXT", 0x805F}, {"GL_TEXTURE_LUMINANCE_SIZE", 0x8060}, {"GL_TEXTURE_LUMINANCE_SIZE_EXT", 0x8060}, {"GL_TEXTURE_INTENSITY_SIZE", 0x8061}, {"GL_TEXTURE_INTENSITY_SIZE_EXT", 0x8061}, {"GL_REPLACE_EXT", 0x8062}, {"GL_PROXY_TEXTURE_1D", 0x8063}, {"GL_PROXY_TEXTURE_1D_EXT", 0x8063}, {"GL_PROXY_TEXTURE_2D", 0x8064}, {"GL_PROXY_TEXTURE_2D_EXT", 0x8064}, {"GL_TEXTURE_TOO_LARGE_EXT", 0x8065}, {"GL_TEXTURE_PRIORITY", 0x8066}, {"GL_TEXTURE_PRIORITY_EXT", 0x8066}, {"GL_TEXTURE_RESIDENT", 0x8067}, {"GL_TEXTURE_RESIDENT_EXT", 0x8067}, {"GL_TEXTURE_1D_BINDING_EXT", 0x8068}, {"GL_TEXTURE_BINDING_1D", 0x8068}, {"GL_TEXTURE_2D_BINDING_EXT", 0x8069}, {"GL_TEXTURE_BINDING_2D", 0x8069}, {"GL_TEXTURE_3D_BINDING_EXT", 0x806A}, {"GL_TEXTURE_3D_BINDING_OES", 0x806A}, {"GL_TEXTURE_BINDING_3D", 0x806A}, {"GL_PACK_SKIP_IMAGES", 0x806B}, {"GL_PACK_SKIP_IMAGES_EXT", 0x806B}, {"GL_PACK_IMAGE_HEIGHT", 0x806C}, {"GL_PACK_IMAGE_HEIGHT_EXT", 0x806C}, {"GL_UNPACK_SKIP_IMAGES", 0x806D}, {"GL_UNPACK_SKIP_IMAGES_EXT", 0x806D}, {"GL_UNPACK_IMAGE_HEIGHT", 0x806E}, {"GL_UNPACK_IMAGE_HEIGHT_EXT", 0x806E}, {"GL_TEXTURE_3D", 0x806F}, {"GL_TEXTURE_3D_EXT", 0x806F}, {"GL_TEXTURE_3D_OES", 0x806F}, {"GL_PROXY_TEXTURE_3D", 0x8070}, {"GL_PROXY_TEXTURE_3D_EXT", 0x8070}, {"GL_TEXTURE_DEPTH", 0x8071}, {"GL_TEXTURE_DEPTH_EXT", 0x8071}, {"GL_TEXTURE_WRAP_R", 0x8072}, {"GL_TEXTURE_WRAP_R_EXT", 0x8072}, {"GL_TEXTURE_WRAP_R_OES", 0x8072}, {"GL_MAX_3D_TEXTURE_SIZE", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_EXT", 0x8073}, {"GL_MAX_3D_TEXTURE_SIZE_OES", 0x8073}, {"GL_VERTEX_ARRAY", 0x8074}, {"GL_VERTEX_ARRAY_EXT", 0x8074}, {"GL_VERTEX_ARRAY_KHR", 0x8074}, {"GL_NORMAL_ARRAY", 0x8075}, {"GL_NORMAL_ARRAY_EXT", 0x8075}, {"GL_COLOR_ARRAY", 0x8076}, {"GL_COLOR_ARRAY_EXT", 0x8076}, {"GL_INDEX_ARRAY", 0x8077}, {"GL_INDEX_ARRAY_EXT", 0x8077}, {"GL_TEXTURE_COORD_ARRAY", 0x8078}, {"GL_TEXTURE_COORD_ARRAY_EXT", 0x8078}, {"GL_EDGE_FLAG_ARRAY", 0x8079}, {"GL_EDGE_FLAG_ARRAY_EXT", 0x8079}, {"GL_VERTEX_ARRAY_SIZE", 0x807A}, {"GL_VERTEX_ARRAY_SIZE_EXT", 0x807A}, {"GL_VERTEX_ARRAY_TYPE", 0x807B}, {"GL_VERTEX_ARRAY_TYPE_EXT", 0x807B}, {"GL_VERTEX_ARRAY_STRIDE", 0x807C}, {"GL_VERTEX_ARRAY_STRIDE_EXT", 0x807C}, {"GL_VERTEX_ARRAY_COUNT_EXT", 0x807D}, {"GL_NORMAL_ARRAY_TYPE", 0x807E}, {"GL_NORMAL_ARRAY_TYPE_EXT", 0x807E}, {"GL_NORMAL_ARRAY_STRIDE", 0x807F}, {"GL_NORMAL_ARRAY_STRIDE_EXT", 0x807F}, {"GL_NORMAL_ARRAY_COUNT_EXT", 0x8080}, {"GL_COLOR_ARRAY_SIZE", 0x8081}, {"GL_COLOR_ARRAY_SIZE_EXT", 0x8081}, {"GL_COLOR_ARRAY_TYPE", 0x8082}, {"GL_COLOR_ARRAY_TYPE_EXT", 0x8082}, {"GL_COLOR_ARRAY_STRIDE", 0x8083}, {"GL_COLOR_ARRAY_STRIDE_EXT", 0x8083}, {"GL_COLOR_ARRAY_COUNT_EXT", 0x8084}, {"GL_INDEX_ARRAY_TYPE", 0x8085}, {"GL_INDEX_ARRAY_TYPE_EXT", 0x8085}, {"GL_INDEX_ARRAY_STRIDE", 0x8086}, {"GL_INDEX_ARRAY_STRIDE_EXT", 0x8086}, {"GL_INDEX_ARRAY_COUNT_EXT", 0x8087}, {"GL_TEXTURE_COORD_ARRAY_SIZE", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_SIZE_EXT", 0x8088}, {"GL_TEXTURE_COORD_ARRAY_TYPE", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_TYPE_EXT", 0x8089}, {"GL_TEXTURE_COORD_ARRAY_STRIDE", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_STRIDE_EXT", 0x808A}, {"GL_TEXTURE_COORD_ARRAY_COUNT_EXT", 0x808B}, {"GL_EDGE_FLAG_ARRAY_STRIDE", 0x808C}, {"GL_EDGE_FLAG_ARRAY_STRIDE_EXT", 0x808C}, {"GL_EDGE_FLAG_ARRAY_COUNT_EXT", 0x808D}, {"GL_VERTEX_ARRAY_POINTER", 0x808E}, {"GL_VERTEX_ARRAY_POINTER_EXT", 0x808E}, {"GL_NORMAL_ARRAY_POINTER", 0x808F}, {"GL_NORMAL_ARRAY_POINTER_EXT", 0x808F}, {"GL_COLOR_ARRAY_POINTER", 0x8090}, {"GL_COLOR_ARRAY_POINTER_EXT", 0x8090}, {"GL_INDEX_ARRAY_POINTER", 0x8091}, {"GL_INDEX_ARRAY_POINTER_EXT", 0x8091}, {"GL_TEXTURE_COORD_ARRAY_POINTER", 0x8092}, {"GL_TEXTURE_COORD_ARRAY_POINTER_EXT", 0x8092}, {"GL_EDGE_FLAG_ARRAY_POINTER", 0x8093}, {"GL_EDGE_FLAG_ARRAY_POINTER_EXT", 0x8093}, {"GL_INTERLACE_SGIX", 0x8094}, {"GL_DETAIL_TEXTURE_2D_SGIS", 0x8095}, {"GL_DETAIL_TEXTURE_2D_BINDING_SGIS", 0x8096}, {"GL_LINEAR_DETAIL_SGIS", 0x8097}, {"GL_LINEAR_DETAIL_ALPHA_SGIS", 0x8098}, {"GL_LINEAR_DETAIL_COLOR_SGIS", 0x8099}, {"GL_DETAIL_TEXTURE_LEVEL_SGIS", 0x809A}, {"GL_DETAIL_TEXTURE_MODE_SGIS", 0x809B}, {"GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS", 0x809C}, {"GL_MULTISAMPLE", 0x809D}, {"GL_MULTISAMPLE_ARB", 0x809D}, {"GL_MULTISAMPLE_EXT", 0x809D}, {"GL_MULTISAMPLE_SGIS", 0x809D}, {"GL_SAMPLE_ALPHA_TO_COVERAGE", 0x809E}, {"GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_EXT", 0x809E}, {"GL_SAMPLE_ALPHA_TO_MASK_SGIS", 0x809E}, {"GL_SAMPLE_ALPHA_TO_ONE", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_ARB", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_EXT", 0x809F}, {"GL_SAMPLE_ALPHA_TO_ONE_SGIS", 0x809F}, {"GL_SAMPLE_COVERAGE", 0x80A0}, {"GL_SAMPLE_COVERAGE_ARB", 0x80A0}, {"GL_SAMPLE_MASK_EXT", 0x80A0}, {"GL_SAMPLE_MASK_SGIS", 0x80A0}, {"GL_1PASS_EXT", 0x80A1}, {"GL_1PASS_SGIS", 0x80A1}, {"GL_2PASS_0_EXT", 0x80A2}, {"GL_2PASS_0_SGIS", 0x80A2}, {"GL_2PASS_1_EXT", 0x80A3}, {"GL_2PASS_1_SGIS", 0x80A3}, {"GL_4PASS_0_EXT", 0x80A4}, {"GL_4PASS_0_SGIS", 0x80A4}, {"GL_4PASS_1_EXT", 0x80A5}, {"GL_4PASS_1_SGIS", 0x80A5}, {"GL_4PASS_2_EXT", 0x80A6}, {"GL_4PASS_2_SGIS", 0x80A6}, {"GL_4PASS_3_EXT", 0x80A7}, {"GL_4PASS_3_SGIS", 0x80A7}, {"GL_SAMPLE_BUFFERS", 0x80A8}, {"GL_SAMPLE_BUFFERS_ARB", 0x80A8}, {"GL_SAMPLE_BUFFERS_EXT", 0x80A8}, {"GL_SAMPLE_BUFFERS_SGIS", 0x80A8}, {"GL_SAMPLES", 0x80A9}, {"GL_SAMPLES_ARB", 0x80A9}, {"GL_SAMPLES_EXT", 0x80A9}, {"GL_SAMPLES_SGIS", 0x80A9}, {"GL_SAMPLE_COVERAGE_VALUE", 0x80AA}, {"GL_SAMPLE_COVERAGE_VALUE_ARB", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_EXT", 0x80AA}, {"GL_SAMPLE_MASK_VALUE_SGIS", 0x80AA}, {"GL_SAMPLE_COVERAGE_INVERT", 0x80AB}, {"GL_SAMPLE_COVERAGE_INVERT_ARB", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_EXT", 0x80AB}, {"GL_SAMPLE_MASK_INVERT_SGIS", 0x80AB}, {"GL_SAMPLE_PATTERN_EXT", 0x80AC}, {"GL_SAMPLE_PATTERN_SGIS", 0x80AC}, {"GL_LINEAR_SHARPEN_SGIS", 0x80AD}, {"GL_LINEAR_SHARPEN_ALPHA_SGIS", 0x80AE}, {"GL_LINEAR_SHARPEN_COLOR_SGIS", 0x80AF}, {"GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS", 0x80B0}, {"GL_COLOR_MATRIX", 0x80B1}, {"GL_COLOR_MATRIX_SGI", 0x80B1}, {"GL_COLOR_MATRIX_STACK_DEPTH", 0x80B2}, {"GL_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B2}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH", 0x80B3}, {"GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI", 0x80B3}, {"GL_POST_COLOR_MATRIX_RED_SCALE", 0x80B4}, {"GL_POST_COLOR_MATRIX_RED_SCALE_SGI", 0x80B4}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE", 0x80B5}, {"GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI", 0x80B5}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE", 0x80B6}, {"GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI", 0x80B6}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE", 0x80B7}, {"GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI", 0x80B7}, {"GL_POST_COLOR_MATRIX_RED_BIAS", 0x80B8}, {"GL_POST_COLOR_MATRIX_RED_BIAS_SGI", 0x80B8}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS", 0x80B9}, {"GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI", 0x80B9}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS", 0x80BA}, {"GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI", 0x80BA}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS", 0x80BB}, {"GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI", 0x80BB}, {"GL_TEXTURE_COLOR_TABLE_SGI", 0x80BC}, {"GL_PROXY_TEXTURE_COLOR_TABLE_SGI", 0x80BD}, {"GL_TEXTURE_ENV_BIAS_SGIX", 0x80BE}, {"GL_SHADOW_AMBIENT_SGIX", 0x80BF}, {"GL_TEXTURE_COMPARE_FAIL_VALUE_ARB", 0x80BF}, {"GL_BLEND_DST_RGB", 0x80C8}, {"GL_BLEND_DST_RGB_EXT", 0x80C8}, {"GL_BLEND_DST_RGB_OES", 0x80C8}, {"GL_BLEND_SRC_RGB", 0x80C9}, {"GL_BLEND_SRC_RGB_EXT", 0x80C9}, {"GL_BLEND_SRC_RGB_OES", 0x80C9}, {"GL_BLEND_DST_ALPHA", 0x80CA}, {"GL_BLEND_DST_ALPHA_EXT", 0x80CA}, {"GL_BLEND_DST_ALPHA_OES", 0x80CA}, {"GL_BLEND_SRC_ALPHA", 0x80CB}, {"GL_BLEND_SRC_ALPHA_EXT", 0x80CB}, {"GL_BLEND_SRC_ALPHA_OES", 0x80CB}, {"GL_422_EXT", 0x80CC}, {"GL_422_REV_EXT", 0x80CD}, {"GL_422_AVERAGE_EXT", 0x80CE}, {"GL_422_REV_AVERAGE_EXT", 0x80CF}, {"GL_COLOR_TABLE", 0x80D0}, {"GL_COLOR_TABLE_SGI", 0x80D0}, {"GL_POST_CONVOLUTION_COLOR_TABLE", 0x80D1}, {"GL_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D1}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D2}, {"GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D2}, {"GL_PROXY_COLOR_TABLE", 0x80D3}, {"GL_PROXY_COLOR_TABLE_SGI", 0x80D3}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE", 0x80D4}, {"GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI", 0x80D4}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE", 0x80D5}, {"GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI", 0x80D5}, {"GL_COLOR_TABLE_SCALE", 0x80D6}, {"GL_COLOR_TABLE_SCALE_SGI", 0x80D6}, {"GL_COLOR_TABLE_BIAS", 0x80D7}, {"GL_COLOR_TABLE_BIAS_SGI", 0x80D7}, {"GL_COLOR_TABLE_FORMAT", 0x80D8}, {"GL_COLOR_TABLE_FORMAT_SGI", 0x80D8}, {"GL_COLOR_TABLE_WIDTH", 0x80D9}, {"GL_COLOR_TABLE_WIDTH_SGI", 0x80D9}, {"GL_COLOR_TABLE_RED_SIZE", 0x80DA}, {"GL_COLOR_TABLE_RED_SIZE_SGI", 0x80DA}, {"GL_COLOR_TABLE_GREEN_SIZE", 0x80DB}, {"GL_COLOR_TABLE_GREEN_SIZE_SGI", 0x80DB}, {"GL_COLOR_TABLE_BLUE_SIZE", 0x80DC}, {"GL_COLOR_TABLE_BLUE_SIZE_SGI", 0x80DC}, {"GL_COLOR_TABLE_ALPHA_SIZE", 0x80DD}, {"GL_COLOR_TABLE_ALPHA_SIZE_SGI", 0x80DD}, {"GL_COLOR_TABLE_LUMINANCE_SIZE", 0x80DE}, {"GL_COLOR_TABLE_LUMINANCE_SIZE_SGI", 0x80DE}, {"GL_COLOR_TABLE_INTENSITY_SIZE", 0x80DF}, {"GL_COLOR_TABLE_INTENSITY_SIZE_SGI", 0x80DF}, {"GL_BGR", 0x80E0}, {"GL_BGR_EXT", 0x80E0}, {"GL_BGRA", 0x80E1}, {"GL_BGRA_EXT", 0x80E1}, {"GL_COLOR_INDEX1_EXT", 0x80E2}, {"GL_COLOR_INDEX2_EXT", 0x80E3}, {"GL_COLOR_INDEX4_EXT", 0x80E4}, {"GL_COLOR_INDEX8_EXT", 0x80E5}, {"GL_COLOR_INDEX12_EXT", 0x80E6}, {"GL_COLOR_INDEX16_EXT", 0x80E7}, {"GL_MAX_ELEMENTS_VERTICES", 0x80E8}, {"GL_MAX_ELEMENTS_VERTICES_EXT", 0x80E8}, {"GL_MAX_ELEMENTS_INDICES", 0x80E9}, {"GL_MAX_ELEMENTS_INDICES_EXT", 0x80E9}, {"GL_PHONG_WIN", 0x80EA}, {"GL_PHONG_HINT_WIN", 0x80EB}, {"GL_FOG_SPECULAR_TEXTURE_WIN", 0x80EC}, {"GL_TEXTURE_INDEX_SIZE_EXT", 0x80ED}, {"GL_PARAMETER_BUFFER_ARB", 0x80EE}, {"GL_PARAMETER_BUFFER_BINDING_ARB", 0x80EF}, {"GL_CLIP_VOLUME_CLIPPING_HINT_EXT", 0x80F0}, {"GL_DUAL_ALPHA4_SGIS", 0x8110}, {"GL_DUAL_ALPHA8_SGIS", 0x8111}, {"GL_DUAL_ALPHA12_SGIS", 0x8112}, {"GL_DUAL_ALPHA16_SGIS", 0x8113}, {"GL_DUAL_LUMINANCE4_SGIS", 0x8114}, {"GL_DUAL_LUMINANCE8_SGIS", 0x8115}, {"GL_DUAL_LUMINANCE12_SGIS", 0x8116}, {"GL_DUAL_LUMINANCE16_SGIS", 0x8117}, {"GL_DUAL_INTENSITY4_SGIS", 0x8118}, {"GL_DUAL_INTENSITY8_SGIS", 0x8119}, {"GL_DUAL_INTENSITY12_SGIS", 0x811A}, {"GL_DUAL_INTENSITY16_SGIS", 0x811B}, {"GL_DUAL_LUMINANCE_ALPHA4_SGIS", 0x811C}, {"GL_DUAL_LUMINANCE_ALPHA8_SGIS", 0x811D}, {"GL_QUAD_ALPHA4_SGIS", 0x811E}, {"GL_QUAD_ALPHA8_SGIS", 0x811F}, {"GL_QUAD_LUMINANCE4_SGIS", 0x8120}, {"GL_QUAD_LUMINANCE8_SGIS", 0x8121}, {"GL_QUAD_INTENSITY4_SGIS", 0x8122}, {"GL_QUAD_INTENSITY8_SGIS", 0x8123}, {"GL_DUAL_TEXTURE_SELECT_SGIS", 0x8124}, {"GL_QUAD_TEXTURE_SELECT_SGIS", 0x8125}, {"GL_POINT_SIZE_MIN", 0x8126}, {"GL_POINT_SIZE_MIN_ARB", 0x8126}, {"GL_POINT_SIZE_MIN_EXT", 0x8126}, {"GL_POINT_SIZE_MIN_SGIS", 0x8126}, {"GL_POINT_SIZE_MAX", 0x8127}, {"GL_POINT_SIZE_MAX_ARB", 0x8127}, {"GL_POINT_SIZE_MAX_EXT", 0x8127}, {"GL_POINT_SIZE_MAX_SGIS", 0x8127}, {"GL_POINT_FADE_THRESHOLD_SIZE", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_ARB", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_EXT", 0x8128}, {"GL_POINT_FADE_THRESHOLD_SIZE_SGIS", 0x8128}, {"GL_DISTANCE_ATTENUATION_EXT", 0x8129}, {"GL_DISTANCE_ATTENUATION_SGIS", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION", 0x8129}, {"GL_POINT_DISTANCE_ATTENUATION_ARB", 0x8129}, {"GL_FOG_FUNC_SGIS", 0x812A}, {"GL_FOG_FUNC_POINTS_SGIS", 0x812B}, {"GL_MAX_FOG_FUNC_POINTS_SGIS", 0x812C}, {"GL_CLAMP_TO_BORDER", 0x812D}, {"GL_CLAMP_TO_BORDER_ARB", 0x812D}, {"GL_CLAMP_TO_BORDER_NV", 0x812D}, {"GL_CLAMP_TO_BORDER_SGIS", 0x812D}, {"GL_TEXTURE_MULTI_BUFFER_HINT_SGIX", 0x812E}, {"GL_CLAMP_TO_EDGE", 0x812F}, {"GL_CLAMP_TO_EDGE_SGIS", 0x812F}, {"GL_PACK_SKIP_VOLUMES_SGIS", 0x8130}, {"GL_PACK_IMAGE_DEPTH_SGIS", 0x8131}, {"GL_UNPACK_SKIP_VOLUMES_SGIS", 0x8132}, {"GL_UNPACK_IMAGE_DEPTH_SGIS", 0x8133}, {"GL_TEXTURE_4D_SGIS", 0x8134}, {"GL_PROXY_TEXTURE_4D_SGIS", 0x8135}, {"GL_TEXTURE_4DSIZE_SGIS", 0x8136}, {"GL_TEXTURE_WRAP_Q_SGIS", 0x8137}, {"GL_MAX_4D_TEXTURE_SIZE_SGIS", 0x8138}, {"GL_PIXEL_TEX_GEN_SGIX", 0x8139}, {"GL_TEXTURE_MIN_LOD", 0x813A}, {"GL_TEXTURE_MIN_LOD_SGIS", 0x813A}, {"GL_TEXTURE_MAX_LOD", 0x813B}, {"GL_TEXTURE_MAX_LOD_SGIS", 0x813B}, {"GL_TEXTURE_BASE_LEVEL", 0x813C}, {"GL_TEXTURE_BASE_LEVEL_SGIS", 0x813C}, {"GL_TEXTURE_MAX_LEVEL", 0x813D}, {"GL_TEXTURE_MAX_LEVEL_SGIS", 0x813D}, {"GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX", 0x813E}, {"GL_PIXEL_TILE_CACHE_INCREMENT_SGIX", 0x813F}, {"GL_PIXEL_TILE_WIDTH_SGIX", 0x8140}, {"GL_PIXEL_TILE_HEIGHT_SGIX", 0x8141}, {"GL_PIXEL_TILE_GRID_WIDTH_SGIX", 0x8142}, {"GL_PIXEL_TILE_GRID_HEIGHT_SGIX", 0x8143}, {"GL_PIXEL_TILE_GRID_DEPTH_SGIX", 0x8144}, {"GL_PIXEL_TILE_CACHE_SIZE_SGIX", 0x8145}, {"GL_FILTER4_SGIS", 0x8146}, {"GL_TEXTURE_FILTER4_SIZE_SGIS", 0x8147}, {"GL_SPRITE_SGIX", 0x8148}, {"GL_SPRITE_MODE_SGIX", 0x8149}, {"GL_SPRITE_AXIS_SGIX", 0x814A}, {"GL_SPRITE_TRANSLATION_SGIX", 0x814B}, {"GL_SPRITE_AXIAL_SGIX", 0x814C}, {"GL_SPRITE_OBJECT_ALIGNED_SGIX", 0x814D}, {"GL_SPRITE_EYE_ALIGNED_SGIX", 0x814E}, {"GL_TEXTURE_4D_BINDING_SGIS", 0x814F}, {"GL_IGNORE_BORDER_HP", 0x8150}, {"GL_CONSTANT_BORDER", 0x8151}, {"GL_CONSTANT_BORDER_HP", 0x8151}, {"GL_REPLICATE_BORDER", 0x8153}, {"GL_REPLICATE_BORDER_HP", 0x8153}, {"GL_CONVOLUTION_BORDER_COLOR", 0x8154}, {"GL_CONVOLUTION_BORDER_COLOR_HP", 0x8154}, {"GL_IMAGE_SCALE_X_HP", 0x8155}, {"GL_IMAGE_SCALE_Y_HP", 0x8156}, {"GL_IMAGE_TRANSLATE_X_HP", 0x8157}, {"GL_IMAGE_TRANSLATE_Y_HP", 0x8158}, {"GL_IMAGE_ROTATE_ANGLE_HP", 0x8159}, {"GL_IMAGE_ROTATE_ORIGIN_X_HP", 0x815A}, {"GL_IMAGE_ROTATE_ORIGIN_Y_HP", 0x815B}, {"GL_IMAGE_MAG_FILTER_HP", 0x815C}, {"GL_IMAGE_MIN_FILTER_HP", 0x815D}, {"GL_IMAGE_CUBIC_WEIGHT_HP", 0x815E}, {"GL_CUBIC_HP", 0x815F}, {"GL_AVERAGE_HP", 0x8160}, {"GL_IMAGE_TRANSFORM_2D_HP", 0x8161}, {"GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8162}, {"GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP", 0x8163}, {"GL_OCCLUSION_TEST_HP", 0x8165}, {"GL_OCCLUSION_TEST_RESULT_HP", 0x8166}, {"GL_TEXTURE_LIGHTING_MODE_HP", 0x8167}, {"GL_TEXTURE_POST_SPECULAR_HP", 0x8168}, {"GL_TEXTURE_PRE_SPECULAR_HP", 0x8169}, {"GL_LINEAR_CLIPMAP_LINEAR_SGIX", 0x8170}, {"GL_TEXTURE_CLIPMAP_CENTER_SGIX", 0x8171}, {"GL_TEXTURE_CLIPMAP_FRAME_SGIX", 0x8172}, {"GL_TEXTURE_CLIPMAP_OFFSET_SGIX", 0x8173}, {"GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8174}, {"GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX", 0x8175}, {"GL_TEXTURE_CLIPMAP_DEPTH_SGIX", 0x8176}, {"GL_MAX_CLIPMAP_DEPTH_SGIX", 0x8177}, {"GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX", 0x8178}, {"GL_POST_TEXTURE_FILTER_BIAS_SGIX", 0x8179}, {"GL_POST_TEXTURE_FILTER_SCALE_SGIX", 0x817A}, {"GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX", 0x817B}, {"GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX", 0x817C}, {"GL_REFERENCE_PLANE_SGIX", 0x817D}, {"GL_REFERENCE_PLANE_EQUATION_SGIX", 0x817E}, {"GL_IR_INSTRUMENT1_SGIX", 0x817F}, {"GL_INSTRUMENT_BUFFER_POINTER_SGIX", 0x8180}, {"GL_INSTRUMENT_MEASUREMENTS_SGIX", 0x8181}, {"GL_LIST_PRIORITY_SGIX", 0x8182}, {"GL_CALLIGRAPHIC_FRAGMENT_SGIX", 0x8183}, {"GL_PIXEL_TEX_GEN_Q_CEILING_SGIX", 0x8184}, {"GL_PIXEL_TEX_GEN_Q_ROUND_SGIX", 0x8185}, {"GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX", 0x8186}, {"GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX", 0x8187}, {"GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX", 0x8188}, {"GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX", 0x8189}, {"GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX", 0x818A}, {"GL_FRAMEZOOM_SGIX", 0x818B}, {"GL_FRAMEZOOM_FACTOR_SGIX", 0x818C}, {"GL_MAX_FRAMEZOOM_FACTOR_SGIX", 0x818D}, {"GL_TEXTURE_LOD_BIAS_S_SGIX", 0x818E}, {"GL_TEXTURE_LOD_BIAS_T_SGIX", 0x818F}, {"GL_TEXTURE_LOD_BIAS_R_SGIX", 0x8190}, {"GL_GENERATE_MIPMAP", 0x8191}, {"GL_GENERATE_MIPMAP_SGIS", 0x8191}, {"GL_GENERATE_MIPMAP_HINT", 0x8192}, {"GL_GENERATE_MIPMAP_HINT_SGIS", 0x8192}, {"GL_GEOMETRY_DEFORMATION_SGIX", 0x8194}, {"GL_TEXTURE_DEFORMATION_SGIX", 0x8195}, {"GL_DEFORMATIONS_MASK_SGIX", 0x8196}, {"GL_MAX_DEFORMATION_ORDER_SGIX", 0x8197}, {"GL_FOG_OFFSET_SGIX", 0x8198}, {"GL_FOG_OFFSET_VALUE_SGIX", 0x8199}, {"GL_TEXTURE_COMPARE_SGIX", 0x819A}, {"GL_TEXTURE_COMPARE_OPERATOR_SGIX", 0x819B}, {"GL_TEXTURE_LEQUAL_R_SGIX", 0x819C}, {"GL_TEXTURE_GEQUAL_R_SGIX", 0x819D}, {"GL_DEPTH_COMPONENT16", 0x81A5}, {"GL_DEPTH_COMPONENT16_ARB", 0x81A5}, {"GL_DEPTH_COMPONENT16_OES", 0x81A5}, {"GL_DEPTH_COMPONENT16_SGIX", 0x81A5}, {"GL_DEPTH_COMPONENT24", 0x81A6}, {"GL_DEPTH_COMPONENT24_ARB", 0x81A6}, {"GL_DEPTH_COMPONENT24_OES", 0x81A6}, {"GL_DEPTH_COMPONENT24_SGIX", 0x81A6}, {"GL_DEPTH_COMPONENT32", 0x81A7}, {"GL_DEPTH_COMPONENT32_ARB", 0x81A7}, {"GL_DEPTH_COMPONENT32_OES", 0x81A7}, {"GL_DEPTH_COMPONENT32_SGIX", 0x81A7}, {"GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", 0x81A8}, {"GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", 0x81A9}, {"GL_CULL_VERTEX_EXT", 0x81AA}, {"GL_CULL_VERTEX_EYE_POSITION_EXT", 0x81AB}, {"GL_CULL_VERTEX_OBJECT_POSITION_EXT", 0x81AC}, {"GL_IUI_V2F_EXT", 0x81AD}, {"GL_IUI_V3F_EXT", 0x81AE}, {"GL_IUI_N3F_V2F_EXT", 0x81AF}, {"GL_IUI_N3F_V3F_EXT", 0x81B0}, {"GL_T2F_IUI_V2F_EXT", 0x81B1}, {"GL_T2F_IUI_V3F_EXT", 0x81B2}, {"GL_T2F_IUI_N3F_V2F_EXT", 0x81B3}, {"GL_T2F_IUI_N3F_V3F_EXT", 0x81B4}, {"GL_INDEX_TEST_EXT", 0x81B5}, {"GL_INDEX_TEST_FUNC_EXT", 0x81B6}, {"GL_INDEX_TEST_REF_EXT", 0x81B7}, {"GL_INDEX_MATERIAL_EXT", 0x81B8}, {"GL_INDEX_MATERIAL_PARAMETER_EXT", 0x81B9}, {"GL_INDEX_MATERIAL_FACE_EXT", 0x81BA}, {"GL_YCRCB_422_SGIX", 0x81BB}, {"GL_YCRCB_444_SGIX", 0x81BC}, {"GL_WRAP_BORDER_SUN", 0x81D4}, {"GL_UNPACK_CONSTANT_DATA_SUNX", 0x81D5}, {"GL_TEXTURE_CONSTANT_DATA_SUNX", 0x81D6}, {"GL_TRIANGLE_LIST_SUN", 0x81D7}, {"GL_REPLACEMENT_CODE_SUN", 0x81D8}, {"GL_GLOBAL_ALPHA_SUN", 0x81D9}, {"GL_GLOBAL_ALPHA_FACTOR_SUN", 0x81DA}, {"GL_TEXTURE_COLOR_WRITEMASK_SGIS", 0x81EF}, {"GL_EYE_DISTANCE_TO_POINT_SGIS", 0x81F0}, {"GL_OBJECT_DISTANCE_TO_POINT_SGIS", 0x81F1}, {"GL_EYE_DISTANCE_TO_LINE_SGIS", 0x81F2}, {"GL_OBJECT_DISTANCE_TO_LINE_SGIS", 0x81F3}, {"GL_EYE_POINT_SGIS", 0x81F4}, {"GL_OBJECT_POINT_SGIS", 0x81F5}, {"GL_EYE_LINE_SGIS", 0x81F6}, {"GL_OBJECT_LINE_SGIS", 0x81F7}, {"GL_LIGHT_MODEL_COLOR_CONTROL", 0x81F8}, {"GL_LIGHT_MODEL_COLOR_CONTROL_EXT", 0x81F8}, {"GL_SINGLE_COLOR", 0x81F9}, {"GL_SINGLE_COLOR_EXT", 0x81F9}, {"GL_SEPARATE_SPECULAR_COLOR", 0x81FA}, {"GL_SEPARATE_SPECULAR_COLOR_EXT", 0x81FA}, {"GL_SHARED_TEXTURE_PALETTE_EXT", 0x81FB}, {"GL_TEXT_FRAGMENT_SHADER_ATI", 0x8200}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING", 0x8210}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT", 0x8211}, {"GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE", 0x8212}, {"GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE", 0x8213}, {"GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE", 0x8214}, {"GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE", 0x8215}, {"GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE", 0x8216}, {"GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE", 0x8217}, {"GL_FRAMEBUFFER_DEFAULT", 0x8218}, {"GL_FRAMEBUFFER_UNDEFINED", 0x8219}, {"GL_FRAMEBUFFER_UNDEFINED_OES", 0x8219}, {"GL_DEPTH_STENCIL_ATTACHMENT", 0x821A}, {"GL_MAJOR_VERSION", 0x821B}, {"GL_MINOR_VERSION", 0x821C}, {"GL_NUM_EXTENSIONS", 0x821D}, {"GL_CONTEXT_FLAGS", 0x821E}, {"GL_BUFFER_IMMUTABLE_STORAGE", 0x821F}, {"GL_BUFFER_STORAGE_FLAGS", 0x8220}, {"GL_INDEX", 0x8222}, {"GL_COMPRESSED_RED", 0x8225}, {"GL_COMPRESSED_RG", 0x8226}, {"GL_RG", 0x8227}, {"GL_RG_EXT", 0x8227}, {"GL_RG_INTEGER", 0x8228}, {"GL_R8", 0x8229}, {"GL_R8_EXT", 0x8229}, {"GL_R16", 0x822A}, {"GL_RG8", 0x822B}, {"GL_RG8_EXT", 0x822B}, {"GL_RG16", 0x822C}, {"GL_R16F", 0x822D}, {"GL_R16F_EXT", 0x822D}, {"GL_R32F", 0x822E}, {"GL_RG16F", 0x822F}, {"GL_RG16F_EXT", 0x822F}, {"GL_RG32F", 0x8230}, {"GL_R8I", 0x8231}, {"GL_R8UI", 0x8232}, {"GL_R16I", 0x8233}, {"GL_R16UI", 0x8234}, {"GL_R32I", 0x8235}, {"GL_R32UI", 0x8236}, {"GL_RG8I", 0x8237}, {"GL_RG8UI", 0x8238}, {"GL_RG16I", 0x8239}, {"GL_RG16UI", 0x823A}, {"GL_RG32I", 0x823B}, {"GL_RG32UI", 0x823C}, {"GL_SYNC_CL_EVENT_ARB", 0x8240}, {"GL_SYNC_CL_EVENT_COMPLETE_ARB", 0x8241}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB", 0x8242}, {"GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR", 0x8242}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB", 0x8243}, {"GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR", 0x8243}, {"GL_DEBUG_CALLBACK_FUNCTION", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_ARB", 0x8244}, {"GL_DEBUG_CALLBACK_FUNCTION_KHR", 0x8244}, {"GL_DEBUG_CALLBACK_USER_PARAM", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_ARB", 0x8245}, {"GL_DEBUG_CALLBACK_USER_PARAM_KHR", 0x8245}, {"GL_DEBUG_SOURCE_API", 0x8246}, {"GL_DEBUG_SOURCE_API_ARB", 0x8246}, {"GL_DEBUG_SOURCE_API_KHR", 0x8246}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB", 0x8247}, {"GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR", 0x8247}, {"GL_DEBUG_SOURCE_SHADER_COMPILER", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_ARB", 0x8248}, {"GL_DEBUG_SOURCE_SHADER_COMPILER_KHR", 0x8248}, {"GL_DEBUG_SOURCE_THIRD_PARTY", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_ARB", 0x8249}, {"GL_DEBUG_SOURCE_THIRD_PARTY_KHR", 0x8249}, {"GL_DEBUG_SOURCE_APPLICATION", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_ARB", 0x824A}, {"GL_DEBUG_SOURCE_APPLICATION_KHR", 0x824A}, {"GL_DEBUG_SOURCE_OTHER", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_ARB", 0x824B}, {"GL_DEBUG_SOURCE_OTHER_KHR", 0x824B}, {"GL_DEBUG_TYPE_ERROR", 0x824C}, {"GL_DEBUG_TYPE_ERROR_ARB", 0x824C}, {"GL_DEBUG_TYPE_ERROR_KHR", 0x824C}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB", 0x824D}, {"GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR", 0x824D}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB", 0x824E}, {"GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR", 0x824E}, {"GL_DEBUG_TYPE_PORTABILITY", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_ARB", 0x824F}, {"GL_DEBUG_TYPE_PORTABILITY_KHR", 0x824F}, {"GL_DEBUG_TYPE_PERFORMANCE", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_ARB", 0x8250}, {"GL_DEBUG_TYPE_PERFORMANCE_KHR", 0x8250}, {"GL_DEBUG_TYPE_OTHER", 0x8251}, {"GL_DEBUG_TYPE_OTHER_ARB", 0x8251}, {"GL_DEBUG_TYPE_OTHER_KHR", 0x8251}, {"GL_LOSE_CONTEXT_ON_RESET_ARB", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_ARB", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_ARB", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_ARB", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_ARB", 0x8256}, {"GL_PROGRAM_BINARY_RETRIEVABLE_HINT", 0x8257}, {"GL_PROGRAM_SEPARABLE", 0x8258}, {"GL_PROGRAM_SEPARABLE_EXT", 0x8258}, {"GL_ACTIVE_PROGRAM", 0x8259}, {"GL_ACTIVE_PROGRAM_EXT", 0x8259}, {"GL_PROGRAM_PIPELINE_BINDING", 0x825A}, {"GL_PROGRAM_PIPELINE_BINDING_EXT", 0x825A}, {"GL_MAX_VIEWPORTS", 0x825B}, {"GL_VIEWPORT_SUBPIXEL_BITS", 0x825C}, {"GL_VIEWPORT_BOUNDS_RANGE", 0x825D}, {"GL_LAYER_PROVOKING_VERTEX", 0x825E}, {"GL_VIEWPORT_INDEX_PROVOKING_VERTEX", 0x825F}, {"GL_UNDEFINED_VERTEX", 0x8260}, {"GL_NO_RESET_NOTIFICATION_ARB", 0x8261}, {"GL_MAX_COMPUTE_SHARED_MEMORY_SIZE", 0x8262}, {"GL_MAX_COMPUTE_UNIFORM_COMPONENTS", 0x8263}, {"GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS", 0x8264}, {"GL_MAX_COMPUTE_ATOMIC_COUNTERS", 0x8265}, {"GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS", 0x8266}, {"GL_COMPUTE_LOCAL_WORK_SIZE", 0x8267}, {"GL_DEBUG_TYPE_MARKER", 0x8268}, {"GL_DEBUG_TYPE_MARKER_KHR", 0x8268}, {"GL_DEBUG_TYPE_PUSH_GROUP", 0x8269}, {"GL_DEBUG_TYPE_PUSH_GROUP_KHR", 0x8269}, {"GL_DEBUG_TYPE_POP_GROUP", 0x826A}, {"GL_DEBUG_TYPE_POP_GROUP_KHR", 0x826A}, {"GL_DEBUG_SEVERITY_NOTIFICATION", 0x826B}, {"GL_DEBUG_SEVERITY_NOTIFICATION_KHR", 0x826B}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH", 0x826C}, {"GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826C}, {"GL_DEBUG_GROUP_STACK_DEPTH", 0x826D}, {"GL_DEBUG_GROUP_STACK_DEPTH_KHR", 0x826D}, {"GL_MAX_UNIFORM_LOCATIONS", 0x826E}, {"GL_INTERNALFORMAT_SUPPORTED", 0x826F}, {"GL_INTERNALFORMAT_PREFERRED", 0x8270}, {"GL_INTERNALFORMAT_RED_SIZE", 0x8271}, {"GL_INTERNALFORMAT_GREEN_SIZE", 0x8272}, {"GL_INTERNALFORMAT_BLUE_SIZE", 0x8273}, {"GL_INTERNALFORMAT_ALPHA_SIZE", 0x8274}, {"GL_INTERNALFORMAT_DEPTH_SIZE", 0x8275}, {"GL_INTERNALFORMAT_STENCIL_SIZE", 0x8276}, {"GL_INTERNALFORMAT_SHARED_SIZE", 0x8277}, {"GL_INTERNALFORMAT_RED_TYPE", 0x8278}, {"GL_INTERNALFORMAT_GREEN_TYPE", 0x8279}, {"GL_INTERNALFORMAT_BLUE_TYPE", 0x827A}, {"GL_INTERNALFORMAT_ALPHA_TYPE", 0x827B}, {"GL_INTERNALFORMAT_DEPTH_TYPE", 0x827C}, {"GL_INTERNALFORMAT_STENCIL_TYPE", 0x827D}, {"GL_MAX_WIDTH", 0x827E}, {"GL_MAX_HEIGHT", 0x827F}, {"GL_MAX_DEPTH", 0x8280}, {"GL_MAX_LAYERS", 0x8281}, {"GL_MAX_COMBINED_DIMENSIONS", 0x8282}, {"GL_COLOR_COMPONENTS", 0x8283}, {"GL_DEPTH_COMPONENTS", 0x8284}, {"GL_STENCIL_COMPONENTS", 0x8285}, {"GL_COLOR_RENDERABLE", 0x8286}, {"GL_DEPTH_RENDERABLE", 0x8287}, {"GL_STENCIL_RENDERABLE", 0x8288}, {"GL_FRAMEBUFFER_RENDERABLE", 0x8289}, {"GL_FRAMEBUFFER_RENDERABLE_LAYERED", 0x828A}, {"GL_FRAMEBUFFER_BLEND", 0x828B}, {"GL_READ_PIXELS", 0x828C}, {"GL_READ_PIXELS_FORMAT", 0x828D}, {"GL_READ_PIXELS_TYPE", 0x828E}, {"GL_TEXTURE_IMAGE_FORMAT", 0x828F}, {"GL_TEXTURE_IMAGE_TYPE", 0x8290}, {"GL_GET_TEXTURE_IMAGE_FORMAT", 0x8291}, {"GL_GET_TEXTURE_IMAGE_TYPE", 0x8292}, {"GL_MIPMAP", 0x8293}, {"GL_MANUAL_GENERATE_MIPMAP", 0x8294}, {"GL_AUTO_GENERATE_MIPMAP", 0x8295}, {"GL_COLOR_ENCODING", 0x8296}, {"GL_SRGB_READ", 0x8297}, {"GL_SRGB_WRITE", 0x8298}, {"GL_SRGB_DECODE_ARB", 0x8299}, {"GL_FILTER", 0x829A}, {"GL_VERTEX_TEXTURE", 0x829B}, {"GL_TESS_CONTROL_TEXTURE", 0x829C}, {"GL_TESS_EVALUATION_TEXTURE", 0x829D}, {"GL_GEOMETRY_TEXTURE", 0x829E}, {"GL_FRAGMENT_TEXTURE", 0x829F}, {"GL_COMPUTE_TEXTURE", 0x82A0}, {"GL_TEXTURE_SHADOW", 0x82A1}, {"GL_TEXTURE_GATHER", 0x82A2}, {"GL_TEXTURE_GATHER_SHADOW", 0x82A3}, {"GL_SHADER_IMAGE_LOAD", 0x82A4}, {"GL_SHADER_IMAGE_STORE", 0x82A5}, {"GL_SHADER_IMAGE_ATOMIC", 0x82A6}, {"GL_IMAGE_TEXEL_SIZE", 0x82A7}, {"GL_IMAGE_COMPATIBILITY_CLASS", 0x82A8}, {"GL_IMAGE_PIXEL_FORMAT", 0x82A9}, {"GL_IMAGE_PIXEL_TYPE", 0x82AA}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST", 0x82AC}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST", 0x82AD}, {"GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE", 0x82AE}, {"GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE", 0x82AF}, {"GL_TEXTURE_COMPRESSED_BLOCK_WIDTH", 0x82B1}, {"GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT", 0x82B2}, {"GL_TEXTURE_COMPRESSED_BLOCK_SIZE", 0x82B3}, {"GL_CLEAR_BUFFER", 0x82B4}, {"GL_TEXTURE_VIEW", 0x82B5}, {"GL_VIEW_COMPATIBILITY_CLASS", 0x82B6}, {"GL_FULL_SUPPORT", 0x82B7}, {"GL_CAVEAT_SUPPORT", 0x82B8}, {"GL_IMAGE_CLASS_4_X_32", 0x82B9}, {"GL_IMAGE_CLASS_2_X_32", 0x82BA}, {"GL_IMAGE_CLASS_1_X_32", 0x82BB}, {"GL_IMAGE_CLASS_4_X_16", 0x82BC}, {"GL_IMAGE_CLASS_2_X_16", 0x82BD}, {"GL_IMAGE_CLASS_1_X_16", 0x82BE}, {"GL_IMAGE_CLASS_4_X_8", 0x82BF}, {"GL_IMAGE_CLASS_2_X_8", 0x82C0}, {"GL_IMAGE_CLASS_1_X_8", 0x82C1}, {"GL_IMAGE_CLASS_11_11_10", 0x82C2}, {"GL_IMAGE_CLASS_10_10_10_2", 0x82C3}, {"GL_VIEW_CLASS_128_BITS", 0x82C4}, {"GL_VIEW_CLASS_96_BITS", 0x82C5}, {"GL_VIEW_CLASS_64_BITS", 0x82C6}, {"GL_VIEW_CLASS_48_BITS", 0x82C7}, {"GL_VIEW_CLASS_32_BITS", 0x82C8}, {"GL_VIEW_CLASS_24_BITS", 0x82C9}, {"GL_VIEW_CLASS_16_BITS", 0x82CA}, {"GL_VIEW_CLASS_8_BITS", 0x82CB}, {"GL_VIEW_CLASS_S3TC_DXT1_RGB", 0x82CC}, {"GL_VIEW_CLASS_S3TC_DXT1_RGBA", 0x82CD}, {"GL_VIEW_CLASS_S3TC_DXT3_RGBA", 0x82CE}, {"GL_VIEW_CLASS_S3TC_DXT5_RGBA", 0x82CF}, {"GL_VIEW_CLASS_RGTC1_RED", 0x82D0}, {"GL_VIEW_CLASS_RGTC2_RG", 0x82D1}, {"GL_VIEW_CLASS_BPTC_UNORM", 0x82D2}, {"GL_VIEW_CLASS_BPTC_FLOAT", 0x82D3}, {"GL_VERTEX_ATTRIB_BINDING", 0x82D4}, {"GL_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D5}, {"GL_VERTEX_BINDING_DIVISOR", 0x82D6}, {"GL_VERTEX_BINDING_OFFSET", 0x82D7}, {"GL_VERTEX_BINDING_STRIDE", 0x82D8}, {"GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET", 0x82D9}, {"GL_MAX_VERTEX_ATTRIB_BINDINGS", 0x82DA}, {"GL_TEXTURE_VIEW_MIN_LEVEL", 0x82DB}, {"GL_TEXTURE_VIEW_NUM_LEVELS", 0x82DC}, {"GL_TEXTURE_VIEW_MIN_LAYER", 0x82DD}, {"GL_TEXTURE_VIEW_NUM_LAYERS", 0x82DE}, {"GL_TEXTURE_IMMUTABLE_LEVELS", 0x82DF}, {"GL_BUFFER", 0x82E0}, {"GL_BUFFER_KHR", 0x82E0}, {"GL_SHADER", 0x82E1}, {"GL_SHADER_KHR", 0x82E1}, {"GL_PROGRAM", 0x82E2}, {"GL_PROGRAM_KHR", 0x82E2}, {"GL_QUERY", 0x82E3}, {"GL_QUERY_KHR", 0x82E3}, {"GL_PROGRAM_PIPELINE", 0x82E4}, {"GL_MAX_VERTEX_ATTRIB_STRIDE", 0x82E5}, {"GL_SAMPLER", 0x82E6}, {"GL_SAMPLER_KHR", 0x82E6}, {"GL_DISPLAY_LIST", 0x82E7}, {"GL_MAX_LABEL_LENGTH", 0x82E8}, {"GL_MAX_LABEL_LENGTH_KHR", 0x82E8}, {"GL_NUM_SHADING_LANGUAGE_VERSIONS", 0x82E9}, {"GL_DEPTH_PASS_INSTRUMENT_SGIX", 0x8310}, {"GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX", 0x8311}, {"GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX", 0x8312}, {"GL_FRAGMENTS_INSTRUMENT_SGIX", 0x8313}, {"GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX", 0x8314}, {"GL_FRAGMENTS_INSTRUMENT_MAX_SGIX", 0x8315}, {"GL_CONVOLUTION_HINT_SGIX", 0x8316}, {"GL_YCRCB_SGIX", 0x8318}, {"GL_YCRCBA_SGIX", 0x8319}, {"GL_UNPACK_COMPRESSED_SIZE_SGIX", 0x831A}, {"GL_PACK_MAX_COMPRESSED_SIZE_SGIX", 0x831B}, {"GL_PACK_COMPRESSED_SIZE_SGIX", 0x831C}, {"GL_SLIM8U_SGIX", 0x831D}, {"GL_SLIM10U_SGIX", 0x831E}, {"GL_SLIM12S_SGIX", 0x831F}, {"GL_ALPHA_MIN_SGIX", 0x8320}, {"GL_ALPHA_MAX_SGIX", 0x8321}, {"GL_SCALEBIAS_HINT_SGIX", 0x8322}, {"GL_ASYNC_MARKER_SGIX", 0x8329}, {"GL_PIXEL_TEX_GEN_MODE_SGIX", 0x832B}, {"GL_ASYNC_HISTOGRAM_SGIX", 0x832C}, {"GL_MAX_ASYNC_HISTOGRAM_SGIX", 0x832D}, {"GL_PIXEL_TRANSFORM_2D_EXT", 0x8330}, {"GL_PIXEL_MAG_FILTER_EXT", 0x8331}, {"GL_PIXEL_MIN_FILTER_EXT", 0x8332}, {"GL_PIXEL_CUBIC_WEIGHT_EXT", 0x8333}, {"GL_CUBIC_EXT", 0x8334}, {"GL_AVERAGE_EXT", 0x8335}, {"GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8336}, {"GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT", 0x8337}, {"GL_PIXEL_TRANSFORM_2D_MATRIX_EXT", 0x8338}, {"GL_FRAGMENT_MATERIAL_EXT", 0x8349}, {"GL_FRAGMENT_NORMAL_EXT", 0x834A}, {"GL_FRAGMENT_COLOR_EXT", 0x834C}, {"GL_ATTENUATION_EXT", 0x834D}, {"GL_SHADOW_ATTENUATION_EXT", 0x834E}, {"GL_TEXTURE_APPLICATION_MODE_EXT", 0x834F}, {"GL_TEXTURE_LIGHT_EXT", 0x8350}, {"GL_TEXTURE_MATERIAL_FACE_EXT", 0x8351}, {"GL_TEXTURE_MATERIAL_PARAMETER_EXT", 0x8352}, {"GL_PIXEL_TEXTURE_SGIS", 0x8353}, {"GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS", 0x8354}, {"GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS", 0x8355}, {"GL_PIXEL_GROUP_COLOR_SGIS", 0x8356}, {"GL_LINE_QUALITY_HINT_SGIX", 0x835B}, {"GL_ASYNC_TEX_IMAGE_SGIX", 0x835C}, {"GL_ASYNC_DRAW_PIXELS_SGIX", 0x835D}, {"GL_ASYNC_READ_PIXELS_SGIX", 0x835E}, {"GL_MAX_ASYNC_TEX_IMAGE_SGIX", 0x835F}, {"GL_MAX_ASYNC_DRAW_PIXELS_SGIX", 0x8360}, {"GL_MAX_ASYNC_READ_PIXELS_SGIX", 0x8361}, {"GL_UNSIGNED_BYTE_2_3_3_REV", 0x8362}, {"GL_UNSIGNED_BYTE_2_3_3_REV_EXT", 0x8362}, {"GL_UNSIGNED_SHORT_5_6_5", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_EXT", 0x8363}, {"GL_UNSIGNED_SHORT_5_6_5_REV", 0x8364}, {"GL_UNSIGNED_SHORT_5_6_5_REV_EXT", 0x8364}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV", 0x8365}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT", 0x8365}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV", 0x8366}, {"GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT", 0x8366}, {"GL_UNSIGNED_INT_8_8_8_8_REV", 0x8367}, {"GL_UNSIGNED_INT_8_8_8_8_REV_EXT", 0x8367}, {"GL_UNSIGNED_INT_2_10_10_10_REV", 0x8368}, {"GL_UNSIGNED_INT_2_10_10_10_REV_EXT", 0x8368}, {"GL_TEXTURE_MAX_CLAMP_S_SGIX", 0x8369}, {"GL_TEXTURE_MAX_CLAMP_T_SGIX", 0x836A}, {"GL_TEXTURE_MAX_CLAMP_R_SGIX", 0x836B}, {"GL_MIRRORED_REPEAT", 0x8370}, {"GL_MIRRORED_REPEAT_ARB", 0x8370}, {"GL_MIRRORED_REPEAT_IBM", 0x8370}, {"GL_MIRRORED_REPEAT_OES", 0x8370}, {"GL_RGB_S3TC", 0x83A0}, {"GL_RGB4_S3TC", 0x83A1}, {"GL_RGBA_S3TC", 0x83A2}, {"GL_RGBA4_S3TC", 0x83A3}, {"GL_RGBA_DXT5_S3TC", 0x83A4}, {"GL_RGBA4_DXT5_S3TC", 0x83A5}, {"GL_VERTEX_PRECLIP_SGIX", 0x83EE}, {"GL_VERTEX_PRECLIP_HINT_SGIX", 0x83EF}, {"GL_COMPRESSED_RGB_S3TC_DXT1_EXT", 0x83F0}, {"GL_COMPRESSED_RGBA_S3TC_DXT1_EXT", 0x83F1}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT3_EXT", 0x83F2}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE", 0x83F3}, {"GL_COMPRESSED_RGBA_S3TC_DXT5_EXT", 0x83F3}, {"GL_PARALLEL_ARRAYS_INTEL", 0x83F4}, {"GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F5}, {"GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F6}, {"GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F7}, {"GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL", 0x83F8}, {"GL_TEXTURE_MEMORY_LAYOUT_INTEL", 0x83FF}, {"GL_FRAGMENT_LIGHTING_SGIX", 0x8400}, {"GL_FRAGMENT_COLOR_MATERIAL_SGIX", 0x8401}, {"GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX", 0x8402}, {"GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX", 0x8403}, {"GL_MAX_FRAGMENT_LIGHTS_SGIX", 0x8404}, {"GL_MAX_ACTIVE_LIGHTS_SGIX", 0x8405}, {"GL_CURRENT_RASTER_NORMAL_SGIX", 0x8406}, {"GL_LIGHT_ENV_MODE_SGIX", 0x8407}, {"GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX", 0x8408}, {"GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX", 0x8409}, {"GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX", 0x840A}, {"GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX", 0x840B}, {"GL_FRAGMENT_LIGHT0_SGIX", 0x840C}, {"GL_FRAGMENT_LIGHT1_SGIX", 0x840D}, {"GL_FRAGMENT_LIGHT2_SGIX", 0x840E}, {"GL_FRAGMENT_LIGHT3_SGIX", 0x840F}, {"GL_FRAGMENT_LIGHT4_SGIX", 0x8410}, {"GL_FRAGMENT_LIGHT5_SGIX", 0x8411}, {"GL_FRAGMENT_LIGHT6_SGIX", 0x8412}, {"GL_FRAGMENT_LIGHT7_SGIX", 0x8413}, {"GL_PACK_RESAMPLE_SGIX", 0x842C}, {"GL_UNPACK_RESAMPLE_SGIX", 0x842D}, {"GL_RESAMPLE_REPLICATE_SGIX", 0x842E}, {"GL_RESAMPLE_ZERO_FILL_SGIX", 0x842F}, {"GL_RESAMPLE_DECIMATE_SGIX", 0x8430}, {"GL_TANGENT_ARRAY_EXT", 0x8439}, {"GL_BINORMAL_ARRAY_EXT", 0x843A}, {"GL_CURRENT_TANGENT_EXT", 0x843B}, {"GL_CURRENT_BINORMAL_EXT", 0x843C}, {"GL_TANGENT_ARRAY_TYPE_EXT", 0x843E}, {"GL_TANGENT_ARRAY_STRIDE_EXT", 0x843F}, {"GL_BINORMAL_ARRAY_TYPE_EXT", 0x8440}, {"GL_BINORMAL_ARRAY_STRIDE_EXT", 0x8441}, {"GL_TANGENT_ARRAY_POINTER_EXT", 0x8442}, {"GL_BINORMAL_ARRAY_POINTER_EXT", 0x8443}, {"GL_MAP1_TANGENT_EXT", 0x8444}, {"GL_MAP2_TANGENT_EXT", 0x8445}, {"GL_MAP1_BINORMAL_EXT", 0x8446}, {"GL_MAP2_BINORMAL_EXT", 0x8447}, {"GL_NEAREST_CLIPMAP_NEAREST_SGIX", 0x844D}, {"GL_NEAREST_CLIPMAP_LINEAR_SGIX", 0x844E}, {"GL_LINEAR_CLIPMAP_NEAREST_SGIX", 0x844F}, {"GL_FOG_COORDINATE_SOURCE", 0x8450}, {"GL_FOG_COORDINATE_SOURCE_EXT", 0x8450}, {"GL_FOG_COORD_SRC", 0x8450}, {"GL_FOG_COORDINATE", 0x8451}, {"GL_FOG_COORD", 0x8451}, {"GL_FOG_COORDINATE_EXT", 0x8451}, {"GL_FRAGMENT_DEPTH", 0x8452}, {"GL_FRAGMENT_DEPTH_EXT", 0x8452}, {"GL_CURRENT_FOG_COORDINATE", 0x8453}, {"GL_CURRENT_FOG_COORD", 0x8453}, {"GL_CURRENT_FOG_COORDINATE_EXT", 0x8453}, {"GL_FOG_COORDINATE_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_TYPE_EXT", 0x8454}, {"GL_FOG_COORD_ARRAY_TYPE", 0x8454}, {"GL_FOG_COORDINATE_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_STRIDE_EXT", 0x8455}, {"GL_FOG_COORD_ARRAY_STRIDE", 0x8455}, {"GL_FOG_COORDINATE_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY_POINTER_EXT", 0x8456}, {"GL_FOG_COORD_ARRAY_POINTER", 0x8456}, {"GL_FOG_COORDINATE_ARRAY", 0x8457}, {"GL_FOG_COORDINATE_ARRAY_EXT", 0x8457}, {"GL_FOG_COORD_ARRAY", 0x8457}, {"GL_COLOR_SUM", 0x8458}, {"GL_COLOR_SUM_ARB", 0x8458}, {"GL_COLOR_SUM_EXT", 0x8458}, {"GL_CURRENT_SECONDARY_COLOR", 0x8459}, {"GL_CURRENT_SECONDARY_COLOR_EXT", 0x8459}, {"GL_SECONDARY_COLOR_ARRAY_SIZE", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_SIZE_EXT", 0x845A}, {"GL_SECONDARY_COLOR_ARRAY_TYPE", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_TYPE_EXT", 0x845B}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT", 0x845C}, {"GL_SECONDARY_COLOR_ARRAY_POINTER", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY_POINTER_EXT", 0x845D}, {"GL_SECONDARY_COLOR_ARRAY", 0x845E}, {"GL_SECONDARY_COLOR_ARRAY_EXT", 0x845E}, {"GL_CURRENT_RASTER_SECONDARY_COLOR", 0x845F}, {"GL_ALIASED_POINT_SIZE_RANGE", 0x846D}, {"GL_ALIASED_LINE_WIDTH_RANGE", 0x846E}, {"GL_SCREEN_COORDINATES_REND", 0x8490}, {"GL_INVERTED_SCREEN_W_REND", 0x8491}, {"GL_TEXTURE0", 0x84C0}, {"GL_TEXTURE0_ARB", 0x84C0}, {"GL_TEXTURE1", 0x84C1}, {"GL_TEXTURE1_ARB", 0x84C1}, {"GL_TEXTURE2", 0x84C2}, {"GL_TEXTURE2_ARB", 0x84C2}, {"GL_TEXTURE3", 0x84C3}, {"GL_TEXTURE3_ARB", 0x84C3}, {"GL_TEXTURE4", 0x84C4}, {"GL_TEXTURE4_ARB", 0x84C4}, {"GL_TEXTURE5", 0x84C5}, {"GL_TEXTURE5_ARB", 0x84C5}, {"GL_TEXTURE6", 0x84C6}, {"GL_TEXTURE6_ARB", 0x84C6}, {"GL_TEXTURE7", 0x84C7}, {"GL_TEXTURE7_ARB", 0x84C7}, {"GL_TEXTURE8", 0x84C8}, {"GL_TEXTURE8_ARB", 0x84C8}, {"GL_TEXTURE9", 0x84C9}, {"GL_TEXTURE9_ARB", 0x84C9}, {"GL_TEXTURE10", 0x84CA}, {"GL_TEXTURE10_ARB", 0x84CA}, {"GL_TEXTURE11", 0x84CB}, {"GL_TEXTURE11_ARB", 0x84CB}, {"GL_TEXTURE12", 0x84CC}, {"GL_TEXTURE12_ARB", 0x84CC}, {"GL_TEXTURE13", 0x84CD}, {"GL_TEXTURE13_ARB", 0x84CD}, {"GL_TEXTURE14", 0x84CE}, {"GL_TEXTURE14_ARB", 0x84CE}, {"GL_TEXTURE15", 0x84CF}, {"GL_TEXTURE15_ARB", 0x84CF}, {"GL_TEXTURE16", 0x84D0}, {"GL_TEXTURE16_ARB", 0x84D0}, {"GL_TEXTURE17", 0x84D1}, {"GL_TEXTURE17_ARB", 0x84D1}, {"GL_TEXTURE18", 0x84D2}, {"GL_TEXTURE18_ARB", 0x84D2}, {"GL_TEXTURE19", 0x84D3}, {"GL_TEXTURE19_ARB", 0x84D3}, {"GL_TEXTURE20", 0x84D4}, {"GL_TEXTURE20_ARB", 0x84D4}, {"GL_TEXTURE21", 0x84D5}, {"GL_TEXTURE21_ARB", 0x84D5}, {"GL_TEXTURE22", 0x84D6}, {"GL_TEXTURE22_ARB", 0x84D6}, {"GL_TEXTURE23", 0x84D7}, {"GL_TEXTURE23_ARB", 0x84D7}, {"GL_TEXTURE24", 0x84D8}, {"GL_TEXTURE24_ARB", 0x84D8}, {"GL_TEXTURE25", 0x84D9}, {"GL_TEXTURE25_ARB", 0x84D9}, {"GL_TEXTURE26", 0x84DA}, {"GL_TEXTURE26_ARB", 0x84DA}, {"GL_TEXTURE27", 0x84DB}, {"GL_TEXTURE27_ARB", 0x84DB}, {"GL_TEXTURE28", 0x84DC}, {"GL_TEXTURE28_ARB", 0x84DC}, {"GL_TEXTURE29", 0x84DD}, {"GL_TEXTURE29_ARB", 0x84DD}, {"GL_TEXTURE30", 0x84DE}, {"GL_TEXTURE30_ARB", 0x84DE}, {"GL_TEXTURE31", 0x84DF}, {"GL_TEXTURE31_ARB", 0x84DF}, {"GL_ACTIVE_TEXTURE", 0x84E0}, {"GL_ACTIVE_TEXTURE_ARB", 0x84E0}, {"GL_CLIENT_ACTIVE_TEXTURE", 0x84E1}, {"GL_CLIENT_ACTIVE_TEXTURE_ARB", 0x84E1}, {"GL_MAX_TEXTURE_UNITS", 0x84E2}, {"GL_MAX_TEXTURE_UNITS_ARB", 0x84E2}, {"GL_TRANSPOSE_MODELVIEW_MATRIX", 0x84E3}, {"GL_TRANSPOSE_MODELVIEW_MATRIX_ARB", 0x84E3}, {"GL_TRANSPOSE_PROJECTION_MATRIX", 0x84E4}, {"GL_TRANSPOSE_PROJECTION_MATRIX_ARB", 0x84E4}, {"GL_TRANSPOSE_TEXTURE_MATRIX", 0x84E5}, {"GL_TRANSPOSE_TEXTURE_MATRIX_ARB", 0x84E5}, {"GL_TRANSPOSE_COLOR_MATRIX", 0x84E6}, {"GL_TRANSPOSE_COLOR_MATRIX_ARB", 0x84E6}, {"GL_SUBTRACT", 0x84E7}, {"GL_SUBTRACT_ARB", 0x84E7}, {"GL_MAX_RENDERBUFFER_SIZE", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_EXT", 0x84E8}, {"GL_MAX_RENDERBUFFER_SIZE_OES", 0x84E8}, {"GL_COMPRESSED_ALPHA", 0x84E9}, {"GL_COMPRESSED_ALPHA_ARB", 0x84E9}, {"GL_COMPRESSED_LUMINANCE", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ARB", 0x84EA}, {"GL_COMPRESSED_LUMINANCE_ALPHA", 0x84EB}, {"GL_COMPRESSED_LUMINANCE_ALPHA_ARB", 0x84EB}, {"GL_COMPRESSED_INTENSITY", 0x84EC}, {"GL_COMPRESSED_INTENSITY_ARB", 0x84EC}, {"GL_COMPRESSED_RGB", 0x84ED}, {"GL_COMPRESSED_RGB_ARB", 0x84ED}, {"GL_COMPRESSED_RGBA", 0x84EE}, {"GL_COMPRESSED_RGBA_ARB", 0x84EE}, {"GL_TEXTURE_COMPRESSION_HINT", 0x84EF}, {"GL_TEXTURE_COMPRESSION_HINT_ARB", 0x84EF}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER", 0x84F0}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x84F1}, {"GL_ALL_COMPLETED_NV", 0x84F2}, {"GL_FENCE_STATUS_NV", 0x84F3}, {"GL_FENCE_CONDITION_NV", 0x84F4}, {"GL_TEXTURE_RECTANGLE", 0x84F5}, {"GL_TEXTURE_RECTANGLE_ARB", 0x84F5}, {"GL_TEXTURE_RECTANGLE_NV", 0x84F5}, {"GL_TEXTURE_BINDING_RECTANGLE", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_ARB", 0x84F6}, {"GL_TEXTURE_BINDING_RECTANGLE_NV", 0x84F6}, {"GL_PROXY_TEXTURE_RECTANGLE", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_ARB", 0x84F7}, {"GL_PROXY_TEXTURE_RECTANGLE_NV", 0x84F7}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB", 0x84F8}, {"GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", 0x84F8}, {"GL_DEPTH_STENCIL", 0x84F9}, {"GL_DEPTH_STENCIL_EXT", 0x84F9}, {"GL_DEPTH_STENCIL_NV", 0x84F9}, {"GL_DEPTH_STENCIL_OES", 0x84F9}, {"GL_UNSIGNED_INT_24_8", 0x84FA}, {"GL_UNSIGNED_INT_24_8_EXT", 0x84FA}, {"GL_UNSIGNED_INT_24_8_NV", 0x84FA}, {"GL_UNSIGNED_INT_24_8_OES", 0x84FA}, {"GL_MAX_TEXTURE_LOD_BIAS", 0x84FD}, {"GL_MAX_TEXTURE_LOD_BIAS_EXT", 0x84FD}, {"GL_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FE}, {"GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", 0x84FF}, {"GL_TEXTURE_FILTER_CONTROL", 0x8500}, {"GL_TEXTURE_FILTER_CONTROL_EXT", 0x8500}, {"GL_TEXTURE_LOD_BIAS", 0x8501}, {"GL_TEXTURE_LOD_BIAS_EXT", 0x8501}, {"GL_MODELVIEW1_STACK_DEPTH_EXT", 0x8502}, {"GL_COMBINE4_NV", 0x8503}, {"GL_MAX_SHININESS_NV", 0x8504}, {"GL_MAX_SPOT_EXPONENT_NV", 0x8505}, {"GL_MODELVIEW1_MATRIX_EXT", 0x8506}, {"GL_INCR_WRAP", 0x8507}, {"GL_INCR_WRAP_EXT", 0x8507}, {"GL_INCR_WRAP_OES", 0x8507}, {"GL_DECR_WRAP", 0x8508}, {"GL_DECR_WRAP_EXT", 0x8508}, {"GL_DECR_WRAP_OES", 0x8508}, {"GL_VERTEX_WEIGHTING_EXT", 0x8509}, {"GL_MODELVIEW1_ARB", 0x850A}, {"GL_MODELVIEW1_EXT", 0x850A}, {"GL_CURRENT_VERTEX_WEIGHT_EXT", 0x850B}, {"GL_VERTEX_WEIGHT_ARRAY_EXT", 0x850C}, {"GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT", 0x850D}, {"GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT", 0x850E}, {"GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT", 0x850F}, {"GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT", 0x8510}, {"GL_NORMAL_MAP", 0x8511}, {"GL_NORMAL_MAP_ARB", 0x8511}, {"GL_NORMAL_MAP_EXT", 0x8511}, {"GL_NORMAL_MAP_NV", 0x8511}, {"GL_NORMAL_MAP_OES", 0x8511}, {"GL_REFLECTION_MAP", 0x8512}, {"GL_REFLECTION_MAP_ARB", 0x8512}, {"GL_REFLECTION_MAP_EXT", 0x8512}, {"GL_REFLECTION_MAP_NV", 0x8512}, {"GL_REFLECTION_MAP_OES", 0x8512}, {"GL_TEXTURE_CUBE_MAP", 0x8513}, {"GL_TEXTURE_CUBE_MAP_ARB", 0x8513}, {"GL_TEXTURE_CUBE_MAP_EXT", 0x8513}, {"GL_TEXTURE_CUBE_MAP_OES", 0x8513}, {"GL_TEXTURE_BINDING_CUBE_MAP", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARB", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_EXT", 0x8514}, {"GL_TEXTURE_BINDING_CUBE_MAP_OES", 0x8514}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT", 0x8515}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES", 0x8515}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT", 0x8516}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES", 0x8516}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT", 0x8517}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES", 0x8517}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT", 0x8518}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES", 0x8518}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT", 0x8519}, {"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES", 0x8519}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT", 0x851A}, {"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES", 0x851A}, {"GL_PROXY_TEXTURE_CUBE_MAP", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARB", 0x851B}, {"GL_PROXY_TEXTURE_CUBE_MAP_EXT", 0x851B}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT", 0x851C}, {"GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES", 0x851C}, {"GL_VERTEX_ARRAY_RANGE_APPLE", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_NV", 0x851D}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_LENGTH_NV", 0x851E}, {"GL_VERTEX_ARRAY_RANGE_VALID_NV", 0x851F}, {"GL_VERTEX_ARRAY_STORAGE_HINT_APPLE", 0x851F}, {"GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV", 0x8520}, {"GL_VERTEX_ARRAY_RANGE_POINTER_APPLE", 0x8521}, {"GL_VERTEX_ARRAY_RANGE_POINTER_NV", 0x8521}, {"GL_REGISTER_COMBINERS_NV", 0x8522}, {"GL_VARIABLE_A_NV", 0x8523}, {"GL_VARIABLE_B_NV", 0x8524}, {"GL_VARIABLE_C_NV", 0x8525}, {"GL_VARIABLE_D_NV", 0x8526}, {"GL_VARIABLE_E_NV", 0x8527}, {"GL_VARIABLE_F_NV", 0x8528}, {"GL_VARIABLE_G_NV", 0x8529}, {"GL_CONSTANT_COLOR0_NV", 0x852A}, {"GL_CONSTANT_COLOR1_NV", 0x852B}, {"GL_PRIMARY_COLOR_NV", 0x852C}, {"GL_SECONDARY_COLOR_NV", 0x852D}, {"GL_SPARE0_NV", 0x852E}, {"GL_SPARE1_NV", 0x852F}, {"GL_DISCARD_NV", 0x8530}, {"GL_E_TIMES_F_NV", 0x8531}, {"GL_SPARE0_PLUS_SECONDARY_COLOR_NV", 0x8532}, {"GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV", 0x8533}, {"GL_MULTISAMPLE_FILTER_HINT_NV", 0x8534}, {"GL_PER_STAGE_CONSTANTS_NV", 0x8535}, {"GL_UNSIGNED_IDENTITY_NV", 0x8536}, {"GL_UNSIGNED_INVERT_NV", 0x8537}, {"GL_EXPAND_NORMAL_NV", 0x8538}, {"GL_EXPAND_NEGATE_NV", 0x8539}, {"GL_HALF_BIAS_NORMAL_NV", 0x853A}, {"GL_HALF_BIAS_NEGATE_NV", 0x853B}, {"GL_SIGNED_IDENTITY_NV", 0x853C}, {"GL_SIGNED_NEGATE_NV", 0x853D}, {"GL_SCALE_BY_TWO_NV", 0x853E}, {"GL_SCALE_BY_FOUR_NV", 0x853F}, {"GL_SCALE_BY_ONE_HALF_NV", 0x8540}, {"GL_BIAS_BY_NEGATIVE_ONE_HALF_NV", 0x8541}, {"GL_COMBINER_INPUT_NV", 0x8542}, {"GL_COMBINER_MAPPING_NV", 0x8543}, {"GL_COMBINER_COMPONENT_USAGE_NV", 0x8544}, {"GL_COMBINER_AB_DOT_PRODUCT_NV", 0x8545}, {"GL_COMBINER_CD_DOT_PRODUCT_NV", 0x8546}, {"GL_COMBINER_MUX_SUM_NV", 0x8547}, {"GL_COMBINER_SCALE_NV", 0x8548}, {"GL_COMBINER_BIAS_NV", 0x8549}, {"GL_COMBINER_AB_OUTPUT_NV", 0x854A}, {"GL_COMBINER_CD_OUTPUT_NV", 0x854B}, {"GL_COMBINER_SUM_OUTPUT_NV", 0x854C}, {"GL_MAX_GENERAL_COMBINERS_NV", 0x854D}, {"GL_NUM_GENERAL_COMBINERS_NV", 0x854E}, {"GL_COLOR_SUM_CLAMP_NV", 0x854F}, {"GL_COMBINER0_NV", 0x8550}, {"GL_COMBINER1_NV", 0x8551}, {"GL_COMBINER2_NV", 0x8552}, {"GL_COMBINER3_NV", 0x8553}, {"GL_COMBINER4_NV", 0x8554}, {"GL_COMBINER5_NV", 0x8555}, {"GL_COMBINER6_NV", 0x8556}, {"GL_COMBINER7_NV", 0x8557}, {"GL_PRIMITIVE_RESTART_NV", 0x8558}, {"GL_PRIMITIVE_RESTART_INDEX_NV", 0x8559}, {"GL_FOG_DISTANCE_MODE_NV", 0x855A}, {"GL_EYE_RADIAL_NV", 0x855B}, {"GL_EYE_PLANE_ABSOLUTE_NV", 0x855C}, {"GL_EMBOSS_LIGHT_NV", 0x855D}, {"GL_EMBOSS_CONSTANT_NV", 0x855E}, {"GL_EMBOSS_MAP_NV", 0x855F}, {"GL_RED_MIN_CLAMP_INGR", 0x8560}, {"GL_GREEN_MIN_CLAMP_INGR", 0x8561}, {"GL_BLUE_MIN_CLAMP_INGR", 0x8562}, {"GL_ALPHA_MIN_CLAMP_INGR", 0x8563}, {"GL_RED_MAX_CLAMP_INGR", 0x8564}, {"GL_GREEN_MAX_CLAMP_INGR", 0x8565}, {"GL_BLUE_MAX_CLAMP_INGR", 0x8566}, {"GL_ALPHA_MAX_CLAMP_INGR", 0x8567}, {"GL_INTERLACE_READ_INGR", 0x8568}, {"GL_COMBINE", 0x8570}, {"GL_COMBINE_ARB", 0x8570}, {"GL_COMBINE_EXT", 0x8570}, {"GL_COMBINE_RGB", 0x8571}, {"GL_COMBINE_RGB_ARB", 0x8571}, {"GL_COMBINE_RGB_EXT", 0x8571}, {"GL_COMBINE_ALPHA", 0x8572}, {"GL_COMBINE_ALPHA_ARB", 0x8572}, {"GL_COMBINE_ALPHA_EXT", 0x8572}, {"GL_RGB_SCALE", 0x8573}, {"GL_RGB_SCALE_ARB", 0x8573}, {"GL_RGB_SCALE_EXT", 0x8573}, {"GL_ADD_SIGNED", 0x8574}, {"GL_ADD_SIGNED_ARB", 0x8574}, {"GL_ADD_SIGNED_EXT", 0x8574}, {"GL_INTERPOLATE", 0x8575}, {"GL_INTERPOLATE_ARB", 0x8575}, {"GL_INTERPOLATE_EXT", 0x8575}, {"GL_CONSTANT", 0x8576}, {"GL_CONSTANT_ARB", 0x8576}, {"GL_CONSTANT_EXT", 0x8576}, {"GL_PRIMARY_COLOR", 0x8577}, {"GL_PRIMARY_COLOR_ARB", 0x8577}, {"GL_PRIMARY_COLOR_EXT", 0x8577}, {"GL_PREVIOUS", 0x8578}, {"GL_PREVIOUS_ARB", 0x8578}, {"GL_PREVIOUS_EXT", 0x8578}, {"GL_SOURCE0_RGB", 0x8580}, {"GL_SOURCE0_RGB_ARB", 0x8580}, {"GL_SOURCE0_RGB_EXT", 0x8580}, {"GL_SRC0_RGB", 0x8580}, {"GL_SOURCE1_RGB", 0x8581}, {"GL_SOURCE1_RGB_ARB", 0x8581}, {"GL_SOURCE1_RGB_EXT", 0x8581}, {"GL_SRC1_RGB", 0x8581}, {"GL_SOURCE2_RGB", 0x8582}, {"GL_SOURCE2_RGB_ARB", 0x8582}, {"GL_SOURCE2_RGB_EXT", 0x8582}, {"GL_SRC2_RGB", 0x8582}, {"GL_SOURCE3_RGB_NV", 0x8583}, {"GL_SOURCE0_ALPHA", 0x8588}, {"GL_SOURCE0_ALPHA_ARB", 0x8588}, {"GL_SOURCE0_ALPHA_EXT", 0x8588}, {"GL_SRC0_ALPHA", 0x8588}, {"GL_SOURCE1_ALPHA", 0x8589}, {"GL_SOURCE1_ALPHA_ARB", 0x8589}, {"GL_SOURCE1_ALPHA_EXT", 0x8589}, {"GL_SRC1_ALPHA", 0x8589}, {"GL_SOURCE2_ALPHA", 0x858A}, {"GL_SOURCE2_ALPHA_ARB", 0x858A}, {"GL_SOURCE2_ALPHA_EXT", 0x858A}, {"GL_SRC2_ALPHA", 0x858A}, {"GL_SOURCE3_ALPHA_NV", 0x858B}, {"GL_OPERAND0_RGB", 0x8590}, {"GL_OPERAND0_RGB_ARB", 0x8590}, {"GL_OPERAND0_RGB_EXT", 0x8590}, {"GL_OPERAND1_RGB", 0x8591}, {"GL_OPERAND1_RGB_ARB", 0x8591}, {"GL_OPERAND1_RGB_EXT", 0x8591}, {"GL_OPERAND2_RGB", 0x8592}, {"GL_OPERAND2_RGB_ARB", 0x8592}, {"GL_OPERAND2_RGB_EXT", 0x8592}, {"GL_OPERAND3_RGB_NV", 0x8593}, {"GL_OPERAND0_ALPHA", 0x8598}, {"GL_OPERAND0_ALPHA_ARB", 0x8598}, {"GL_OPERAND0_ALPHA_EXT", 0x8598}, {"GL_OPERAND1_ALPHA", 0x8599}, {"GL_OPERAND1_ALPHA_ARB", 0x8599}, {"GL_OPERAND1_ALPHA_EXT", 0x8599}, {"GL_OPERAND2_ALPHA", 0x859A}, {"GL_OPERAND2_ALPHA_ARB", 0x859A}, {"GL_OPERAND2_ALPHA_EXT", 0x859A}, {"GL_OPERAND3_ALPHA_NV", 0x859B}, {"GL_PACK_SUBSAMPLE_RATE_SGIX", 0x85A0}, {"GL_UNPACK_SUBSAMPLE_RATE_SGIX", 0x85A1}, {"GL_PIXEL_SUBSAMPLE_4444_SGIX", 0x85A2}, {"GL_PIXEL_SUBSAMPLE_2424_SGIX", 0x85A3}, {"GL_PIXEL_SUBSAMPLE_4242_SGIX", 0x85A4}, {"GL_PERTURB_EXT", 0x85AE}, {"GL_TEXTURE_NORMAL_EXT", 0x85AF}, {"GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE", 0x85B0}, {"GL_TRANSFORM_HINT_APPLE", 0x85B1}, {"GL_UNPACK_CLIENT_STORAGE_APPLE", 0x85B2}, {"GL_BUFFER_OBJECT_APPLE", 0x85B3}, {"GL_STORAGE_CLIENT_APPLE", 0x85B4}, {"GL_VERTEX_ARRAY_BINDING", 0x85B5}, {"GL_VERTEX_ARRAY_BINDING_APPLE", 0x85B5}, {"GL_TEXTURE_RANGE_LENGTH_APPLE", 0x85B7}, {"GL_TEXTURE_RANGE_POINTER_APPLE", 0x85B8}, {"GL_YCBCR_422_APPLE", 0x85B9}, {"GL_UNSIGNED_SHORT_8_8_APPLE", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_MESA", 0x85BA}, {"GL_UNSIGNED_SHORT_8_8_REV_APPLE", 0x85BB}, {"GL_UNSIGNED_SHORT_8_8_REV_MESA", 0x85BB}, {"GL_TEXTURE_STORAGE_HINT_APPLE", 0x85BC}, {"GL_STORAGE_PRIVATE_APPLE", 0x85BD}, {"GL_STORAGE_CACHED_APPLE", 0x85BE}, {"GL_STORAGE_SHARED_APPLE", 0x85BF}, {"GL_REPLACEMENT_CODE_ARRAY_SUN", 0x85C0}, {"GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN", 0x85C1}, {"GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN", 0x85C2}, {"GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN", 0x85C3}, {"GL_R1UI_V3F_SUN", 0x85C4}, {"GL_R1UI_C4UB_V3F_SUN", 0x85C5}, {"GL_R1UI_C3F_V3F_SUN", 0x85C6}, {"GL_R1UI_N3F_V3F_SUN", 0x85C7}, {"GL_R1UI_C4F_N3F_V3F_SUN", 0x85C8}, {"GL_R1UI_T2F_V3F_SUN", 0x85C9}, {"GL_R1UI_T2F_N3F_V3F_SUN", 0x85CA}, {"GL_R1UI_T2F_C4F_N3F_V3F_SUN", 0x85CB}, {"GL_SLICE_ACCUM_SUN", 0x85CC}, {"GL_QUAD_MESH_SUN", 0x8614}, {"GL_TRIANGLE_MESH_SUN", 0x8615}, {"GL_VERTEX_PROGRAM_ARB", 0x8620}, {"GL_VERTEX_PROGRAM_NV", 0x8620}, {"GL_VERTEX_STATE_PROGRAM_NV", 0x8621}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED", 0x8622}, {"GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB", 0x8622}, {"GL_ATTRIB_ARRAY_SIZE_NV", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE", 0x8623}, {"GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB", 0x8623}, {"GL_ATTRIB_ARRAY_STRIDE_NV", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE", 0x8624}, {"GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB", 0x8624}, {"GL_ATTRIB_ARRAY_TYPE_NV", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE", 0x8625}, {"GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB", 0x8625}, {"GL_CURRENT_ATTRIB_NV", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB", 0x8626}, {"GL_CURRENT_VERTEX_ATTRIB_ARB", 0x8626}, {"GL_PROGRAM_LENGTH_ARB", 0x8627}, {"GL_PROGRAM_LENGTH_NV", 0x8627}, {"GL_PROGRAM_STRING_ARB", 0x8628}, {"GL_PROGRAM_STRING_NV", 0x8628}, {"GL_MODELVIEW_PROJECTION_NV", 0x8629}, {"GL_IDENTITY_NV", 0x862A}, {"GL_INVERSE_NV", 0x862B}, {"GL_TRANSPOSE_NV", 0x862C}, {"GL_INVERSE_TRANSPOSE_NV", 0x862D}, {"GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB", 0x862E}, {"GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV", 0x862E}, {"GL_MAX_PROGRAM_MATRICES_ARB", 0x862F}, {"GL_MAX_TRACK_MATRICES_NV", 0x862F}, {"GL_MATRIX0_NV", 0x8630}, {"GL_MATRIX1_NV", 0x8631}, {"GL_MATRIX2_NV", 0x8632}, {"GL_MATRIX3_NV", 0x8633}, {"GL_MATRIX4_NV", 0x8634}, {"GL_MATRIX5_NV", 0x8635}, {"GL_MATRIX6_NV", 0x8636}, {"GL_MATRIX7_NV", 0x8637}, {"GL_CURRENT_MATRIX_STACK_DEPTH_ARB", 0x8640}, {"GL_CURRENT_MATRIX_STACK_DEPTH_NV", 0x8640}, {"GL_CURRENT_MATRIX_ARB", 0x8641}, {"GL_CURRENT_MATRIX_NV", 0x8641}, {"GL_VERTEX_PROGRAM_POINT_SIZE", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_VERTEX_PROGRAM_POINT_SIZE_NV", 0x8642}, {"GL_PROGRAM_POINT_SIZE", 0x8642}, {"GL_PROGRAM_POINT_SIZE_ARB", 0x8642}, {"GL_PROGRAM_POINT_SIZE_EXT", 0x8642}, {"GL_VERTEX_PROGRAM_TWO_SIDE", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_ARB", 0x8643}, {"GL_VERTEX_PROGRAM_TWO_SIDE_NV", 0x8643}, {"GL_PROGRAM_PARAMETER_NV", 0x8644}, {"GL_ATTRIB_ARRAY_POINTER_NV", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER", 0x8645}, {"GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB", 0x8645}, {"GL_PROGRAM_TARGET_NV", 0x8646}, {"GL_PROGRAM_RESIDENT_NV", 0x8647}, {"GL_TRACK_MATRIX_NV", 0x8648}, {"GL_TRACK_MATRIX_TRANSFORM_NV", 0x8649}, {"GL_VERTEX_PROGRAM_BINDING_NV", 0x864A}, {"GL_PROGRAM_ERROR_POSITION_ARB", 0x864B}, {"GL_PROGRAM_ERROR_POSITION_NV", 0x864B}, {"GL_OFFSET_TEXTURE_RECTANGLE_NV", 0x864C}, {"GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV", 0x864D}, {"GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV", 0x864E}, {"GL_DEPTH_CLAMP", 0x864F}, {"GL_DEPTH_CLAMP_NV", 0x864F}, {"GL_VERTEX_ATTRIB_ARRAY0_NV", 0x8650}, {"GL_VERTEX_ATTRIB_ARRAY1_NV", 0x8651}, {"GL_VERTEX_ATTRIB_ARRAY2_NV", 0x8652}, {"GL_VERTEX_ATTRIB_ARRAY3_NV", 0x8653}, {"GL_VERTEX_ATTRIB_ARRAY4_NV", 0x8654}, {"GL_VERTEX_ATTRIB_ARRAY5_NV", 0x8655}, {"GL_VERTEX_ATTRIB_ARRAY6_NV", 0x8656}, {"GL_VERTEX_ATTRIB_ARRAY7_NV", 0x8657}, {"GL_VERTEX_ATTRIB_ARRAY8_NV", 0x8658}, {"GL_VERTEX_ATTRIB_ARRAY9_NV", 0x8659}, {"GL_VERTEX_ATTRIB_ARRAY10_NV", 0x865A}, {"GL_VERTEX_ATTRIB_ARRAY11_NV", 0x865B}, {"GL_VERTEX_ATTRIB_ARRAY12_NV", 0x865C}, {"GL_VERTEX_ATTRIB_ARRAY13_NV", 0x865D}, {"GL_VERTEX_ATTRIB_ARRAY14_NV", 0x865E}, {"GL_VERTEX_ATTRIB_ARRAY15_NV", 0x865F}, {"GL_MAP1_VERTEX_ATTRIB0_4_NV", 0x8660}, {"GL_MAP1_VERTEX_ATTRIB1_4_NV", 0x8661}, {"GL_MAP1_VERTEX_ATTRIB2_4_NV", 0x8662}, {"GL_MAP1_VERTEX_ATTRIB3_4_NV", 0x8663}, {"GL_MAP1_VERTEX_ATTRIB4_4_NV", 0x8664}, {"GL_MAP1_VERTEX_ATTRIB5_4_NV", 0x8665}, {"GL_MAP1_VERTEX_ATTRIB6_4_NV", 0x8666}, {"GL_MAP1_VERTEX_ATTRIB7_4_NV", 0x8667}, {"GL_MAP1_VERTEX_ATTRIB8_4_NV", 0x8668}, {"GL_MAP1_VERTEX_ATTRIB9_4_NV", 0x8669}, {"GL_MAP1_VERTEX_ATTRIB10_4_NV", 0x866A}, {"GL_MAP1_VERTEX_ATTRIB11_4_NV", 0x866B}, {"GL_MAP1_VERTEX_ATTRIB12_4_NV", 0x866C}, {"GL_MAP1_VERTEX_ATTRIB13_4_NV", 0x866D}, {"GL_MAP1_VERTEX_ATTRIB14_4_NV", 0x866E}, {"GL_MAP1_VERTEX_ATTRIB15_4_NV", 0x866F}, {"GL_MAP2_VERTEX_ATTRIB0_4_NV", 0x8670}, {"GL_MAP2_VERTEX_ATTRIB1_4_NV", 0x8671}, {"GL_MAP2_VERTEX_ATTRIB2_4_NV", 0x8672}, {"GL_MAP2_VERTEX_ATTRIB3_4_NV", 0x8673}, {"GL_MAP2_VERTEX_ATTRIB4_4_NV", 0x8674}, {"GL_MAP2_VERTEX_ATTRIB5_4_NV", 0x8675}, {"GL_MAP2_VERTEX_ATTRIB6_4_NV", 0x8676}, {"GL_MAP2_VERTEX_ATTRIB7_4_NV", 0x8677}, {"GL_PROGRAM_BINDING_ARB", 0x8677}, {"GL_MAP2_VERTEX_ATTRIB8_4_NV", 0x8678}, {"GL_MAP2_VERTEX_ATTRIB9_4_NV", 0x8679}, {"GL_MAP2_VERTEX_ATTRIB10_4_NV", 0x867A}, {"GL_MAP2_VERTEX_ATTRIB11_4_NV", 0x867B}, {"GL_MAP2_VERTEX_ATTRIB12_4_NV", 0x867C}, {"GL_MAP2_VERTEX_ATTRIB13_4_NV", 0x867D}, {"GL_MAP2_VERTEX_ATTRIB14_4_NV", 0x867E}, {"GL_MAP2_VERTEX_ATTRIB15_4_NV", 0x867F}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE", 0x86A0}, {"GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB", 0x86A0}, {"GL_TEXTURE_COMPRESSED", 0x86A1}, {"GL_TEXTURE_COMPRESSED_ARB", 0x86A1}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS", 0x86A2}, {"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A2}, {"GL_COMPRESSED_TEXTURE_FORMATS", 0x86A3}, {"GL_COMPRESSED_TEXTURE_FORMATS_ARB", 0x86A3}, {"GL_MAX_VERTEX_UNITS_ARB", 0x86A4}, {"GL_MAX_VERTEX_UNITS_OES", 0x86A4}, {"GL_ACTIVE_VERTEX_UNITS_ARB", 0x86A5}, {"GL_WEIGHT_SUM_UNITY_ARB", 0x86A6}, {"GL_VERTEX_BLEND_ARB", 0x86A7}, {"GL_CURRENT_WEIGHT_ARB", 0x86A8}, {"GL_WEIGHT_ARRAY_TYPE_ARB", 0x86A9}, {"GL_WEIGHT_ARRAY_TYPE_OES", 0x86A9}, {"GL_WEIGHT_ARRAY_STRIDE_ARB", 0x86AA}, {"GL_WEIGHT_ARRAY_STRIDE_OES", 0x86AA}, {"GL_WEIGHT_ARRAY_SIZE_ARB", 0x86AB}, {"GL_WEIGHT_ARRAY_SIZE_OES", 0x86AB}, {"GL_WEIGHT_ARRAY_POINTER_ARB", 0x86AC}, {"GL_WEIGHT_ARRAY_POINTER_OES", 0x86AC}, {"GL_WEIGHT_ARRAY_ARB", 0x86AD}, {"GL_WEIGHT_ARRAY_OES", 0x86AD}, {"GL_DOT3_RGB", 0x86AE}, {"GL_DOT3_RGB_ARB", 0x86AE}, {"GL_DOT3_RGBA", 0x86AF}, {"GL_DOT3_RGBA_ARB", 0x86AF}, {"GL_DOT3_RGBA_IMG", 0x86AF}, {"GL_COMPRESSED_RGB_FXT1_3DFX", 0x86B0}, {"GL_COMPRESSED_RGBA_FXT1_3DFX", 0x86B1}, {"GL_MULTISAMPLE_3DFX", 0x86B2}, {"GL_SAMPLE_BUFFERS_3DFX", 0x86B3}, {"GL_SAMPLES_3DFX", 0x86B4}, {"GL_EVAL_2D_NV", 0x86C0}, {"GL_EVAL_TRIANGULAR_2D_NV", 0x86C1}, {"GL_MAP_TESSELLATION_NV", 0x86C2}, {"GL_MAP_ATTRIB_U_ORDER_NV", 0x86C3}, {"GL_MAP_ATTRIB_V_ORDER_NV", 0x86C4}, {"GL_EVAL_FRACTIONAL_TESSELLATION_NV", 0x86C5}, {"GL_EVAL_VERTEX_ATTRIB0_NV", 0x86C6}, {"GL_EVAL_VERTEX_ATTRIB1_NV", 0x86C7}, {"GL_EVAL_VERTEX_ATTRIB2_NV", 0x86C8}, {"GL_EVAL_VERTEX_ATTRIB3_NV", 0x86C9}, {"GL_EVAL_VERTEX_ATTRIB4_NV", 0x86CA}, {"GL_EVAL_VERTEX_ATTRIB5_NV", 0x86CB}, {"GL_EVAL_VERTEX_ATTRIB6_NV", 0x86CC}, {"GL_EVAL_VERTEX_ATTRIB7_NV", 0x86CD}, {"GL_EVAL_VERTEX_ATTRIB8_NV", 0x86CE}, {"GL_EVAL_VERTEX_ATTRIB9_NV", 0x86CF}, {"GL_EVAL_VERTEX_ATTRIB10_NV", 0x86D0}, {"GL_EVAL_VERTEX_ATTRIB11_NV", 0x86D1}, {"GL_EVAL_VERTEX_ATTRIB12_NV", 0x86D2}, {"GL_EVAL_VERTEX_ATTRIB13_NV", 0x86D3}, {"GL_EVAL_VERTEX_ATTRIB14_NV", 0x86D4}, {"GL_EVAL_VERTEX_ATTRIB15_NV", 0x86D5}, {"GL_MAX_MAP_TESSELLATION_NV", 0x86D6}, {"GL_MAX_RATIONAL_EVAL_ORDER_NV", 0x86D7}, {"GL_MAX_PROGRAM_PATCH_ATTRIBS_NV", 0x86D8}, {"GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV", 0x86D9}, {"GL_UNSIGNED_INT_S8_S8_8_8_NV", 0x86DA}, {"GL_UNSIGNED_INT_8_8_S8_S8_REV_NV", 0x86DB}, {"GL_DSDT_MAG_INTENSITY_NV", 0x86DC}, {"GL_SHADER_CONSISTENT_NV", 0x86DD}, {"GL_TEXTURE_SHADER_NV", 0x86DE}, {"GL_SHADER_OPERATION_NV", 0x86DF}, {"GL_CULL_MODES_NV", 0x86E0}, {"GL_OFFSET_TEXTURE_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_2D_MATRIX_NV", 0x86E1}, {"GL_OFFSET_TEXTURE_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_2D_SCALE_NV", 0x86E2}, {"GL_OFFSET_TEXTURE_BIAS_NV", 0x86E3}, {"GL_OFFSET_TEXTURE_2D_BIAS_NV", 0x86E3}, {"GL_PREVIOUS_TEXTURE_INPUT_NV", 0x86E4}, {"GL_CONST_EYE_NV", 0x86E5}, {"GL_PASS_THROUGH_NV", 0x86E6}, {"GL_CULL_FRAGMENT_NV", 0x86E7}, {"GL_OFFSET_TEXTURE_2D_NV", 0x86E8}, {"GL_DEPENDENT_AR_TEXTURE_2D_NV", 0x86E9}, {"GL_DEPENDENT_GB_TEXTURE_2D_NV", 0x86EA}, {"GL_SURFACE_STATE_NV", 0x86EB}, {"GL_DOT_PRODUCT_NV", 0x86EC}, {"GL_DOT_PRODUCT_DEPTH_REPLACE_NV", 0x86ED}, {"GL_DOT_PRODUCT_TEXTURE_2D_NV", 0x86EE}, {"GL_DOT_PRODUCT_TEXTURE_3D_NV", 0x86EF}, {"GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV", 0x86F0}, {"GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV", 0x86F1}, {"GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV", 0x86F2}, {"GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV", 0x86F3}, {"GL_HILO_NV", 0x86F4}, {"GL_DSDT_NV", 0x86F5}, {"GL_DSDT_MAG_NV", 0x86F6}, {"GL_DSDT_MAG_VIB_NV", 0x86F7}, {"GL_HILO16_NV", 0x86F8}, {"GL_SIGNED_HILO_NV", 0x86F9}, {"GL_SIGNED_HILO16_NV", 0x86FA}, {"GL_SIGNED_RGBA_NV", 0x86FB}, {"GL_SIGNED_RGBA8_NV", 0x86FC}, {"GL_SURFACE_REGISTERED_NV", 0x86FD}, {"GL_SIGNED_RGB_NV", 0x86FE}, {"GL_SIGNED_RGB8_NV", 0x86FF}, {"GL_SURFACE_MAPPED_NV", 0x8700}, {"GL_SIGNED_LUMINANCE_NV", 0x8701}, {"GL_SIGNED_LUMINANCE8_NV", 0x8702}, {"GL_SIGNED_LUMINANCE_ALPHA_NV", 0x8703}, {"GL_SIGNED_LUMINANCE8_ALPHA8_NV", 0x8704}, {"GL_SIGNED_ALPHA_NV", 0x8705}, {"GL_SIGNED_ALPHA8_NV", 0x8706}, {"GL_SIGNED_INTENSITY_NV", 0x8707}, {"GL_SIGNED_INTENSITY8_NV", 0x8708}, {"GL_DSDT8_NV", 0x8709}, {"GL_DSDT8_MAG8_NV", 0x870A}, {"GL_DSDT8_MAG8_INTENSITY8_NV", 0x870B}, {"GL_SIGNED_RGB_UNSIGNED_ALPHA_NV", 0x870C}, {"GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV", 0x870D}, {"GL_HI_SCALE_NV", 0x870E}, {"GL_LO_SCALE_NV", 0x870F}, {"GL_DS_SCALE_NV", 0x8710}, {"GL_DT_SCALE_NV", 0x8711}, {"GL_MAGNITUDE_SCALE_NV", 0x8712}, {"GL_VIBRANCE_SCALE_NV", 0x8713}, {"GL_HI_BIAS_NV", 0x8714}, {"GL_LO_BIAS_NV", 0x8715}, {"GL_DS_BIAS_NV", 0x8716}, {"GL_DT_BIAS_NV", 0x8717}, {"GL_MAGNITUDE_BIAS_NV", 0x8718}, {"GL_VIBRANCE_BIAS_NV", 0x8719}, {"GL_TEXTURE_BORDER_VALUES_NV", 0x871A}, {"GL_TEXTURE_HI_SIZE_NV", 0x871B}, {"GL_TEXTURE_LO_SIZE_NV", 0x871C}, {"GL_TEXTURE_DS_SIZE_NV", 0x871D}, {"GL_TEXTURE_DT_SIZE_NV", 0x871E}, {"GL_TEXTURE_MAG_SIZE_NV", 0x871F}, {"GL_MODELVIEW2_ARB", 0x8722}, {"GL_MODELVIEW3_ARB", 0x8723}, {"GL_MODELVIEW4_ARB", 0x8724}, {"GL_MODELVIEW5_ARB", 0x8725}, {"GL_MODELVIEW6_ARB", 0x8726}, {"GL_MODELVIEW7_ARB", 0x8727}, {"GL_MODELVIEW8_ARB", 0x8728}, {"GL_MODELVIEW9_ARB", 0x8729}, {"GL_MODELVIEW10_ARB", 0x872A}, {"GL_MODELVIEW11_ARB", 0x872B}, {"GL_MODELVIEW12_ARB", 0x872C}, {"GL_MODELVIEW13_ARB", 0x872D}, {"GL_MODELVIEW14_ARB", 0x872E}, {"GL_MODELVIEW15_ARB", 0x872F}, {"GL_MODELVIEW16_ARB", 0x8730}, {"GL_MODELVIEW17_ARB", 0x8731}, {"GL_MODELVIEW18_ARB", 0x8732}, {"GL_MODELVIEW19_ARB", 0x8733}, {"GL_MODELVIEW20_ARB", 0x8734}, {"GL_MODELVIEW21_ARB", 0x8735}, {"GL_MODELVIEW22_ARB", 0x8736}, {"GL_MODELVIEW23_ARB", 0x8737}, {"GL_MODELVIEW24_ARB", 0x8738}, {"GL_MODELVIEW25_ARB", 0x8739}, {"GL_MODELVIEW26_ARB", 0x873A}, {"GL_MODELVIEW27_ARB", 0x873B}, {"GL_MODELVIEW28_ARB", 0x873C}, {"GL_MODELVIEW29_ARB", 0x873D}, {"GL_MODELVIEW30_ARB", 0x873E}, {"GL_MODELVIEW31_ARB", 0x873F}, {"GL_DOT3_RGB_EXT", 0x8740}, {"GL_Z400_BINARY_AMD", 0x8740}, {"GL_DOT3_RGBA_EXT", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH_OES", 0x8741}, {"GL_PROGRAM_BINARY_LENGTH", 0x8741}, {"GL_MIRROR_CLAMP_ATI", 0x8742}, {"GL_MIRROR_CLAMP_EXT", 0x8742}, {"GL_MIRROR_CLAMP_TO_EDGE", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_ATI", 0x8743}, {"GL_MIRROR_CLAMP_TO_EDGE_EXT", 0x8743}, {"GL_MODULATE_ADD_ATI", 0x8744}, {"GL_MODULATE_SIGNED_ADD_ATI", 0x8745}, {"GL_MODULATE_SUBTRACT_ATI", 0x8746}, {"GL_SET_AMD", 0x874A}, {"GL_REPLACE_VALUE_AMD", 0x874B}, {"GL_STENCIL_OP_VALUE_AMD", 0x874C}, {"GL_STENCIL_BACK_OP_VALUE_AMD", 0x874D}, {"GL_VERTEX_ATTRIB_ARRAY_LONG", 0x874E}, {"GL_DEPTH_STENCIL_MESA", 0x8750}, {"GL_UNSIGNED_INT_24_8_MESA", 0x8751}, {"GL_UNSIGNED_INT_8_24_REV_MESA", 0x8752}, {"GL_UNSIGNED_SHORT_15_1_MESA", 0x8753}, {"GL_UNSIGNED_SHORT_1_15_REV_MESA", 0x8754}, {"GL_TRACE_MASK_MESA", 0x8755}, {"GL_TRACE_NAME_MESA", 0x8756}, {"GL_YCBCR_MESA", 0x8757}, {"GL_PACK_INVERT_MESA", 0x8758}, {"GL_DEBUG_OBJECT_MESA", 0x8759}, {"GL_TEXTURE_1D_STACK_MESAX", 0x8759}, {"GL_DEBUG_PRINT_MESA", 0x875A}, {"GL_TEXTURE_2D_STACK_MESAX", 0x875A}, {"GL_DEBUG_ASSERT_MESA", 0x875B}, {"GL_PROXY_TEXTURE_1D_STACK_MESAX", 0x875B}, {"GL_PROXY_TEXTURE_2D_STACK_MESAX", 0x875C}, {"GL_TEXTURE_1D_STACK_BINDING_MESAX", 0x875D}, {"GL_TEXTURE_2D_STACK_BINDING_MESAX", 0x875E}, {"GL_STATIC_ATI", 0x8760}, {"GL_DYNAMIC_ATI", 0x8761}, {"GL_PRESERVE_ATI", 0x8762}, {"GL_DISCARD_ATI", 0x8763}, {"GL_BUFFER_SIZE", 0x8764}, {"GL_BUFFER_SIZE_ARB", 0x8764}, {"GL_OBJECT_BUFFER_SIZE_ATI", 0x8764}, {"GL_BUFFER_USAGE", 0x8765}, {"GL_BUFFER_USAGE_ARB", 0x8765}, {"GL_OBJECT_BUFFER_USAGE_ATI", 0x8765}, {"GL_ARRAY_OBJECT_BUFFER_ATI", 0x8766}, {"GL_ARRAY_OBJECT_OFFSET_ATI", 0x8767}, {"GL_ELEMENT_ARRAY_ATI", 0x8768}, {"GL_ELEMENT_ARRAY_TYPE_ATI", 0x8769}, {"GL_ELEMENT_ARRAY_POINTER_ATI", 0x876A}, {"GL_MAX_VERTEX_STREAMS_ATI", 0x876B}, {"GL_VERTEX_STREAM0_ATI", 0x876C}, {"GL_VERTEX_STREAM1_ATI", 0x876D}, {"GL_VERTEX_STREAM2_ATI", 0x876E}, {"GL_VERTEX_STREAM3_ATI", 0x876F}, {"GL_VERTEX_STREAM4_ATI", 0x8770}, {"GL_VERTEX_STREAM5_ATI", 0x8771}, {"GL_VERTEX_STREAM6_ATI", 0x8772}, {"GL_VERTEX_STREAM7_ATI", 0x8773}, {"GL_VERTEX_SOURCE_ATI", 0x8774}, {"GL_BUMP_ROT_MATRIX_ATI", 0x8775}, {"GL_BUMP_ROT_MATRIX_SIZE_ATI", 0x8776}, {"GL_BUMP_NUM_TEX_UNITS_ATI", 0x8777}, {"GL_BUMP_TEX_UNITS_ATI", 0x8778}, {"GL_DUDV_ATI", 0x8779}, {"GL_DU8DV8_ATI", 0x877A}, {"GL_BUMP_ENVMAP_ATI", 0x877B}, {"GL_BUMP_TARGET_ATI", 0x877C}, {"GL_VERTEX_SHADER_EXT", 0x8780}, {"GL_VERTEX_SHADER_BINDING_EXT", 0x8781}, {"GL_OP_INDEX_EXT", 0x8782}, {"GL_OP_NEGATE_EXT", 0x8783}, {"GL_OP_DOT3_EXT", 0x8784}, {"GL_OP_DOT4_EXT", 0x8785}, {"GL_OP_MUL_EXT", 0x8786}, {"GL_OP_ADD_EXT", 0x8787}, {"GL_OP_MADD_EXT", 0x8788}, {"GL_OP_FRAC_EXT", 0x8789}, {"GL_OP_MAX_EXT", 0x878A}, {"GL_OP_MIN_EXT", 0x878B}, {"GL_OP_SET_GE_EXT", 0x878C}, {"GL_OP_SET_LT_EXT", 0x878D}, {"GL_OP_CLAMP_EXT", 0x878E}, {"GL_OP_FLOOR_EXT", 0x878F}, {"GL_OP_ROUND_EXT", 0x8790}, {"GL_OP_EXP_BASE_2_EXT", 0x8791}, {"GL_OP_LOG_BASE_2_EXT", 0x8792}, {"GL_OP_POWER_EXT", 0x8793}, {"GL_OP_RECIP_EXT", 0x8794}, {"GL_OP_RECIP_SQRT_EXT", 0x8795}, {"GL_OP_SUB_EXT", 0x8796}, {"GL_OP_CROSS_PRODUCT_EXT", 0x8797}, {"GL_OP_MULTIPLY_MATRIX_EXT", 0x8798}, {"GL_OP_MOV_EXT", 0x8799}, {"GL_OUTPUT_VERTEX_EXT", 0x879A}, {"GL_OUTPUT_COLOR0_EXT", 0x879B}, {"GL_OUTPUT_COLOR1_EXT", 0x879C}, {"GL_OUTPUT_TEXTURE_COORD0_EXT", 0x879D}, {"GL_OUTPUT_TEXTURE_COORD1_EXT", 0x879E}, {"GL_OUTPUT_TEXTURE_COORD2_EXT", 0x879F}, {"GL_OUTPUT_TEXTURE_COORD3_EXT", 0x87A0}, {"GL_OUTPUT_TEXTURE_COORD4_EXT", 0x87A1}, {"GL_OUTPUT_TEXTURE_COORD5_EXT", 0x87A2}, {"GL_OUTPUT_TEXTURE_COORD6_EXT", 0x87A3}, {"GL_OUTPUT_TEXTURE_COORD7_EXT", 0x87A4}, {"GL_OUTPUT_TEXTURE_COORD8_EXT", 0x87A5}, {"GL_OUTPUT_TEXTURE_COORD9_EXT", 0x87A6}, {"GL_OUTPUT_TEXTURE_COORD10_EXT", 0x87A7}, {"GL_OUTPUT_TEXTURE_COORD11_EXT", 0x87A8}, {"GL_OUTPUT_TEXTURE_COORD12_EXT", 0x87A9}, {"GL_OUTPUT_TEXTURE_COORD13_EXT", 0x87AA}, {"GL_OUTPUT_TEXTURE_COORD14_EXT", 0x87AB}, {"GL_OUTPUT_TEXTURE_COORD15_EXT", 0x87AC}, {"GL_OUTPUT_TEXTURE_COORD16_EXT", 0x87AD}, {"GL_OUTPUT_TEXTURE_COORD17_EXT", 0x87AE}, {"GL_OUTPUT_TEXTURE_COORD18_EXT", 0x87AF}, {"GL_OUTPUT_TEXTURE_COORD19_EXT", 0x87B0}, {"GL_OUTPUT_TEXTURE_COORD20_EXT", 0x87B1}, {"GL_OUTPUT_TEXTURE_COORD21_EXT", 0x87B2}, {"GL_OUTPUT_TEXTURE_COORD22_EXT", 0x87B3}, {"GL_OUTPUT_TEXTURE_COORD23_EXT", 0x87B4}, {"GL_OUTPUT_TEXTURE_COORD24_EXT", 0x87B5}, {"GL_OUTPUT_TEXTURE_COORD25_EXT", 0x87B6}, {"GL_OUTPUT_TEXTURE_COORD26_EXT", 0x87B7}, {"GL_OUTPUT_TEXTURE_COORD27_EXT", 0x87B8}, {"GL_OUTPUT_TEXTURE_COORD28_EXT", 0x87B9}, {"GL_OUTPUT_TEXTURE_COORD29_EXT", 0x87BA}, {"GL_OUTPUT_TEXTURE_COORD30_EXT", 0x87BB}, {"GL_OUTPUT_TEXTURE_COORD31_EXT", 0x87BC}, {"GL_OUTPUT_FOG_EXT", 0x87BD}, {"GL_SCALAR_EXT", 0x87BE}, {"GL_VECTOR_EXT", 0x87BF}, {"GL_MATRIX_EXT", 0x87C0}, {"GL_VARIANT_EXT", 0x87C1}, {"GL_INVARIANT_EXT", 0x87C2}, {"GL_LOCAL_CONSTANT_EXT", 0x87C3}, {"GL_LOCAL_EXT", 0x87C4}, {"GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87C5}, {"GL_MAX_VERTEX_SHADER_VARIANTS_EXT", 0x87C6}, {"GL_MAX_VERTEX_SHADER_INVARIANTS_EXT", 0x87C7}, {"GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87C8}, {"GL_MAX_VERTEX_SHADER_LOCALS_EXT", 0x87C9}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CA}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT", 0x87CB}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87CC}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT", 0x87CD}, {"GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT", 0x87CE}, {"GL_VERTEX_SHADER_INSTRUCTIONS_EXT", 0x87CF}, {"GL_VERTEX_SHADER_VARIANTS_EXT", 0x87D0}, {"GL_VERTEX_SHADER_INVARIANTS_EXT", 0x87D1}, {"GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT", 0x87D2}, {"GL_VERTEX_SHADER_LOCALS_EXT", 0x87D3}, {"GL_VERTEX_SHADER_OPTIMIZED_EXT", 0x87D4}, {"GL_X_EXT", 0x87D5}, {"GL_Y_EXT", 0x87D6}, {"GL_Z_EXT", 0x87D7}, {"GL_W_EXT", 0x87D8}, {"GL_NEGATIVE_X_EXT", 0x87D9}, {"GL_NEGATIVE_Y_EXT", 0x87DA}, {"GL_NEGATIVE_Z_EXT", 0x87DB}, {"GL_NEGATIVE_W_EXT", 0x87DC}, {"GL_ZERO_EXT", 0x87DD}, {"GL_ONE_EXT", 0x87DE}, {"GL_NEGATIVE_ONE_EXT", 0x87DF}, {"GL_NORMALIZED_RANGE_EXT", 0x87E0}, {"GL_FULL_RANGE_EXT", 0x87E1}, {"GL_CURRENT_VERTEX_EXT", 0x87E2}, {"GL_MVP_MATRIX_EXT", 0x87E3}, {"GL_VARIANT_VALUE_EXT", 0x87E4}, {"GL_VARIANT_DATATYPE_EXT", 0x87E5}, {"GL_VARIANT_ARRAY_STRIDE_EXT", 0x87E6}, {"GL_VARIANT_ARRAY_TYPE_EXT", 0x87E7}, {"GL_VARIANT_ARRAY_EXT", 0x87E8}, {"GL_VARIANT_ARRAY_POINTER_EXT", 0x87E9}, {"GL_INVARIANT_VALUE_EXT", 0x87EA}, {"GL_INVARIANT_DATATYPE_EXT", 0x87EB}, {"GL_LOCAL_CONSTANT_VALUE_EXT", 0x87EC}, {"GL_LOCAL_CONSTANT_DATATYPE_EXT", 0x87ED}, {"GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD", 0x87EE}, {"GL_PN_TRIANGLES_ATI", 0x87F0}, {"GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F1}, {"GL_PN_TRIANGLES_POINT_MODE_ATI", 0x87F2}, {"GL_PN_TRIANGLES_NORMAL_MODE_ATI", 0x87F3}, {"GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI", 0x87F4}, {"GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI", 0x87F5}, {"GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI", 0x87F6}, {"GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI", 0x87F7}, {"GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI", 0x87F8}, {"GL_3DC_X_AMD", 0x87F9}, {"GL_3DC_XY_AMD", 0x87FA}, {"GL_VBO_FREE_MEMORY_ATI", 0x87FB}, {"GL_TEXTURE_FREE_MEMORY_ATI", 0x87FC}, {"GL_RENDERBUFFER_FREE_MEMORY_ATI", 0x87FD}, {"GL_NUM_PROGRAM_BINARY_FORMATS", 0x87FE}, {"GL_NUM_PROGRAM_BINARY_FORMATS_OES", 0x87FE}, {"GL_PROGRAM_BINARY_FORMATS", 0x87FF}, {"GL_PROGRAM_BINARY_FORMATS_OES", 0x87FF}, {"GL_STENCIL_BACK_FUNC", 0x8800}, {"GL_STENCIL_BACK_FUNC_ATI", 0x8800}, {"GL_STENCIL_BACK_FAIL", 0x8801}, {"GL_STENCIL_BACK_FAIL_ATI", 0x8801}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI", 0x8802}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS", 0x8803}, {"GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI", 0x8803}, {"GL_FRAGMENT_PROGRAM_ARB", 0x8804}, {"GL_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x8805}, {"GL_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x8806}, {"GL_PROGRAM_TEX_INDIRECTIONS_ARB", 0x8807}, {"GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x8808}, {"GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x8809}, {"GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x880A}, {"GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB", 0x880B}, {"GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB", 0x880C}, {"GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB", 0x880D}, {"GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB", 0x880E}, {"GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB", 0x880F}, {"GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB", 0x8810}, {"GL_RGBA32F", 0x8814}, {"GL_RGBA32F_ARB", 0x8814}, {"GL_RGBA_FLOAT32_APPLE", 0x8814}, {"GL_RGBA_FLOAT32_ATI", 0x8814}, {"GL_RGB32F", 0x8815}, {"GL_RGB32F_ARB", 0x8815}, {"GL_RGB_FLOAT32_APPLE", 0x8815}, {"GL_RGB_FLOAT32_ATI", 0x8815}, {"GL_ALPHA32F_ARB", 0x8816}, {"GL_ALPHA_FLOAT32_APPLE", 0x8816}, {"GL_ALPHA_FLOAT32_ATI", 0x8816}, {"GL_INTENSITY32F_ARB", 0x8817}, {"GL_INTENSITY_FLOAT32_APPLE", 0x8817}, {"GL_INTENSITY_FLOAT32_ATI", 0x8817}, {"GL_LUMINANCE32F_ARB", 0x8818}, {"GL_LUMINANCE_FLOAT32_APPLE", 0x8818}, {"GL_LUMINANCE_FLOAT32_ATI", 0x8818}, {"GL_LUMINANCE_ALPHA32F_ARB", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_APPLE", 0x8819}, {"GL_LUMINANCE_ALPHA_FLOAT32_ATI", 0x8819}, {"GL_RGBA16F", 0x881A}, {"GL_RGBA16F_ARB", 0x881A}, {"GL_RGBA16F_EXT", 0x881A}, {"GL_RGBA_FLOAT16_APPLE", 0x881A}, {"GL_RGBA_FLOAT16_ATI", 0x881A}, {"GL_RGB16F", 0x881B}, {"GL_RGB16F_ARB", 0x881B}, {"GL_RGB16F_EXT", 0x881B}, {"GL_RGB_FLOAT16_APPLE", 0x881B}, {"GL_RGB_FLOAT16_ATI", 0x881B}, {"GL_ALPHA16F_ARB", 0x881C}, {"GL_ALPHA_FLOAT16_APPLE", 0x881C}, {"GL_ALPHA_FLOAT16_ATI", 0x881C}, {"GL_INTENSITY16F_ARB", 0x881D}, {"GL_INTENSITY_FLOAT16_APPLE", 0x881D}, {"GL_INTENSITY_FLOAT16_ATI", 0x881D}, {"GL_LUMINANCE16F_ARB", 0x881E}, {"GL_LUMINANCE_FLOAT16_APPLE", 0x881E}, {"GL_LUMINANCE_FLOAT16_ATI", 0x881E}, {"GL_LUMINANCE_ALPHA16F_ARB", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_APPLE", 0x881F}, {"GL_LUMINANCE_ALPHA_FLOAT16_ATI", 0x881F}, {"GL_RGBA_FLOAT_MODE_ARB", 0x8820}, {"GL_RGBA_FLOAT_MODE_ATI", 0x8820}, {"GL_WRITEONLY_RENDERING_QCOM", 0x8823}, {"GL_MAX_DRAW_BUFFERS", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ARB", 0x8824}, {"GL_MAX_DRAW_BUFFERS_ATI", 0x8824}, {"GL_MAX_DRAW_BUFFERS_EXT", 0x8824}, {"GL_MAX_DRAW_BUFFERS_NV", 0x8824}, {"GL_DRAW_BUFFER0", 0x8825}, {"GL_DRAW_BUFFER0_ARB", 0x8825}, {"GL_DRAW_BUFFER0_ATI", 0x8825}, {"GL_DRAW_BUFFER0_EXT", 0x8825}, {"GL_DRAW_BUFFER0_NV", 0x8825}, {"GL_DRAW_BUFFER1", 0x8826}, {"GL_DRAW_BUFFER1_ARB", 0x8826}, {"GL_DRAW_BUFFER1_ATI", 0x8826}, {"GL_DRAW_BUFFER1_EXT", 0x8826}, {"GL_DRAW_BUFFER1_NV", 0x8826}, {"GL_DRAW_BUFFER2", 0x8827}, {"GL_DRAW_BUFFER2_ARB", 0x8827}, {"GL_DRAW_BUFFER2_ATI", 0x8827}, {"GL_DRAW_BUFFER2_EXT", 0x8827}, {"GL_DRAW_BUFFER2_NV", 0x8827}, {"GL_DRAW_BUFFER3", 0x8828}, {"GL_DRAW_BUFFER3_ARB", 0x8828}, {"GL_DRAW_BUFFER3_ATI", 0x8828}, {"GL_DRAW_BUFFER3_EXT", 0x8828}, {"GL_DRAW_BUFFER3_NV", 0x8828}, {"GL_DRAW_BUFFER4", 0x8829}, {"GL_DRAW_BUFFER4_ARB", 0x8829}, {"GL_DRAW_BUFFER4_ATI", 0x8829}, {"GL_DRAW_BUFFER4_EXT", 0x8829}, {"GL_DRAW_BUFFER4_NV", 0x8829}, {"GL_DRAW_BUFFER5", 0x882A}, {"GL_DRAW_BUFFER5_ARB", 0x882A}, {"GL_DRAW_BUFFER5_ATI", 0x882A}, {"GL_DRAW_BUFFER5_EXT", 0x882A}, {"GL_DRAW_BUFFER5_NV", 0x882A}, {"GL_DRAW_BUFFER6", 0x882B}, {"GL_DRAW_BUFFER6_ARB", 0x882B}, {"GL_DRAW_BUFFER6_ATI", 0x882B}, {"GL_DRAW_BUFFER6_EXT", 0x882B}, {"GL_DRAW_BUFFER6_NV", 0x882B}, {"GL_DRAW_BUFFER7", 0x882C}, {"GL_DRAW_BUFFER7_ARB", 0x882C}, {"GL_DRAW_BUFFER7_ATI", 0x882C}, {"GL_DRAW_BUFFER7_EXT", 0x882C}, {"GL_DRAW_BUFFER7_NV", 0x882C}, {"GL_DRAW_BUFFER8", 0x882D}, {"GL_DRAW_BUFFER8_ARB", 0x882D}, {"GL_DRAW_BUFFER8_ATI", 0x882D}, {"GL_DRAW_BUFFER8_EXT", 0x882D}, {"GL_DRAW_BUFFER8_NV", 0x882D}, {"GL_DRAW_BUFFER9", 0x882E}, {"GL_DRAW_BUFFER9_ARB", 0x882E}, {"GL_DRAW_BUFFER9_ATI", 0x882E}, {"GL_DRAW_BUFFER9_EXT", 0x882E}, {"GL_DRAW_BUFFER9_NV", 0x882E}, {"GL_DRAW_BUFFER10", 0x882F}, {"GL_DRAW_BUFFER10_ARB", 0x882F}, {"GL_DRAW_BUFFER10_ATI", 0x882F}, {"GL_DRAW_BUFFER10_EXT", 0x882F}, {"GL_DRAW_BUFFER10_NV", 0x882F}, {"GL_DRAW_BUFFER11", 0x8830}, {"GL_DRAW_BUFFER11_ARB", 0x8830}, {"GL_DRAW_BUFFER11_ATI", 0x8830}, {"GL_DRAW_BUFFER11_EXT", 0x8830}, {"GL_DRAW_BUFFER11_NV", 0x8830}, {"GL_DRAW_BUFFER12", 0x8831}, {"GL_DRAW_BUFFER12_ARB", 0x8831}, {"GL_DRAW_BUFFER12_ATI", 0x8831}, {"GL_DRAW_BUFFER12_EXT", 0x8831}, {"GL_DRAW_BUFFER12_NV", 0x8831}, {"GL_DRAW_BUFFER13", 0x8832}, {"GL_DRAW_BUFFER13_ARB", 0x8832}, {"GL_DRAW_BUFFER13_ATI", 0x8832}, {"GL_DRAW_BUFFER13_EXT", 0x8832}, {"GL_DRAW_BUFFER13_NV", 0x8832}, {"GL_DRAW_BUFFER14", 0x8833}, {"GL_DRAW_BUFFER14_ARB", 0x8833}, {"GL_DRAW_BUFFER14_ATI", 0x8833}, {"GL_DRAW_BUFFER14_EXT", 0x8833}, {"GL_DRAW_BUFFER14_NV", 0x8833}, {"GL_DRAW_BUFFER15", 0x8834}, {"GL_DRAW_BUFFER15_ARB", 0x8834}, {"GL_DRAW_BUFFER15_ATI", 0x8834}, {"GL_DRAW_BUFFER15_EXT", 0x8834}, {"GL_DRAW_BUFFER15_NV", 0x8834}, {"GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI", 0x8835}, {"GL_BLEND_EQUATION_ALPHA", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_EXT", 0x883D}, {"GL_BLEND_EQUATION_ALPHA_OES", 0x883D}, {"GL_SUBSAMPLE_DISTANCE_AMD", 0x883F}, {"GL_MATRIX_PALETTE_ARB", 0x8840}, {"GL_MATRIX_PALETTE_OES", 0x8840}, {"GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB", 0x8841}, {"GL_MAX_PALETTE_MATRICES_ARB", 0x8842}, {"GL_MAX_PALETTE_MATRICES_OES", 0x8842}, {"GL_CURRENT_PALETTE_MATRIX_ARB", 0x8843}, {"GL_CURRENT_PALETTE_MATRIX_OES", 0x8843}, {"GL_MATRIX_INDEX_ARRAY_ARB", 0x8844}, {"GL_MATRIX_INDEX_ARRAY_OES", 0x8844}, {"GL_CURRENT_MATRIX_INDEX_ARB", 0x8845}, {"GL_MATRIX_INDEX_ARRAY_SIZE_ARB", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_SIZE_OES", 0x8846}, {"GL_MATRIX_INDEX_ARRAY_TYPE_ARB", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_TYPE_OES", 0x8847}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_ARB", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_STRIDE_OES", 0x8848}, {"GL_MATRIX_INDEX_ARRAY_POINTER_ARB", 0x8849}, {"GL_MATRIX_INDEX_ARRAY_POINTER_OES", 0x8849}, {"GL_TEXTURE_DEPTH_SIZE", 0x884A}, {"GL_TEXTURE_DEPTH_SIZE_ARB", 0x884A}, {"GL_DEPTH_TEXTURE_MODE", 0x884B}, {"GL_DEPTH_TEXTURE_MODE_ARB", 0x884B}, {"GL_TEXTURE_COMPARE_MODE", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_ARB", 0x884C}, {"GL_TEXTURE_COMPARE_MODE_EXT", 0x884C}, {"GL_TEXTURE_COMPARE_FUNC", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_ARB", 0x884D}, {"GL_TEXTURE_COMPARE_FUNC_EXT", 0x884D}, {"GL_COMPARE_R_TO_TEXTURE", 0x884E}, {"GL_COMPARE_R_TO_TEXTURE_ARB", 0x884E}, {"GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE", 0x884E}, {"GL_COMPARE_REF_TO_TEXTURE_EXT", 0x884E}, {"GL_TEXTURE_CUBE_MAP_SEAMLESS", 0x884F}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV", 0x8850}, {"GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV", 0x8851}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8852}, {"GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV", 0x8853}, {"GL_OFFSET_HILO_TEXTURE_2D_NV", 0x8854}, {"GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV", 0x8855}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV", 0x8856}, {"GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV", 0x8857}, {"GL_DEPENDENT_HILO_TEXTURE_2D_NV", 0x8858}, {"GL_DEPENDENT_RGB_TEXTURE_3D_NV", 0x8859}, {"GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV", 0x885A}, {"GL_DOT_PRODUCT_PASS_THROUGH_NV", 0x885B}, {"GL_DOT_PRODUCT_TEXTURE_1D_NV", 0x885C}, {"GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV", 0x885D}, {"GL_HILO8_NV", 0x885E}, {"GL_SIGNED_HILO8_NV", 0x885F}, {"GL_FORCE_BLUE_TO_ONE_NV", 0x8860}, {"GL_POINT_SPRITE", 0x8861}, {"GL_POINT_SPRITE_ARB", 0x8861}, {"GL_POINT_SPRITE_NV", 0x8861}, {"GL_POINT_SPRITE_OES", 0x8861}, {"GL_COORD_REPLACE", 0x8862}, {"GL_COORD_REPLACE_ARB", 0x8862}, {"GL_COORD_REPLACE_NV", 0x8862}, {"GL_COORD_REPLACE_OES", 0x8862}, {"GL_POINT_SPRITE_R_MODE_NV", 0x8863}, {"GL_PIXEL_COUNTER_BITS_NV", 0x8864}, {"GL_QUERY_COUNTER_BITS", 0x8864}, {"GL_QUERY_COUNTER_BITS_ARB", 0x8864}, {"GL_QUERY_COUNTER_BITS_EXT", 0x8864}, {"GL_CURRENT_OCCLUSION_QUERY_ID_NV", 0x8865}, {"GL_CURRENT_QUERY", 0x8865}, {"GL_CURRENT_QUERY_ARB", 0x8865}, {"GL_CURRENT_QUERY_EXT", 0x8865}, {"GL_PIXEL_COUNT_NV", 0x8866}, {"GL_QUERY_RESULT", 0x8866}, {"GL_QUERY_RESULT_ARB", 0x8866}, {"GL_QUERY_RESULT_EXT", 0x8866}, {"GL_PIXEL_COUNT_AVAILABLE_NV", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_ARB", 0x8867}, {"GL_QUERY_RESULT_AVAILABLE_EXT", 0x8867}, {"GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV", 0x8868}, {"GL_MAX_VERTEX_ATTRIBS", 0x8869}, {"GL_MAX_VERTEX_ATTRIBS_ARB", 0x8869}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED", 0x886A}, {"GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB", 0x886A}, {"GL_MAX_TESS_CONTROL_INPUT_COMPONENTS", 0x886C}, {"GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS", 0x886D}, {"GL_DEPTH_STENCIL_TO_RGBA_NV", 0x886E}, {"GL_DEPTH_STENCIL_TO_BGRA_NV", 0x886F}, {"GL_FRAGMENT_PROGRAM_NV", 0x8870}, {"GL_MAX_TEXTURE_COORDS", 0x8871}, {"GL_MAX_TEXTURE_COORDS_ARB", 0x8871}, {"GL_MAX_TEXTURE_COORDS_NV", 0x8871}, {"GL_MAX_TEXTURE_IMAGE_UNITS", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_ARB", 0x8872}, {"GL_MAX_TEXTURE_IMAGE_UNITS_NV", 0x8872}, {"GL_FRAGMENT_PROGRAM_BINDING_NV", 0x8873}, {"GL_PROGRAM_ERROR_STRING_ARB", 0x8874}, {"GL_PROGRAM_ERROR_STRING_NV", 0x8874}, {"GL_PROGRAM_FORMAT_ASCII_ARB", 0x8875}, {"GL_PROGRAM_FORMAT_ARB", 0x8876}, {"GL_WRITE_PIXEL_DATA_RANGE_NV", 0x8878}, {"GL_READ_PIXEL_DATA_RANGE_NV", 0x8879}, {"GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV", 0x887A}, {"GL_READ_PIXEL_DATA_RANGE_LENGTH_NV", 0x887B}, {"GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV", 0x887C}, {"GL_READ_PIXEL_DATA_RANGE_POINTER_NV", 0x887D}, {"GL_GEOMETRY_SHADER_INVOCATIONS", 0x887F}, {"GL_FLOAT_R_NV", 0x8880}, {"GL_FLOAT_RG_NV", 0x8881}, {"GL_FLOAT_RGB_NV", 0x8882}, {"GL_FLOAT_RGBA_NV", 0x8883}, {"GL_FLOAT_R16_NV", 0x8884}, {"GL_FLOAT_R32_NV", 0x8885}, {"GL_FLOAT_RG16_NV", 0x8886}, {"GL_FLOAT_RG32_NV", 0x8887}, {"GL_FLOAT_RGB16_NV", 0x8888}, {"GL_FLOAT_RGB32_NV", 0x8889}, {"GL_FLOAT_RGBA16_NV", 0x888A}, {"GL_FLOAT_RGBA32_NV", 0x888B}, {"GL_TEXTURE_FLOAT_COMPONENTS_NV", 0x888C}, {"GL_FLOAT_CLEAR_COLOR_VALUE_NV", 0x888D}, {"GL_FLOAT_RGBA_MODE_NV", 0x888E}, {"GL_TEXTURE_UNSIGNED_REMAP_MODE_NV", 0x888F}, {"GL_DEPTH_BOUNDS_TEST_EXT", 0x8890}, {"GL_DEPTH_BOUNDS_EXT", 0x8891}, {"GL_ARRAY_BUFFER", 0x8892}, {"GL_ARRAY_BUFFER_ARB", 0x8892}, {"GL_ELEMENT_ARRAY_BUFFER", 0x8893}, {"GL_ELEMENT_ARRAY_BUFFER_ARB", 0x8893}, {"GL_ARRAY_BUFFER_BINDING", 0x8894}, {"GL_ARRAY_BUFFER_BINDING_ARB", 0x8894}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING", 0x8895}, {"GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", 0x8895}, {"GL_VERTEX_ARRAY_BUFFER_BINDING", 0x8896}, {"GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", 0x8896}, {"GL_NORMAL_ARRAY_BUFFER_BINDING", 0x8897}, {"GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", 0x8897}, {"GL_COLOR_ARRAY_BUFFER_BINDING", 0x8898}, {"GL_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x8898}, {"GL_INDEX_ARRAY_BUFFER_BINDING", 0x8899}, {"GL_INDEX_ARRAY_BUFFER_BINDING_ARB", 0x8899}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING", 0x889A}, {"GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", 0x889A}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING", 0x889B}, {"GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB", 0x889B}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING", 0x889C}, {"GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB", 0x889C}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB", 0x889D}, {"GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_FOG_COORD_ARRAY_BUFFER_BINDING", 0x889D}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB", 0x889E}, {"GL_WEIGHT_ARRAY_BUFFER_BINDING_OES", 0x889E}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 0x889F}, {"GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB", 0x889F}, {"GL_PROGRAM_INSTRUCTIONS_ARB", 0x88A0}, {"GL_MAX_PROGRAM_INSTRUCTIONS_ARB", 0x88A1}, {"GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A2}, {"GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB", 0x88A3}, {"GL_PROGRAM_TEMPORARIES_ARB", 0x88A4}, {"GL_MAX_PROGRAM_TEMPORARIES_ARB", 0x88A5}, {"GL_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A6}, {"GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB", 0x88A7}, {"GL_PROGRAM_PARAMETERS_ARB", 0x88A8}, {"GL_MAX_PROGRAM_PARAMETERS_ARB", 0x88A9}, {"GL_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AA}, {"GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB", 0x88AB}, {"GL_PROGRAM_ATTRIBS_ARB", 0x88AC}, {"GL_MAX_PROGRAM_ATTRIBS_ARB", 0x88AD}, {"GL_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AE}, {"GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB", 0x88AF}, {"GL_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B0}, {"GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB", 0x88B1}, {"GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B2}, {"GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB", 0x88B3}, {"GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB", 0x88B4}, {"GL_MAX_PROGRAM_ENV_PARAMETERS_ARB", 0x88B5}, {"GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB", 0x88B6}, {"GL_TRANSPOSE_CURRENT_MATRIX_ARB", 0x88B7}, {"GL_READ_ONLY", 0x88B8}, {"GL_READ_ONLY_ARB", 0x88B8}, {"GL_WRITE_ONLY", 0x88B9}, {"GL_WRITE_ONLY_ARB", 0x88B9}, {"GL_WRITE_ONLY_OES", 0x88B9}, {"GL_READ_WRITE", 0x88BA}, {"GL_READ_WRITE_ARB", 0x88BA}, {"GL_BUFFER_ACCESS", 0x88BB}, {"GL_BUFFER_ACCESS_ARB", 0x88BB}, {"GL_BUFFER_ACCESS_OES", 0x88BB}, {"GL_BUFFER_MAPPED", 0x88BC}, {"GL_BUFFER_MAPPED_ARB", 0x88BC}, {"GL_BUFFER_MAPPED_OES", 0x88BC}, {"GL_BUFFER_MAP_POINTER", 0x88BD}, {"GL_BUFFER_MAP_POINTER_ARB", 0x88BD}, {"GL_BUFFER_MAP_POINTER_OES", 0x88BD}, {"GL_WRITE_DISCARD_NV", 0x88BE}, {"GL_TIME_ELAPSED", 0x88BF}, {"GL_TIME_ELAPSED_EXT", 0x88BF}, {"GL_MATRIX0_ARB", 0x88C0}, {"GL_MATRIX1_ARB", 0x88C1}, {"GL_MATRIX2_ARB", 0x88C2}, {"GL_MATRIX3_ARB", 0x88C3}, {"GL_MATRIX4_ARB", 0x88C4}, {"GL_MATRIX5_ARB", 0x88C5}, {"GL_MATRIX6_ARB", 0x88C6}, {"GL_MATRIX7_ARB", 0x88C7}, {"GL_MATRIX8_ARB", 0x88C8}, {"GL_MATRIX9_ARB", 0x88C9}, {"GL_MATRIX10_ARB", 0x88CA}, {"GL_MATRIX11_ARB", 0x88CB}, {"GL_MATRIX12_ARB", 0x88CC}, {"GL_MATRIX13_ARB", 0x88CD}, {"GL_MATRIX14_ARB", 0x88CE}, {"GL_MATRIX15_ARB", 0x88CF}, {"GL_MATRIX16_ARB", 0x88D0}, {"GL_MATRIX17_ARB", 0x88D1}, {"GL_MATRIX18_ARB", 0x88D2}, {"GL_MATRIX19_ARB", 0x88D3}, {"GL_MATRIX20_ARB", 0x88D4}, {"GL_MATRIX21_ARB", 0x88D5}, {"GL_MATRIX22_ARB", 0x88D6}, {"GL_MATRIX23_ARB", 0x88D7}, {"GL_MATRIX24_ARB", 0x88D8}, {"GL_MATRIX25_ARB", 0x88D9}, {"GL_MATRIX26_ARB", 0x88DA}, {"GL_MATRIX27_ARB", 0x88DB}, {"GL_MATRIX28_ARB", 0x88DC}, {"GL_MATRIX29_ARB", 0x88DD}, {"GL_MATRIX30_ARB", 0x88DE}, {"GL_MATRIX31_ARB", 0x88DF}, {"GL_STREAM_DRAW", 0x88E0}, {"GL_STREAM_DRAW_ARB", 0x88E0}, {"GL_STREAM_READ", 0x88E1}, {"GL_STREAM_READ_ARB", 0x88E1}, {"GL_STREAM_COPY", 0x88E2}, {"GL_STREAM_COPY_ARB", 0x88E2}, {"GL_STATIC_DRAW", 0x88E4}, {"GL_STATIC_DRAW_ARB", 0x88E4}, {"GL_STATIC_READ", 0x88E5}, {"GL_STATIC_READ_ARB", 0x88E5}, {"GL_STATIC_COPY", 0x88E6}, {"GL_STATIC_COPY_ARB", 0x88E6}, {"GL_DYNAMIC_DRAW", 0x88E8}, {"GL_DYNAMIC_DRAW_ARB", 0x88E8}, {"GL_DYNAMIC_READ", 0x88E9}, {"GL_DYNAMIC_READ_ARB", 0x88E9}, {"GL_DYNAMIC_COPY", 0x88EA}, {"GL_DYNAMIC_COPY_ARB", 0x88EA}, {"GL_PIXEL_PACK_BUFFER", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_ARB", 0x88EB}, {"GL_PIXEL_PACK_BUFFER_EXT", 0x88EB}, {"GL_PIXEL_UNPACK_BUFFER", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_ARB", 0x88EC}, {"GL_PIXEL_UNPACK_BUFFER_EXT", 0x88EC}, {"GL_PIXEL_PACK_BUFFER_BINDING", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_ARB", 0x88ED}, {"GL_PIXEL_PACK_BUFFER_BINDING_EXT", 0x88ED}, {"GL_ETC1_SRGB8_NV", 0x88EE}, {"GL_PIXEL_UNPACK_BUFFER_BINDING", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_ARB", 0x88EF}, {"GL_PIXEL_UNPACK_BUFFER_BINDING_EXT", 0x88EF}, {"GL_DEPTH24_STENCIL8", 0x88F0}, {"GL_DEPTH24_STENCIL8_EXT", 0x88F0}, {"GL_DEPTH24_STENCIL8_OES", 0x88F0}, {"GL_TEXTURE_STENCIL_SIZE", 0x88F1}, {"GL_TEXTURE_STENCIL_SIZE_EXT", 0x88F1}, {"GL_STENCIL_TAG_BITS_EXT", 0x88F2}, {"GL_STENCIL_CLEAR_TAG_VALUE_EXT", 0x88F3}, {"GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV", 0x88F4}, {"GL_MAX_PROGRAM_CALL_DEPTH_NV", 0x88F5}, {"GL_MAX_PROGRAM_IF_DEPTH_NV", 0x88F6}, {"GL_MAX_PROGRAM_LOOP_DEPTH_NV", 0x88F7}, {"GL_MAX_PROGRAM_LOOP_COUNT_NV", 0x88F8}, {"GL_SRC1_COLOR", 0x88F9}, {"GL_ONE_MINUS_SRC1_COLOR", 0x88FA}, {"GL_ONE_MINUS_SRC1_ALPHA", 0x88FB}, {"GL_MAX_DUAL_SOURCE_DRAW_BUFFERS", 0x88FC}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV", 0x88FD}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB", 0x88FE}, {"GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV", 0x88FE}, {"GL_MAX_ARRAY_TEXTURE_LAYERS", 0x88FF}, {"GL_MAX_ARRAY_TEXTURE_LAYERS_EXT", 0x88FF}, {"GL_MIN_PROGRAM_TEXEL_OFFSET", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_EXT", 0x8904}, {"GL_MIN_PROGRAM_TEXEL_OFFSET_NV", 0x8904}, {"GL_MAX_PROGRAM_TEXEL_OFFSET", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_EXT", 0x8905}, {"GL_MAX_PROGRAM_TEXEL_OFFSET_NV", 0x8905}, {"GL_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8906}, {"GL_PROGRAM_RESULT_COMPONENTS_NV", 0x8907}, {"GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV", 0x8908}, {"GL_MAX_PROGRAM_RESULT_COMPONENTS_NV", 0x8909}, {"GL_STENCIL_TEST_TWO_SIDE_EXT", 0x8910}, {"GL_ACTIVE_STENCIL_FACE_EXT", 0x8911}, {"GL_MIRROR_CLAMP_TO_BORDER_EXT", 0x8912}, {"GL_SAMPLES_PASSED", 0x8914}, {"GL_SAMPLES_PASSED_ARB", 0x8914}, {"GL_GEOMETRY_VERTICES_OUT", 0x8916}, {"GL_GEOMETRY_INPUT_TYPE", 0x8917}, {"GL_GEOMETRY_OUTPUT_TYPE", 0x8918}, {"GL_SAMPLER_BINDING", 0x8919}, {"GL_CLAMP_VERTEX_COLOR", 0x891A}, {"GL_CLAMP_VERTEX_COLOR_ARB", 0x891A}, {"GL_CLAMP_FRAGMENT_COLOR", 0x891B}, {"GL_CLAMP_FRAGMENT_COLOR_ARB", 0x891B}, {"GL_CLAMP_READ_COLOR", 0x891C}, {"GL_CLAMP_READ_COLOR_ARB", 0x891C}, {"GL_FIXED_ONLY", 0x891D}, {"GL_FIXED_ONLY_ARB", 0x891D}, {"GL_TESS_CONTROL_PROGRAM_NV", 0x891E}, {"GL_TESS_EVALUATION_PROGRAM_NV", 0x891F}, {"GL_FRAGMENT_SHADER_ATI", 0x8920}, {"GL_REG_0_ATI", 0x8921}, {"GL_REG_1_ATI", 0x8922}, {"GL_REG_2_ATI", 0x8923}, {"GL_REG_3_ATI", 0x8924}, {"GL_REG_4_ATI", 0x8925}, {"GL_REG_5_ATI", 0x8926}, {"GL_REG_6_ATI", 0x8927}, {"GL_REG_7_ATI", 0x8928}, {"GL_REG_8_ATI", 0x8929}, {"GL_REG_9_ATI", 0x892A}, {"GL_REG_10_ATI", 0x892B}, {"GL_REG_11_ATI", 0x892C}, {"GL_REG_12_ATI", 0x892D}, {"GL_REG_13_ATI", 0x892E}, {"GL_REG_14_ATI", 0x892F}, {"GL_REG_15_ATI", 0x8930}, {"GL_REG_16_ATI", 0x8931}, {"GL_REG_17_ATI", 0x8932}, {"GL_REG_18_ATI", 0x8933}, {"GL_REG_19_ATI", 0x8934}, {"GL_REG_20_ATI", 0x8935}, {"GL_REG_21_ATI", 0x8936}, {"GL_REG_22_ATI", 0x8937}, {"GL_REG_23_ATI", 0x8938}, {"GL_REG_24_ATI", 0x8939}, {"GL_REG_25_ATI", 0x893A}, {"GL_REG_26_ATI", 0x893B}, {"GL_REG_27_ATI", 0x893C}, {"GL_REG_28_ATI", 0x893D}, {"GL_REG_29_ATI", 0x893E}, {"GL_REG_30_ATI", 0x893F}, {"GL_REG_31_ATI", 0x8940}, {"GL_CON_0_ATI", 0x8941}, {"GL_CON_1_ATI", 0x8942}, {"GL_CON_2_ATI", 0x8943}, {"GL_CON_3_ATI", 0x8944}, {"GL_CON_4_ATI", 0x8945}, {"GL_CON_5_ATI", 0x8946}, {"GL_CON_6_ATI", 0x8947}, {"GL_CON_7_ATI", 0x8948}, {"GL_CON_8_ATI", 0x8949}, {"GL_CON_9_ATI", 0x894A}, {"GL_CON_10_ATI", 0x894B}, {"GL_CON_11_ATI", 0x894C}, {"GL_CON_12_ATI", 0x894D}, {"GL_CON_13_ATI", 0x894E}, {"GL_CON_14_ATI", 0x894F}, {"GL_CON_15_ATI", 0x8950}, {"GL_CON_16_ATI", 0x8951}, {"GL_CON_17_ATI", 0x8952}, {"GL_CON_18_ATI", 0x8953}, {"GL_CON_19_ATI", 0x8954}, {"GL_CON_20_ATI", 0x8955}, {"GL_CON_21_ATI", 0x8956}, {"GL_CON_22_ATI", 0x8957}, {"GL_CON_23_ATI", 0x8958}, {"GL_CON_24_ATI", 0x8959}, {"GL_CON_25_ATI", 0x895A}, {"GL_CON_26_ATI", 0x895B}, {"GL_CON_27_ATI", 0x895C}, {"GL_CON_28_ATI", 0x895D}, {"GL_CON_29_ATI", 0x895E}, {"GL_CON_30_ATI", 0x895F}, {"GL_CON_31_ATI", 0x8960}, {"GL_MOV_ATI", 0x8961}, {"GL_ADD_ATI", 0x8963}, {"GL_MUL_ATI", 0x8964}, {"GL_SUB_ATI", 0x8965}, {"GL_DOT3_ATI", 0x8966}, {"GL_DOT4_ATI", 0x8967}, {"GL_MAD_ATI", 0x8968}, {"GL_LERP_ATI", 0x8969}, {"GL_CND_ATI", 0x896A}, {"GL_CND0_ATI", 0x896B}, {"GL_DOT2_ADD_ATI", 0x896C}, {"GL_SECONDARY_INTERPOLATOR_ATI", 0x896D}, {"GL_NUM_FRAGMENT_REGISTERS_ATI", 0x896E}, {"GL_NUM_FRAGMENT_CONSTANTS_ATI", 0x896F}, {"GL_NUM_PASSES_ATI", 0x8970}, {"GL_NUM_INSTRUCTIONS_PER_PASS_ATI", 0x8971}, {"GL_NUM_INSTRUCTIONS_TOTAL_ATI", 0x8972}, {"GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI", 0x8973}, {"GL_NUM_LOOPBACK_COMPONENTS_ATI", 0x8974}, {"GL_COLOR_ALPHA_PAIRING_ATI", 0x8975}, {"GL_SWIZZLE_STR_ATI", 0x8976}, {"GL_SWIZZLE_STQ_ATI", 0x8977}, {"GL_SWIZZLE_STR_DR_ATI", 0x8978}, {"GL_SWIZZLE_STQ_DQ_ATI", 0x8979}, {"GL_SWIZZLE_STRQ_ATI", 0x897A}, {"GL_SWIZZLE_STRQ_DQ_ATI", 0x897B}, {"GL_INTERLACE_OML", 0x8980}, {"GL_INTERLACE_READ_OML", 0x8981}, {"GL_FORMAT_SUBSAMPLE_24_24_OML", 0x8982}, {"GL_FORMAT_SUBSAMPLE_244_244_OML", 0x8983}, {"GL_PACK_RESAMPLE_OML", 0x8984}, {"GL_UNPACK_RESAMPLE_OML", 0x8985}, {"GL_RESAMPLE_REPLICATE_OML", 0x8986}, {"GL_RESAMPLE_ZERO_FILL_OML", 0x8987}, {"GL_RESAMPLE_AVERAGE_OML", 0x8988}, {"GL_RESAMPLE_DECIMATE_OML", 0x8989}, {"GL_POINT_SIZE_ARRAY_TYPE_OES", 0x898A}, {"GL_POINT_SIZE_ARRAY_STRIDE_OES", 0x898B}, {"GL_POINT_SIZE_ARRAY_POINTER_OES", 0x898C}, {"GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898D}, {"GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898E}, {"GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", 0x898F}, {"GL_VERTEX_ATTRIB_MAP1_APPLE", 0x8A00}, {"GL_VERTEX_ATTRIB_MAP2_APPLE", 0x8A01}, {"GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE", 0x8A02}, {"GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE", 0x8A03}, {"GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE", 0x8A04}, {"GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE", 0x8A05}, {"GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE", 0x8A06}, {"GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE", 0x8A07}, {"GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE", 0x8A08}, {"GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE", 0x8A09}, {"GL_DRAW_PIXELS_APPLE", 0x8A0A}, {"GL_FENCE_APPLE", 0x8A0B}, {"GL_ELEMENT_ARRAY_APPLE", 0x8A0C}, {"GL_ELEMENT_ARRAY_TYPE_APPLE", 0x8A0D}, {"GL_ELEMENT_ARRAY_POINTER_APPLE", 0x8A0E}, {"GL_COLOR_FLOAT_APPLE", 0x8A0F}, {"GL_UNIFORM_BUFFER", 0x8A11}, {"GL_BUFFER_SERIALIZED_MODIFY_APPLE", 0x8A12}, {"GL_BUFFER_FLUSHING_UNMAP_APPLE", 0x8A13}, {"GL_AUX_DEPTH_STENCIL_APPLE", 0x8A14}, {"GL_PACK_ROW_BYTES_APPLE", 0x8A15}, {"GL_UNPACK_ROW_BYTES_APPLE", 0x8A16}, {"GL_RELEASED_APPLE", 0x8A19}, {"GL_VOLATILE_APPLE", 0x8A1A}, {"GL_RETAINED_APPLE", 0x8A1B}, {"GL_UNDEFINED_APPLE", 0x8A1C}, {"GL_PURGEABLE_APPLE", 0x8A1D}, {"GL_RGB_422_APPLE", 0x8A1F}, {"GL_UNIFORM_BUFFER_BINDING", 0x8A28}, {"GL_UNIFORM_BUFFER_START", 0x8A29}, {"GL_UNIFORM_BUFFER_SIZE", 0x8A2A}, {"GL_MAX_VERTEX_UNIFORM_BLOCKS", 0x8A2B}, {"GL_MAX_GEOMETRY_UNIFORM_BLOCKS", 0x8A2C}, {"GL_MAX_FRAGMENT_UNIFORM_BLOCKS", 0x8A2D}, {"GL_MAX_COMBINED_UNIFORM_BLOCKS", 0x8A2E}, {"GL_MAX_UNIFORM_BUFFER_BINDINGS", 0x8A2F}, {"GL_MAX_UNIFORM_BLOCK_SIZE", 0x8A30}, {"GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS", 0x8A31}, {"GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS", 0x8A32}, {"GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS", 0x8A33}, {"GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT", 0x8A34}, {"GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH", 0x8A35}, {"GL_ACTIVE_UNIFORM_BLOCKS", 0x8A36}, {"GL_UNIFORM_TYPE", 0x8A37}, {"GL_UNIFORM_SIZE", 0x8A38}, {"GL_UNIFORM_NAME_LENGTH", 0x8A39}, {"GL_UNIFORM_BLOCK_INDEX", 0x8A3A}, {"GL_UNIFORM_OFFSET", 0x8A3B}, {"GL_UNIFORM_ARRAY_STRIDE", 0x8A3C}, {"GL_UNIFORM_MATRIX_STRIDE", 0x8A3D}, {"GL_UNIFORM_IS_ROW_MAJOR", 0x8A3E}, {"GL_UNIFORM_BLOCK_BINDING", 0x8A3F}, {"GL_UNIFORM_BLOCK_DATA_SIZE", 0x8A40}, {"GL_UNIFORM_BLOCK_NAME_LENGTH", 0x8A41}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS", 0x8A42}, {"GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES", 0x8A43}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER", 0x8A44}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER", 0x8A45}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER", 0x8A46}, {"GL_TEXTURE_SRGB_DECODE_EXT", 0x8A48}, {"GL_DECODE_EXT", 0x8A49}, {"GL_SKIP_DECODE_EXT", 0x8A4A}, {"GL_PROGRAM_PIPELINE_OBJECT_EXT", 0x8A4F}, {"GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT", 0x8A52}, {"GL_SYNC_OBJECT_APPLE", 0x8A53}, {"GL_FRAGMENT_SHADER", 0x8B30}, {"GL_FRAGMENT_SHADER_ARB", 0x8B30}, {"GL_VERTEX_SHADER", 0x8B31}, {"GL_VERTEX_SHADER_ARB", 0x8B31}, {"GL_PROGRAM_OBJECT_ARB", 0x8B40}, {"GL_PROGRAM_OBJECT_EXT", 0x8B40}, {"GL_SHADER_OBJECT_ARB", 0x8B48}, {"GL_SHADER_OBJECT_EXT", 0x8B48}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS", 0x8B49}, {"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", 0x8B49}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS", 0x8B4A}, {"GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", 0x8B4A}, {"GL_MAX_VARYING_FLOATS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS", 0x8B4B}, {"GL_MAX_VARYING_COMPONENTS_EXT", 0x8B4B}, {"GL_MAX_VARYING_FLOATS_ARB", 0x8B4B}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS", 0x8B4C}, {"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", 0x8B4C}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS", 0x8B4D}, {"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", 0x8B4D}, {"GL_OBJECT_TYPE_ARB", 0x8B4E}, {"GL_SHADER_TYPE", 0x8B4F}, {"GL_OBJECT_SUBTYPE_ARB", 0x8B4F}, {"GL_FLOAT_VEC2", 0x8B50}, {"GL_FLOAT_VEC2_ARB", 0x8B50}, {"GL_FLOAT_VEC3", 0x8B51}, {"GL_FLOAT_VEC3_ARB", 0x8B51}, {"GL_FLOAT_VEC4", 0x8B52}, {"GL_FLOAT_VEC4_ARB", 0x8B52}, {"GL_INT_VEC2", 0x8B53}, {"GL_INT_VEC2_ARB", 0x8B53}, {"GL_INT_VEC3", 0x8B54}, {"GL_INT_VEC3_ARB", 0x8B54}, {"GL_INT_VEC4", 0x8B55}, {"GL_INT_VEC4_ARB", 0x8B55}, {"GL_BOOL", 0x8B56}, {"GL_BOOL_ARB", 0x8B56}, {"GL_BOOL_VEC2", 0x8B57}, {"GL_BOOL_VEC2_ARB", 0x8B57}, {"GL_BOOL_VEC3", 0x8B58}, {"GL_BOOL_VEC3_ARB", 0x8B58}, {"GL_BOOL_VEC4", 0x8B59}, {"GL_BOOL_VEC4_ARB", 0x8B59}, {"GL_FLOAT_MAT2", 0x8B5A}, {"GL_FLOAT_MAT2_ARB", 0x8B5A}, {"GL_FLOAT_MAT3", 0x8B5B}, {"GL_FLOAT_MAT3_ARB", 0x8B5B}, {"GL_FLOAT_MAT4", 0x8B5C}, {"GL_FLOAT_MAT4_ARB", 0x8B5C}, {"GL_SAMPLER_1D", 0x8B5D}, {"GL_SAMPLER_1D_ARB", 0x8B5D}, {"GL_SAMPLER_2D", 0x8B5E}, {"GL_SAMPLER_2D_ARB", 0x8B5E}, {"GL_SAMPLER_3D", 0x8B5F}, {"GL_SAMPLER_3D_ARB", 0x8B5F}, {"GL_SAMPLER_3D_OES", 0x8B5F}, {"GL_SAMPLER_CUBE", 0x8B60}, {"GL_SAMPLER_CUBE_ARB", 0x8B60}, {"GL_SAMPLER_1D_SHADOW", 0x8B61}, {"GL_SAMPLER_1D_SHADOW_ARB", 0x8B61}, {"GL_SAMPLER_2D_SHADOW", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_ARB", 0x8B62}, {"GL_SAMPLER_2D_SHADOW_EXT", 0x8B62}, {"GL_SAMPLER_2D_RECT", 0x8B63}, {"GL_SAMPLER_2D_RECT_ARB", 0x8B63}, {"GL_SAMPLER_2D_RECT_SHADOW", 0x8B64}, {"GL_SAMPLER_2D_RECT_SHADOW_ARB", 0x8B64}, {"GL_FLOAT_MAT2x3", 0x8B65}, {"GL_FLOAT_MAT2x4", 0x8B66}, {"GL_FLOAT_MAT3x2", 0x8B67}, {"GL_FLOAT_MAT3x4", 0x8B68}, {"GL_FLOAT_MAT4x2", 0x8B69}, {"GL_FLOAT_MAT4x3", 0x8B6A}, {"GL_DELETE_STATUS", 0x8B80}, {"GL_OBJECT_DELETE_STATUS_ARB", 0x8B80}, {"GL_COMPILE_STATUS", 0x8B81}, {"GL_OBJECT_COMPILE_STATUS_ARB", 0x8B81}, {"GL_LINK_STATUS", 0x8B82}, {"GL_OBJECT_LINK_STATUS_ARB", 0x8B82}, {"GL_VALIDATE_STATUS", 0x8B83}, {"GL_OBJECT_VALIDATE_STATUS_ARB", 0x8B83}, {"GL_INFO_LOG_LENGTH", 0x8B84}, {"GL_OBJECT_INFO_LOG_LENGTH_ARB", 0x8B84}, {"GL_ATTACHED_SHADERS", 0x8B85}, {"GL_OBJECT_ATTACHED_OBJECTS_ARB", 0x8B85}, {"GL_ACTIVE_UNIFORMS", 0x8B86}, {"GL_OBJECT_ACTIVE_UNIFORMS_ARB", 0x8B86}, {"GL_ACTIVE_UNIFORM_MAX_LENGTH", 0x8B87}, {"GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB", 0x8B87}, {"GL_SHADER_SOURCE_LENGTH", 0x8B88}, {"GL_OBJECT_SHADER_SOURCE_LENGTH_ARB", 0x8B88}, {"GL_ACTIVE_ATTRIBUTES", 0x8B89}, {"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB", 0x8B89}, {"GL_ACTIVE_ATTRIBUTE_MAX_LENGTH", 0x8B8A}, {"GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB", 0x8B8A}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", 0x8B8B}, {"GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES", 0x8B8B}, {"GL_SHADING_LANGUAGE_VERSION", 0x8B8C}, {"GL_SHADING_LANGUAGE_VERSION_ARB", 0x8B8C}, {"GL_CURRENT_PROGRAM", 0x8B8D}, {"GL_ACTIVE_PROGRAM_EXT", 0x8B8D}, {"GL_PALETTE4_RGB8_OES", 0x8B90}, {"GL_PALETTE4_RGBA8_OES", 0x8B91}, {"GL_PALETTE4_R5_G6_B5_OES", 0x8B92}, {"GL_PALETTE4_RGBA4_OES", 0x8B93}, {"GL_PALETTE4_RGB5_A1_OES", 0x8B94}, {"GL_PALETTE8_RGB8_OES", 0x8B95}, {"GL_PALETTE8_RGBA8_OES", 0x8B96}, {"GL_PALETTE8_R5_G6_B5_OES", 0x8B97}, {"GL_PALETTE8_RGBA4_OES", 0x8B98}, {"GL_PALETTE8_RGB5_A1_OES", 0x8B99}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", 0x8B9A}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT", 0x8B9B}, {"GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", 0x8B9B}, {"GL_POINT_SIZE_ARRAY_OES", 0x8B9C}, {"GL_TEXTURE_CROP_RECT_OES", 0x8B9D}, {"GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES", 0x8B9E}, {"GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES", 0x8B9F}, {"GL_FRAGMENT_PROGRAM_POSITION_MESA", 0x8BB0}, {"GL_FRAGMENT_PROGRAM_CALLBACK_MESA", 0x8BB1}, {"GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB2}, {"GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA", 0x8BB3}, {"GL_VERTEX_PROGRAM_CALLBACK_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_POSITION_MESA", 0x8BB4}, {"GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA", 0x8BB6}, {"GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA", 0x8BB7}, {"GL_COUNTER_TYPE_AMD", 0x8BC0}, {"GL_COUNTER_RANGE_AMD", 0x8BC1}, {"GL_UNSIGNED_INT64_AMD", 0x8BC2}, {"GL_PERCENTAGE_AMD", 0x8BC3}, {"GL_PERFMON_RESULT_AVAILABLE_AMD", 0x8BC4}, {"GL_PERFMON_RESULT_SIZE_AMD", 0x8BC5}, {"GL_PERFMON_RESULT_AMD", 0x8BC6}, {"GL_TEXTURE_WIDTH_QCOM", 0x8BD2}, {"GL_TEXTURE_HEIGHT_QCOM", 0x8BD3}, {"GL_TEXTURE_DEPTH_QCOM", 0x8BD4}, {"GL_TEXTURE_INTERNAL_FORMAT_QCOM", 0x8BD5}, {"GL_TEXTURE_FORMAT_QCOM", 0x8BD6}, {"GL_TEXTURE_TYPE_QCOM", 0x8BD7}, {"GL_TEXTURE_IMAGE_VALID_QCOM", 0x8BD8}, {"GL_TEXTURE_NUM_LEVELS_QCOM", 0x8BD9}, {"GL_TEXTURE_TARGET_QCOM", 0x8BDA}, {"GL_TEXTURE_OBJECT_VALID_QCOM", 0x8BDB}, {"GL_STATE_RESTORE", 0x8BDC}, {"GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG", 0x8C00}, {"GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG", 0x8C01}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG", 0x8C02}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG", 0x8C03}, {"GL_MODULATE_COLOR_IMG", 0x8C04}, {"GL_RECIP_ADD_SIGNED_ALPHA_IMG", 0x8C05}, {"GL_TEXTURE_ALPHA_MODULATE_IMG", 0x8C06}, {"GL_FACTOR_ALPHA_MODULATE_IMG", 0x8C07}, {"GL_FRAGMENT_ALPHA_MODULATE_IMG", 0x8C08}, {"GL_ADD_BLEND_IMG", 0x8C09}, {"GL_SGX_BINARY_IMG", 0x8C0A}, {"GL_TEXTURE_RED_TYPE", 0x8C10}, {"GL_TEXTURE_RED_TYPE_ARB", 0x8C10}, {"GL_TEXTURE_GREEN_TYPE", 0x8C11}, {"GL_TEXTURE_GREEN_TYPE_ARB", 0x8C11}, {"GL_TEXTURE_BLUE_TYPE", 0x8C12}, {"GL_TEXTURE_BLUE_TYPE_ARB", 0x8C12}, {"GL_TEXTURE_ALPHA_TYPE", 0x8C13}, {"GL_TEXTURE_ALPHA_TYPE_ARB", 0x8C13}, {"GL_TEXTURE_LUMINANCE_TYPE", 0x8C14}, {"GL_TEXTURE_LUMINANCE_TYPE_ARB", 0x8C14}, {"GL_TEXTURE_INTENSITY_TYPE", 0x8C15}, {"GL_TEXTURE_INTENSITY_TYPE_ARB", 0x8C15}, {"GL_TEXTURE_DEPTH_TYPE", 0x8C16}, {"GL_TEXTURE_DEPTH_TYPE_ARB", 0x8C16}, {"GL_UNSIGNED_NORMALIZED", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_ARB", 0x8C17}, {"GL_UNSIGNED_NORMALIZED_EXT", 0x8C17}, {"GL_TEXTURE_1D_ARRAY", 0x8C18}, {"GL_TEXTURE_1D_ARRAY_EXT", 0x8C18}, {"GL_PROXY_TEXTURE_1D_ARRAY", 0x8C19}, {"GL_PROXY_TEXTURE_1D_ARRAY_EXT", 0x8C19}, {"GL_TEXTURE_2D_ARRAY", 0x8C1A}, {"GL_TEXTURE_2D_ARRAY_EXT", 0x8C1A}, {"GL_PROXY_TEXTURE_2D_ARRAY", 0x8C1B}, {"GL_PROXY_TEXTURE_2D_ARRAY_EXT", 0x8C1B}, {"GL_TEXTURE_BINDING_1D_ARRAY", 0x8C1C}, {"GL_TEXTURE_BINDING_1D_ARRAY_EXT", 0x8C1C}, {"GL_TEXTURE_BINDING_2D_ARRAY", 0x8C1D}, {"GL_TEXTURE_BINDING_2D_ARRAY_EXT", 0x8C1D}, {"GL_GEOMETRY_PROGRAM_NV", 0x8C26}, {"GL_MAX_PROGRAM_OUTPUT_VERTICES_NV", 0x8C27}, {"GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV", 0x8C28}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB", 0x8C29}, {"GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT", 0x8C29}, {"GL_TEXTURE_BUFFER", 0x8C2A}, {"GL_TEXTURE_BUFFER_ARB", 0x8C2A}, {"GL_TEXTURE_BUFFER_EXT", 0x8C2A}, {"GL_MAX_TEXTURE_BUFFER_SIZE", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_ARB", 0x8C2B}, {"GL_MAX_TEXTURE_BUFFER_SIZE_EXT", 0x8C2B}, {"GL_TEXTURE_BINDING_BUFFER", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_ARB", 0x8C2C}, {"GL_TEXTURE_BINDING_BUFFER_EXT", 0x8C2C}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB", 0x8C2D}, {"GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT", 0x8C2D}, {"GL_TEXTURE_BUFFER_FORMAT_ARB", 0x8C2E}, {"GL_TEXTURE_BUFFER_FORMAT_EXT", 0x8C2E}, {"GL_ANY_SAMPLES_PASSED", 0x8C2F}, {"GL_ANY_SAMPLES_PASSED_EXT", 0x8C2F}, {"GL_SAMPLE_SHADING", 0x8C36}, {"GL_SAMPLE_SHADING_ARB", 0x8C36}, {"GL_MIN_SAMPLE_SHADING_VALUE", 0x8C37}, {"GL_MIN_SAMPLE_SHADING_VALUE_ARB", 0x8C37}, {"GL_R11F_G11F_B10F", 0x8C3A}, {"GL_R11F_G11F_B10F_EXT", 0x8C3A}, {"GL_UNSIGNED_INT_10F_11F_11F_REV", 0x8C3B}, {"GL_UNSIGNED_INT_10F_11F_11F_REV_EXT", 0x8C3B}, {"GL_RGBA_SIGNED_COMPONENTS_EXT", 0x8C3C}, {"GL_RGB9_E5", 0x8C3D}, {"GL_RGB9_E5_EXT", 0x8C3D}, {"GL_UNSIGNED_INT_5_9_9_9_REV", 0x8C3E}, {"GL_UNSIGNED_INT_5_9_9_9_REV_EXT", 0x8C3E}, {"GL_TEXTURE_SHARED_SIZE", 0x8C3F}, {"GL_TEXTURE_SHARED_SIZE_EXT", 0x8C3F}, {"GL_SRGB", 0x8C40}, {"GL_SRGB_EXT", 0x8C40}, {"GL_SRGB8", 0x8C41}, {"GL_SRGB8_EXT", 0x8C41}, {"GL_SRGB8_NV", 0x8C41}, {"GL_SRGB_ALPHA", 0x8C42}, {"GL_SRGB_ALPHA_EXT", 0x8C42}, {"GL_SRGB8_ALPHA8", 0x8C43}, {"GL_SRGB8_ALPHA8_EXT", 0x8C43}, {"GL_SLUMINANCE_ALPHA", 0x8C44}, {"GL_SLUMINANCE_ALPHA_EXT", 0x8C44}, {"GL_SLUMINANCE_ALPHA_NV", 0x8C44}, {"GL_SLUMINANCE8_ALPHA8", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_EXT", 0x8C45}, {"GL_SLUMINANCE8_ALPHA8_NV", 0x8C45}, {"GL_SLUMINANCE", 0x8C46}, {"GL_SLUMINANCE_EXT", 0x8C46}, {"GL_SLUMINANCE_NV", 0x8C46}, {"GL_SLUMINANCE8", 0x8C47}, {"GL_SLUMINANCE8_EXT", 0x8C47}, {"GL_SLUMINANCE8_NV", 0x8C47}, {"GL_COMPRESSED_SRGB", 0x8C48}, {"GL_COMPRESSED_SRGB_EXT", 0x8C48}, {"GL_COMPRESSED_SRGB_ALPHA", 0x8C49}, {"GL_COMPRESSED_SRGB_ALPHA_EXT", 0x8C49}, {"GL_COMPRESSED_SLUMINANCE", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_EXT", 0x8C4A}, {"GL_COMPRESSED_SLUMINANCE_ALPHA", 0x8C4B}, {"GL_COMPRESSED_SLUMINANCE_ALPHA_EXT", 0x8C4B}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_EXT", 0x8C4C}, {"GL_COMPRESSED_SRGB_S3TC_DXT1_NV", 0x8C4C}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV", 0x8C4D}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV", 0x8C4E}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT", 0x8C4F}, {"GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV", 0x8C4F}, {"GL_COMPRESSED_LUMINANCE_LATC1_EXT", 0x8C70}, {"GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT", 0x8C71}, {"GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C72}, {"GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT", 0x8C73}, {"GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV", 0x8C74}, {"GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV", 0x8C75}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH", 0x8C76}, {"GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT", 0x8C76}, {"GL_BACK_PRIMARY_COLOR_NV", 0x8C77}, {"GL_BACK_SECONDARY_COLOR_NV", 0x8C78}, {"GL_TEXTURE_COORD_NV", 0x8C79}, {"GL_CLIP_DISTANCE_NV", 0x8C7A}, {"GL_VERTEX_ID_NV", 0x8C7B}, {"GL_PRIMITIVE_ID_NV", 0x8C7C}, {"GL_GENERIC_ATTRIB_NV", 0x8C7D}, {"GL_TRANSFORM_FEEDBACK_ATTRIBS_NV", 0x8C7E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT", 0x8C7F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV", 0x8C7F}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT", 0x8C80}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV", 0x8C80}, {"GL_ACTIVE_VARYINGS_NV", 0x8C81}, {"GL_ACTIVE_VARYING_MAX_LENGTH_NV", 0x8C82}, {"GL_TRANSFORM_FEEDBACK_VARYINGS", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_EXT", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_VARYINGS_NV", 0x8C83}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_START_NV", 0x8C84}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV", 0x8C85}, {"GL_TRANSFORM_FEEDBACK_RECORD_NV", 0x8C86}, {"GL_PRIMITIVES_GENERATED", 0x8C87}, {"GL_PRIMITIVES_GENERATED_EXT", 0x8C87}, {"GL_PRIMITIVES_GENERATED_NV", 0x8C87}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT", 0x8C88}, {"GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV", 0x8C88}, {"GL_RASTERIZER_DISCARD", 0x8C89}, {"GL_RASTERIZER_DISCARD_EXT", 0x8C89}, {"GL_RASTERIZER_DISCARD_NV", 0x8C89}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV", 0x8C8A}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT", 0x8C8B}, {"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV", 0x8C8B}, {"GL_INTERLEAVED_ATTRIBS", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_EXT", 0x8C8C}, {"GL_INTERLEAVED_ATTRIBS_NV", 0x8C8C}, {"GL_SEPARATE_ATTRIBS", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_EXT", 0x8C8D}, {"GL_SEPARATE_ATTRIBS_NV", 0x8C8D}, {"GL_TRANSFORM_FEEDBACK_BUFFER", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_EXT", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_NV", 0x8C8E}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT", 0x8C8F}, {"GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV", 0x8C8F}, {"GL_ATC_RGB_AMD", 0x8C92}, {"GL_ATC_RGBA_EXPLICIT_ALPHA_AMD", 0x8C93}, {"GL_POINT_SPRITE_COORD_ORIGIN", 0x8CA0}, {"GL_LOWER_LEFT", 0x8CA1}, {"GL_UPPER_LEFT", 0x8CA2}, {"GL_STENCIL_BACK_REF", 0x8CA3}, {"GL_STENCIL_BACK_VALUE_MASK", 0x8CA4}, {"GL_STENCIL_BACK_WRITEMASK", 0x8CA5}, {"GL_DRAW_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_NV", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_EXT", 0x8CA6}, {"GL_FRAMEBUFFER_BINDING_OES", 0x8CA6}, {"GL_RENDERBUFFER_BINDING", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_ANGLE", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_EXT", 0x8CA7}, {"GL_RENDERBUFFER_BINDING_OES", 0x8CA7}, {"GL_READ_FRAMEBUFFER", 0x8CA8}, {"GL_READ_FRAMEBUFFER_ANGLE", 0x8CA8}, {"GL_READ_FRAMEBUFFER_EXT", 0x8CA8}, {"GL_READ_FRAMEBUFFER_NV", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_ANGLE", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_EXT", 0x8CA9}, {"GL_DRAW_FRAMEBUFFER_NV", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_EXT", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_NV", 0x8CAA}, {"GL_RENDERBUFFER_COVERAGE_SAMPLES_NV", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_ANGLE", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_EXT", 0x8CAB}, {"GL_RENDERBUFFER_SAMPLES_NV", 0x8CAB}, {"GL_DEPTH_COMPONENT32F", 0x8CAC}, {"GL_DEPTH32F_STENCIL8", 0x8CAD}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES", 0x8CD0}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES", 0x8CD1}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES", 0x8CD2}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES", 0x8CD3}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER", 0x8CD4}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT", 0x8CD4}, {"GL_FRAMEBUFFER_COMPLETE", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_EXT", 0x8CD5}, {"GL_FRAMEBUFFER_COMPLETE_OES", 0x8CD5}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES", 0x8CD6}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES", 0x8CD7}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES", 0x8CD9}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES", 0x8CDA}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES", 0x8CDB}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT", 0x8CDC}, {"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES", 0x8CDC}, {"GL_FRAMEBUFFER_UNSUPPORTED", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_EXT", 0x8CDD}, {"GL_FRAMEBUFFER_UNSUPPORTED_OES", 0x8CDD}, {"GL_MAX_COLOR_ATTACHMENTS", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_EXT", 0x8CDF}, {"GL_MAX_COLOR_ATTACHMENTS_NV", 0x8CDF}, {"GL_COLOR_ATTACHMENT0", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_EXT", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_NV", 0x8CE0}, {"GL_COLOR_ATTACHMENT0_OES", 0x8CE0}, {"GL_COLOR_ATTACHMENT1", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_EXT", 0x8CE1}, {"GL_COLOR_ATTACHMENT1_NV", 0x8CE1}, {"GL_COLOR_ATTACHMENT2", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_EXT", 0x8CE2}, {"GL_COLOR_ATTACHMENT2_NV", 0x8CE2}, {"GL_COLOR_ATTACHMENT3", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_EXT", 0x8CE3}, {"GL_COLOR_ATTACHMENT3_NV", 0x8CE3}, {"GL_COLOR_ATTACHMENT4", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_EXT", 0x8CE4}, {"GL_COLOR_ATTACHMENT4_NV", 0x8CE4}, {"GL_COLOR_ATTACHMENT5", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_EXT", 0x8CE5}, {"GL_COLOR_ATTACHMENT5_NV", 0x8CE5}, {"GL_COLOR_ATTACHMENT6", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_EXT", 0x8CE6}, {"GL_COLOR_ATTACHMENT6_NV", 0x8CE6}, {"GL_COLOR_ATTACHMENT7", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_EXT", 0x8CE7}, {"GL_COLOR_ATTACHMENT7_NV", 0x8CE7}, {"GL_COLOR_ATTACHMENT8", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_EXT", 0x8CE8}, {"GL_COLOR_ATTACHMENT8_NV", 0x8CE8}, {"GL_COLOR_ATTACHMENT9", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_EXT", 0x8CE9}, {"GL_COLOR_ATTACHMENT9_NV", 0x8CE9}, {"GL_COLOR_ATTACHMENT10", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_EXT", 0x8CEA}, {"GL_COLOR_ATTACHMENT10_NV", 0x8CEA}, {"GL_COLOR_ATTACHMENT11", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_EXT", 0x8CEB}, {"GL_COLOR_ATTACHMENT11_NV", 0x8CEB}, {"GL_COLOR_ATTACHMENT12", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_EXT", 0x8CEC}, {"GL_COLOR_ATTACHMENT12_NV", 0x8CEC}, {"GL_COLOR_ATTACHMENT13", 0x8CED}, {"GL_COLOR_ATTACHMENT13_EXT", 0x8CED}, {"GL_COLOR_ATTACHMENT13_NV", 0x8CED}, {"GL_COLOR_ATTACHMENT14", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_EXT", 0x8CEE}, {"GL_COLOR_ATTACHMENT14_NV", 0x8CEE}, {"GL_COLOR_ATTACHMENT15", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_EXT", 0x8CEF}, {"GL_COLOR_ATTACHMENT15_NV", 0x8CEF}, {"GL_DEPTH_ATTACHMENT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_EXT", 0x8D00}, {"GL_DEPTH_ATTACHMENT_OES", 0x8D00}, {"GL_STENCIL_ATTACHMENT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_EXT", 0x8D20}, {"GL_STENCIL_ATTACHMENT_OES", 0x8D20}, {"GL_FRAMEBUFFER", 0x8D40}, {"GL_FRAMEBUFFER_EXT", 0x8D40}, {"GL_FRAMEBUFFER_OES", 0x8D40}, {"GL_RENDERBUFFER", 0x8D41}, {"GL_RENDERBUFFER_EXT", 0x8D41}, {"GL_RENDERBUFFER_OES", 0x8D41}, {"GL_RENDERBUFFER_WIDTH", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_EXT", 0x8D42}, {"GL_RENDERBUFFER_WIDTH_OES", 0x8D42}, {"GL_RENDERBUFFER_HEIGHT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_EXT", 0x8D43}, {"GL_RENDERBUFFER_HEIGHT_OES", 0x8D43}, {"GL_RENDERBUFFER_INTERNAL_FORMAT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_EXT", 0x8D44}, {"GL_RENDERBUFFER_INTERNAL_FORMAT_OES", 0x8D44}, {"GL_STENCIL_INDEX1", 0x8D46}, {"GL_STENCIL_INDEX1_EXT", 0x8D46}, {"GL_STENCIL_INDEX1_OES", 0x8D46}, {"GL_STENCIL_INDEX4", 0x8D47}, {"GL_STENCIL_INDEX4_EXT", 0x8D47}, {"GL_STENCIL_INDEX4_OES", 0x8D47}, {"GL_STENCIL_INDEX8", 0x8D48}, {"GL_STENCIL_INDEX8_EXT", 0x8D48}, {"GL_STENCIL_INDEX8_OES", 0x8D48}, {"GL_STENCIL_INDEX16", 0x8D49}, {"GL_STENCIL_INDEX16_EXT", 0x8D49}, {"GL_RENDERBUFFER_RED_SIZE", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_EXT", 0x8D50}, {"GL_RENDERBUFFER_RED_SIZE_OES", 0x8D50}, {"GL_RENDERBUFFER_GREEN_SIZE", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_EXT", 0x8D51}, {"GL_RENDERBUFFER_GREEN_SIZE_OES", 0x8D51}, {"GL_RENDERBUFFER_BLUE_SIZE", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_EXT", 0x8D52}, {"GL_RENDERBUFFER_BLUE_SIZE_OES", 0x8D52}, {"GL_RENDERBUFFER_ALPHA_SIZE", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_EXT", 0x8D53}, {"GL_RENDERBUFFER_ALPHA_SIZE_OES", 0x8D53}, {"GL_RENDERBUFFER_DEPTH_SIZE", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_EXT", 0x8D54}, {"GL_RENDERBUFFER_DEPTH_SIZE_OES", 0x8D54}, {"GL_RENDERBUFFER_STENCIL_SIZE", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_EXT", 0x8D55}, {"GL_RENDERBUFFER_STENCIL_SIZE_OES", 0x8D55}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT", 0x8D56}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV", 0x8D56}, {"GL_MAX_SAMPLES", 0x8D57}, {"GL_MAX_SAMPLES_ANGLE", 0x8D57}, {"GL_MAX_SAMPLES_EXT", 0x8D57}, {"GL_MAX_SAMPLES_NV", 0x8D57}, {"GL_TEXTURE_GEN_STR_OES", 0x8D60}, {"GL_HALF_FLOAT_OES", 0x8D61}, {"GL_RGB565_OES", 0x8D62}, {"GL_RGB565", 0x8D62}, {"GL_ETC1_RGB8_OES", 0x8D64}, {"GL_TEXTURE_EXTERNAL_OES", 0x8D65}, {"GL_SAMPLER_EXTERNAL_OES", 0x8D66}, {"GL_TEXTURE_BINDING_EXTERNAL_OES", 0x8D67}, {"GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES", 0x8D68}, {"GL_PRIMITIVE_RESTART_FIXED_INDEX", 0x8D69}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE", 0x8D6A}, {"GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT", 0x8D6A}, {"GL_MAX_ELEMENT_INDEX", 0x8D6B}, {"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT", 0x8D6C}, {"GL_RGBA32UI", 0x8D70}, {"GL_RGBA32UI_EXT", 0x8D70}, {"GL_RGB32UI", 0x8D71}, {"GL_RGB32UI_EXT", 0x8D71}, {"GL_ALPHA32UI_EXT", 0x8D72}, {"GL_INTENSITY32UI_EXT", 0x8D73}, {"GL_LUMINANCE32UI_EXT", 0x8D74}, {"GL_LUMINANCE_ALPHA32UI_EXT", 0x8D75}, {"GL_RGBA16UI", 0x8D76}, {"GL_RGBA16UI_EXT", 0x8D76}, {"GL_RGB16UI", 0x8D77}, {"GL_RGB16UI_EXT", 0x8D77}, {"GL_ALPHA16UI_EXT", 0x8D78}, {"GL_INTENSITY16UI_EXT", 0x8D79}, {"GL_LUMINANCE16UI_EXT", 0x8D7A}, {"GL_LUMINANCE_ALPHA16UI_EXT", 0x8D7B}, {"GL_RGBA8UI", 0x8D7C}, {"GL_RGBA8UI_EXT", 0x8D7C}, {"GL_RGB8UI", 0x8D7D}, {"GL_RGB8UI_EXT", 0x8D7D}, {"GL_ALPHA8UI_EXT", 0x8D7E}, {"GL_INTENSITY8UI_EXT", 0x8D7F}, {"GL_LUMINANCE8UI_EXT", 0x8D80}, {"GL_LUMINANCE_ALPHA8UI_EXT", 0x8D81}, {"GL_RGBA32I", 0x8D82}, {"GL_RGBA32I_EXT", 0x8D82}, {"GL_RGB32I", 0x8D83}, {"GL_RGB32I_EXT", 0x8D83}, {"GL_ALPHA32I_EXT", 0x8D84}, {"GL_INTENSITY32I_EXT", 0x8D85}, {"GL_LUMINANCE32I_EXT", 0x8D86}, {"GL_LUMINANCE_ALPHA32I_EXT", 0x8D87}, {"GL_RGBA16I", 0x8D88}, {"GL_RGBA16I_EXT", 0x8D88}, {"GL_RGB16I", 0x8D89}, {"GL_RGB16I_EXT", 0x8D89}, {"GL_ALPHA16I_EXT", 0x8D8A}, {"GL_INTENSITY16I_EXT", 0x8D8B}, {"GL_LUMINANCE16I_EXT", 0x8D8C}, {"GL_LUMINANCE_ALPHA16I_EXT", 0x8D8D}, {"GL_RGBA8I", 0x8D8E}, {"GL_RGBA8I_EXT", 0x8D8E}, {"GL_RGB8I", 0x8D8F}, {"GL_RGB8I_EXT", 0x8D8F}, {"GL_ALPHA8I_EXT", 0x8D90}, {"GL_INTENSITY8I_EXT", 0x8D91}, {"GL_LUMINANCE8I_EXT", 0x8D92}, {"GL_LUMINANCE_ALPHA8I_EXT", 0x8D93}, {"GL_RED_INTEGER", 0x8D94}, {"GL_RED_INTEGER_EXT", 0x8D94}, {"GL_GREEN_INTEGER", 0x8D95}, {"GL_GREEN_INTEGER_EXT", 0x8D95}, {"GL_BLUE_INTEGER", 0x8D96}, {"GL_BLUE_INTEGER_EXT", 0x8D96}, {"GL_ALPHA_INTEGER", 0x8D97}, {"GL_ALPHA_INTEGER_EXT", 0x8D97}, {"GL_RGB_INTEGER", 0x8D98}, {"GL_RGB_INTEGER_EXT", 0x8D98}, {"GL_RGBA_INTEGER", 0x8D99}, {"GL_RGBA_INTEGER_EXT", 0x8D99}, {"GL_BGR_INTEGER", 0x8D9A}, {"GL_BGR_INTEGER_EXT", 0x8D9A}, {"GL_BGRA_INTEGER", 0x8D9B}, {"GL_BGRA_INTEGER_EXT", 0x8D9B}, {"GL_LUMINANCE_INTEGER_EXT", 0x8D9C}, {"GL_LUMINANCE_ALPHA_INTEGER_EXT", 0x8D9D}, {"GL_RGBA_INTEGER_MODE_EXT", 0x8D9E}, {"GL_INT_2_10_10_10_REV", 0x8D9F}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV", 0x8DA0}, {"GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV", 0x8DA1}, {"GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA2}, {"GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA3}, {"GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV", 0x8DA4}, {"GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV", 0x8DA5}, {"GL_MAX_PROGRAM_GENERIC_RESULTS_NV", 0x8DA6}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB", 0x8DA7}, {"GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT", 0x8DA7}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT", 0x8DA8}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB", 0x8DA9}, {"GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT", 0x8DA9}, {"GL_LAYER_NV", 0x8DAA}, {"GL_DEPTH_COMPONENT32F_NV", 0x8DAB}, {"GL_DEPTH32F_STENCIL8_NV", 0x8DAC}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV", 0x8DAD}, {"GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV", 0x8DAD}, {"GL_SHADER_INCLUDE_ARB", 0x8DAE}, {"GL_DEPTH_BUFFER_FLOAT_MODE_NV", 0x8DAF}, {"GL_FRAMEBUFFER_SRGB", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_EXT", 0x8DB9}, {"GL_FRAMEBUFFER_SRGB_CAPABLE_EXT", 0x8DBA}, {"GL_COMPRESSED_RED_RGTC1", 0x8DBB}, {"GL_COMPRESSED_RED_RGTC1_EXT", 0x8DBB}, {"GL_COMPRESSED_SIGNED_RED_RGTC1", 0x8DBC}, {"GL_COMPRESSED_SIGNED_RED_RGTC1_EXT", 0x8DBC}, {"GL_COMPRESSED_RED_GREEN_RGTC2_EXT", 0x8DBD}, {"GL_COMPRESSED_RG_RGTC2", 0x8DBD}, {"GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT", 0x8DBE}, {"GL_COMPRESSED_SIGNED_RG_RGTC2", 0x8DBE}, {"GL_SAMPLER_1D_ARRAY", 0x8DC0}, {"GL_SAMPLER_1D_ARRAY_EXT", 0x8DC0}, {"GL_SAMPLER_2D_ARRAY", 0x8DC1}, {"GL_SAMPLER_2D_ARRAY_EXT", 0x8DC1}, {"GL_SAMPLER_BUFFER", 0x8DC2}, {"GL_SAMPLER_BUFFER_EXT", 0x8DC2}, {"GL_SAMPLER_1D_ARRAY_SHADOW", 0x8DC3}, {"GL_SAMPLER_1D_ARRAY_SHADOW_EXT", 0x8DC3}, {"GL_SAMPLER_2D_ARRAY_SHADOW", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_EXT", 0x8DC4}, {"GL_SAMPLER_2D_ARRAY_SHADOW_NV", 0x8DC4}, {"GL_SAMPLER_CUBE_SHADOW", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_EXT", 0x8DC5}, {"GL_SAMPLER_CUBE_SHADOW_NV", 0x8DC5}, {"GL_UNSIGNED_INT_VEC2", 0x8DC6}, {"GL_UNSIGNED_INT_VEC2_EXT", 0x8DC6}, {"GL_UNSIGNED_INT_VEC3", 0x8DC7}, {"GL_UNSIGNED_INT_VEC3_EXT", 0x8DC7}, {"GL_UNSIGNED_INT_VEC4", 0x8DC8}, {"GL_UNSIGNED_INT_VEC4_EXT", 0x8DC8}, {"GL_INT_SAMPLER_1D", 0x8DC9}, {"GL_INT_SAMPLER_1D_EXT", 0x8DC9}, {"GL_INT_SAMPLER_2D", 0x8DCA}, {"GL_INT_SAMPLER_2D_EXT", 0x8DCA}, {"GL_INT_SAMPLER_3D", 0x8DCB}, {"GL_INT_SAMPLER_3D_EXT", 0x8DCB}, {"GL_INT_SAMPLER_CUBE", 0x8DCC}, {"GL_INT_SAMPLER_CUBE_EXT", 0x8DCC}, {"GL_INT_SAMPLER_2D_RECT", 0x8DCD}, {"GL_INT_SAMPLER_2D_RECT_EXT", 0x8DCD}, {"GL_INT_SAMPLER_1D_ARRAY", 0x8DCE}, {"GL_INT_SAMPLER_1D_ARRAY_EXT", 0x8DCE}, {"GL_INT_SAMPLER_2D_ARRAY", 0x8DCF}, {"GL_INT_SAMPLER_2D_ARRAY_EXT", 0x8DCF}, {"GL_INT_SAMPLER_BUFFER", 0x8DD0}, {"GL_INT_SAMPLER_BUFFER_EXT", 0x8DD0}, {"GL_UNSIGNED_INT_SAMPLER_1D", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_1D_EXT", 0x8DD1}, {"GL_UNSIGNED_INT_SAMPLER_2D", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_2D_EXT", 0x8DD2}, {"GL_UNSIGNED_INT_SAMPLER_3D", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_3D_EXT", 0x8DD3}, {"GL_UNSIGNED_INT_SAMPLER_CUBE", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_EXT", 0x8DD4}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT", 0x8DD5}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT", 0x8DD6}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT", 0x8DD7}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER", 0x8DD8}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT", 0x8DD8}, {"GL_GEOMETRY_SHADER", 0x8DD9}, {"GL_GEOMETRY_SHADER_ARB", 0x8DD9}, {"GL_GEOMETRY_SHADER_EXT", 0x8DD9}, {"GL_GEOMETRY_VERTICES_OUT_ARB", 0x8DDA}, {"GL_GEOMETRY_VERTICES_OUT_EXT", 0x8DDA}, {"GL_GEOMETRY_INPUT_TYPE_ARB", 0x8DDB}, {"GL_GEOMETRY_INPUT_TYPE_EXT", 0x8DDB}, {"GL_GEOMETRY_OUTPUT_TYPE_ARB", 0x8DDC}, {"GL_GEOMETRY_OUTPUT_TYPE_EXT", 0x8DDC}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB", 0x8DDD}, {"GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT", 0x8DDD}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_ARB", 0x8DDE}, {"GL_MAX_VERTEX_VARYING_COMPONENTS_EXT", 0x8DDE}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB", 0x8DDF}, {"GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT", 0x8DDF}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB", 0x8DE0}, {"GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT", 0x8DE0}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB", 0x8DE1}, {"GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT", 0x8DE1}, {"GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT", 0x8DE2}, {"GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT", 0x8DE3}, {"GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT", 0x8DE4}, {"GL_ACTIVE_SUBROUTINES", 0x8DE5}, {"GL_ACTIVE_SUBROUTINE_UNIFORMS", 0x8DE6}, {"GL_MAX_SUBROUTINES", 0x8DE7}, {"GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS", 0x8DE8}, {"GL_NAMED_STRING_LENGTH_ARB", 0x8DE9}, {"GL_NAMED_STRING_TYPE_ARB", 0x8DEA}, {"GL_MAX_BINDABLE_UNIFORM_SIZE_EXT", 0x8DED}, {"GL_UNIFORM_BUFFER_EXT", 0x8DEE}, {"GL_UNIFORM_BUFFER_BINDING_EXT", 0x8DEF}, {"GL_LOW_FLOAT", 0x8DF0}, {"GL_MEDIUM_FLOAT", 0x8DF1}, {"GL_HIGH_FLOAT", 0x8DF2}, {"GL_LOW_INT", 0x8DF3}, {"GL_MEDIUM_INT", 0x8DF4}, {"GL_HIGH_INT", 0x8DF5}, {"GL_UNSIGNED_INT_10_10_10_2_OES", 0x8DF6}, {"GL_INT_10_10_10_2_OES", 0x8DF7}, {"GL_SHADER_BINARY_FORMATS", 0x8DF8}, {"GL_NUM_SHADER_BINARY_FORMATS", 0x8DF9}, {"GL_SHADER_COMPILER", 0x8DFA}, {"GL_MAX_VERTEX_UNIFORM_VECTORS", 0x8DFB}, {"GL_MAX_VARYING_VECTORS", 0x8DFC}, {"GL_MAX_FRAGMENT_UNIFORM_VECTORS", 0x8DFD}, {"GL_RENDERBUFFER_COLOR_SAMPLES_NV", 0x8E10}, {"GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E11}, {"GL_MULTISAMPLE_COVERAGE_MODES_NV", 0x8E12}, {"GL_QUERY_WAIT", 0x8E13}, {"GL_QUERY_WAIT_NV", 0x8E13}, {"GL_QUERY_NO_WAIT", 0x8E14}, {"GL_QUERY_NO_WAIT_NV", 0x8E14}, {"GL_QUERY_BY_REGION_WAIT", 0x8E15}, {"GL_QUERY_BY_REGION_WAIT_NV", 0x8E15}, {"GL_QUERY_BY_REGION_NO_WAIT", 0x8E16}, {"GL_QUERY_BY_REGION_NO_WAIT_NV", 0x8E16}, {"GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E1E}, {"GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E1F}, {"GL_COLOR_SAMPLES_NV", 0x8E20}, {"GL_TRANSFORM_FEEDBACK", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_NV", 0x8E22}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_PAUSED", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV", 0x8E23}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_ACTIVE", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV", 0x8E24}, {"GL_TRANSFORM_FEEDBACK_BINDING", 0x8E25}, {"GL_TRANSFORM_FEEDBACK_BINDING_NV", 0x8E25}, {"GL_FRAME_NV", 0x8E26}, {"GL_FIELDS_NV", 0x8E27}, {"GL_CURRENT_TIME_NV", 0x8E28}, {"GL_TIMESTAMP", 0x8E28}, {"GL_TIMESTAMP_EXT", 0x8E28}, {"GL_NUM_FILL_STREAMS_NV", 0x8E29}, {"GL_PRESENT_TIME_NV", 0x8E2A}, {"GL_PRESENT_DURATION_NV", 0x8E2B}, {"GL_DEPTH_COMPONENT16_NONLINEAR_NV", 0x8E2C}, {"GL_PROGRAM_MATRIX_EXT", 0x8E2D}, {"GL_TRANSPOSE_PROGRAM_MATRIX_EXT", 0x8E2E}, {"GL_PROGRAM_MATRIX_STACK_DEPTH_EXT", 0x8E2F}, {"GL_TEXTURE_SWIZZLE_R", 0x8E42}, {"GL_TEXTURE_SWIZZLE_R_EXT", 0x8E42}, {"GL_TEXTURE_SWIZZLE_G", 0x8E43}, {"GL_TEXTURE_SWIZZLE_G_EXT", 0x8E43}, {"GL_TEXTURE_SWIZZLE_B", 0x8E44}, {"GL_TEXTURE_SWIZZLE_B_EXT", 0x8E44}, {"GL_TEXTURE_SWIZZLE_A", 0x8E45}, {"GL_TEXTURE_SWIZZLE_A_EXT", 0x8E45}, {"GL_TEXTURE_SWIZZLE_RGBA", 0x8E46}, {"GL_TEXTURE_SWIZZLE_RGBA_EXT", 0x8E46}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS", 0x8E47}, {"GL_ACTIVE_SUBROUTINE_MAX_LENGTH", 0x8E48}, {"GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH", 0x8E49}, {"GL_NUM_COMPATIBLE_SUBROUTINES", 0x8E4A}, {"GL_COMPATIBLE_SUBROUTINES", 0x8E4B}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION", 0x8E4C}, {"GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", 0x8E4C}, {"GL_FIRST_VERTEX_CONVENTION", 0x8E4D}, {"GL_FIRST_VERTEX_CONVENTION_EXT", 0x8E4D}, {"GL_LAST_VERTEX_CONVENTION", 0x8E4E}, {"GL_LAST_VERTEX_CONVENTION_EXT", 0x8E4E}, {"GL_PROVOKING_VERTEX", 0x8E4F}, {"GL_PROVOKING_VERTEX_EXT", 0x8E4F}, {"GL_SAMPLE_POSITION", 0x8E50}, {"GL_SAMPLE_POSITION_NV", 0x8E50}, {"GL_SAMPLE_MASK", 0x8E51}, {"GL_SAMPLE_MASK_NV", 0x8E51}, {"GL_SAMPLE_MASK_VALUE", 0x8E52}, {"GL_SAMPLE_MASK_VALUE_NV", 0x8E52}, {"GL_TEXTURE_BINDING_RENDERBUFFER_NV", 0x8E53}, {"GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV", 0x8E54}, {"GL_TEXTURE_RENDERBUFFER_NV", 0x8E55}, {"GL_SAMPLER_RENDERBUFFER_NV", 0x8E56}, {"GL_INT_SAMPLER_RENDERBUFFER_NV", 0x8E57}, {"GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV", 0x8E58}, {"GL_MAX_SAMPLE_MASK_WORDS", 0x8E59}, {"GL_MAX_SAMPLE_MASK_WORDS_NV", 0x8E59}, {"GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV", 0x8E5A}, {"GL_MAX_GEOMETRY_SHADER_INVOCATIONS", 0x8E5A}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5B}, {"GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5B}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET", 0x8E5C}, {"GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV", 0x8E5C}, {"GL_FRAGMENT_INTERPOLATION_OFFSET_BITS", 0x8E5D}, {"GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV", 0x8E5D}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5E}, {"GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB", 0x8E5F}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV", 0x8E5F}, {"GL_MAX_TRANSFORM_FEEDBACK_BUFFERS", 0x8E70}, {"GL_MAX_VERTEX_STREAMS", 0x8E71}, {"GL_PATCH_VERTICES", 0x8E72}, {"GL_PATCH_DEFAULT_INNER_LEVEL", 0x8E73}, {"GL_PATCH_DEFAULT_OUTER_LEVEL", 0x8E74}, {"GL_TESS_CONTROL_OUTPUT_VERTICES", 0x8E75}, {"GL_TESS_GEN_MODE", 0x8E76}, {"GL_TESS_GEN_SPACING", 0x8E77}, {"GL_TESS_GEN_VERTEX_ORDER", 0x8E78}, {"GL_TESS_GEN_POINT_MODE", 0x8E79}, {"GL_ISOLINES", 0x8E7A}, {"GL_FRACTIONAL_ODD", 0x8E7B}, {"GL_FRACTIONAL_EVEN", 0x8E7C}, {"GL_MAX_PATCH_VERTICES", 0x8E7D}, {"GL_MAX_TESS_GEN_LEVEL", 0x8E7E}, {"GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS", 0x8E7F}, {"GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS", 0x8E80}, {"GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS", 0x8E81}, {"GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS", 0x8E82}, {"GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS", 0x8E83}, {"GL_MAX_TESS_PATCH_COMPONENTS", 0x8E84}, {"GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS", 0x8E85}, {"GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS", 0x8E86}, {"GL_TESS_EVALUATION_SHADER", 0x8E87}, {"GL_TESS_CONTROL_SHADER", 0x8E88}, {"GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS", 0x8E89}, {"GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS", 0x8E8A}, {"GL_COMPRESSED_RGBA_BPTC_UNORM_ARB", 0x8E8C}, {"GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB", 0x8E8D}, {"GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB", 0x8E8E}, {"GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB", 0x8E8F}, {"GL_COVERAGE_COMPONENT_NV", 0x8ED0}, {"GL_COVERAGE_COMPONENT4_NV", 0x8ED1}, {"GL_COVERAGE_ATTACHMENT_NV", 0x8ED2}, {"GL_COVERAGE_BUFFERS_NV", 0x8ED3}, {"GL_COVERAGE_SAMPLES_NV", 0x8ED4}, {"GL_COVERAGE_ALL_FRAGMENTS_NV", 0x8ED5}, {"GL_COVERAGE_EDGE_FRAGMENTS_NV", 0x8ED6}, {"GL_COVERAGE_AUTOMATIC_NV", 0x8ED7}, {"GL_BUFFER_GPU_ADDRESS_NV", 0x8F1D}, {"GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV", 0x8F1E}, {"GL_ELEMENT_ARRAY_UNIFIED_NV", 0x8F1F}, {"GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV", 0x8F20}, {"GL_VERTEX_ARRAY_ADDRESS_NV", 0x8F21}, {"GL_NORMAL_ARRAY_ADDRESS_NV", 0x8F22}, {"GL_COLOR_ARRAY_ADDRESS_NV", 0x8F23}, {"GL_INDEX_ARRAY_ADDRESS_NV", 0x8F24}, {"GL_TEXTURE_COORD_ARRAY_ADDRESS_NV", 0x8F25}, {"GL_EDGE_FLAG_ARRAY_ADDRESS_NV", 0x8F26}, {"GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV", 0x8F27}, {"GL_FOG_COORD_ARRAY_ADDRESS_NV", 0x8F28}, {"GL_ELEMENT_ARRAY_ADDRESS_NV", 0x8F29}, {"GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV", 0x8F2A}, {"GL_VERTEX_ARRAY_LENGTH_NV", 0x8F2B}, {"GL_NORMAL_ARRAY_LENGTH_NV", 0x8F2C}, {"GL_COLOR_ARRAY_LENGTH_NV", 0x8F2D}, {"GL_INDEX_ARRAY_LENGTH_NV", 0x8F2E}, {"GL_TEXTURE_COORD_ARRAY_LENGTH_NV", 0x8F2F}, {"GL_EDGE_FLAG_ARRAY_LENGTH_NV", 0x8F30}, {"GL_SECONDARY_COLOR_ARRAY_LENGTH_NV", 0x8F31}, {"GL_FOG_COORD_ARRAY_LENGTH_NV", 0x8F32}, {"GL_ELEMENT_ARRAY_LENGTH_NV", 0x8F33}, {"GL_GPU_ADDRESS_NV", 0x8F34}, {"GL_MAX_SHADER_BUFFER_ADDRESS_NV", 0x8F35}, {"GL_COPY_READ_BUFFER", 0x8F36}, {"GL_COPY_READ_BUFFER_BINDING", 0x8F36}, {"GL_COPY_WRITE_BUFFER", 0x8F37}, {"GL_COPY_WRITE_BUFFER_BINDING", 0x8F37}, {"GL_MAX_IMAGE_UNITS", 0x8F38}, {"GL_MAX_IMAGE_UNITS_EXT", 0x8F38}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS", 0x8F39}, {"GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT", 0x8F39}, {"GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES", 0x8F39}, {"GL_IMAGE_BINDING_NAME", 0x8F3A}, {"GL_IMAGE_BINDING_NAME_EXT", 0x8F3A}, {"GL_IMAGE_BINDING_LEVEL", 0x8F3B}, {"GL_IMAGE_BINDING_LEVEL_EXT", 0x8F3B}, {"GL_IMAGE_BINDING_LAYERED", 0x8F3C}, {"GL_IMAGE_BINDING_LAYERED_EXT", 0x8F3C}, {"GL_IMAGE_BINDING_LAYER", 0x8F3D}, {"GL_IMAGE_BINDING_LAYER_EXT", 0x8F3D}, {"GL_IMAGE_BINDING_ACCESS", 0x8F3E}, {"GL_IMAGE_BINDING_ACCESS_EXT", 0x8F3E}, {"GL_DRAW_INDIRECT_BUFFER", 0x8F3F}, {"GL_DRAW_INDIRECT_UNIFIED_NV", 0x8F40}, {"GL_DRAW_INDIRECT_ADDRESS_NV", 0x8F41}, {"GL_DRAW_INDIRECT_LENGTH_NV", 0x8F42}, {"GL_DRAW_INDIRECT_BUFFER_BINDING", 0x8F43}, {"GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV", 0x8F44}, {"GL_MAX_PROGRAM_SUBROUTINE_NUM_NV", 0x8F45}, {"GL_DOUBLE_MAT2", 0x8F46}, {"GL_DOUBLE_MAT2_EXT", 0x8F46}, {"GL_DOUBLE_MAT3", 0x8F47}, {"GL_DOUBLE_MAT3_EXT", 0x8F47}, {"GL_DOUBLE_MAT4", 0x8F48}, {"GL_DOUBLE_MAT4_EXT", 0x8F48}, {"GL_DOUBLE_MAT2x3", 0x8F49}, {"GL_DOUBLE_MAT2x3_EXT", 0x8F49}, {"GL_DOUBLE_MAT2x4", 0x8F4A}, {"GL_DOUBLE_MAT2x4_EXT", 0x8F4A}, {"GL_DOUBLE_MAT3x2", 0x8F4B}, {"GL_DOUBLE_MAT3x2_EXT", 0x8F4B}, {"GL_DOUBLE_MAT3x4", 0x8F4C}, {"GL_DOUBLE_MAT3x4_EXT", 0x8F4C}, {"GL_DOUBLE_MAT4x2", 0x8F4D}, {"GL_DOUBLE_MAT4x2_EXT", 0x8F4D}, {"GL_DOUBLE_MAT4x3", 0x8F4E}, {"GL_DOUBLE_MAT4x3_EXT", 0x8F4E}, {"GL_MALI_SHADER_BINARY_ARM", 0x8F60}, {"GL_MALI_PROGRAM_BINARY_ARM", 0x8F61}, {"GL_RED_SNORM", 0x8F90}, {"GL_RG_SNORM", 0x8F91}, {"GL_RGB_SNORM", 0x8F92}, {"GL_RGBA_SNORM", 0x8F93}, {"GL_R8_SNORM", 0x8F94}, {"GL_RG8_SNORM", 0x8F95}, {"GL_RGB8_SNORM", 0x8F96}, {"GL_RGBA8_SNORM", 0x8F97}, {"GL_R16_SNORM", 0x8F98}, {"GL_RG16_SNORM", 0x8F99}, {"GL_RGB16_SNORM", 0x8F9A}, {"GL_RGBA16_SNORM", 0x8F9B}, {"GL_SIGNED_NORMALIZED", 0x8F9C}, {"GL_PRIMITIVE_RESTART", 0x8F9D}, {"GL_PRIMITIVE_RESTART_INDEX", 0x8F9E}, {"GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB", 0x8F9F}, {"GL_PERFMON_GLOBAL_MODE_QCOM", 0x8FA0}, {"GL_BINNING_CONTROL_HINT_QCOM", 0x8FB0}, {"GL_CPU_OPTIMIZED_QCOM", 0x8FB1}, {"GL_GPU_OPTIMIZED_QCOM", 0x8FB2}, {"GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM", 0x8FB3}, {"GL_GPU_DISJOINT_EXT", 0x8FBB}, {"GL_SHADER_BINARY_VIV", 0x8FC4}, {"GL_INT8_NV", 0x8FE0}, {"GL_INT8_VEC2_NV", 0x8FE1}, {"GL_INT8_VEC3_NV", 0x8FE2}, {"GL_INT8_VEC4_NV", 0x8FE3}, {"GL_INT16_NV", 0x8FE4}, {"GL_INT16_VEC2_NV", 0x8FE5}, {"GL_INT16_VEC3_NV", 0x8FE6}, {"GL_INT16_VEC4_NV", 0x8FE7}, {"GL_INT64_VEC2_NV", 0x8FE9}, {"GL_INT64_VEC3_NV", 0x8FEA}, {"GL_INT64_VEC4_NV", 0x8FEB}, {"GL_UNSIGNED_INT8_NV", 0x8FEC}, {"GL_UNSIGNED_INT8_VEC2_NV", 0x8FED}, {"GL_UNSIGNED_INT8_VEC3_NV", 0x8FEE}, {"GL_UNSIGNED_INT8_VEC4_NV", 0x8FEF}, {"GL_UNSIGNED_INT16_NV", 0x8FF0}, {"GL_UNSIGNED_INT16_VEC2_NV", 0x8FF1}, {"GL_UNSIGNED_INT16_VEC3_NV", 0x8FF2}, {"GL_UNSIGNED_INT16_VEC4_NV", 0x8FF3}, {"GL_UNSIGNED_INT64_VEC2_NV", 0x8FF5}, {"GL_UNSIGNED_INT64_VEC3_NV", 0x8FF6}, {"GL_UNSIGNED_INT64_VEC4_NV", 0x8FF7}, {"GL_FLOAT16_NV", 0x8FF8}, {"GL_FLOAT16_VEC2_NV", 0x8FF9}, {"GL_FLOAT16_VEC3_NV", 0x8FFA}, {"GL_FLOAT16_VEC4_NV", 0x8FFB}, {"GL_DOUBLE_VEC2", 0x8FFC}, {"GL_DOUBLE_VEC2_EXT", 0x8FFC}, {"GL_DOUBLE_VEC3", 0x8FFD}, {"GL_DOUBLE_VEC3_EXT", 0x8FFD}, {"GL_DOUBLE_VEC4", 0x8FFE}, {"GL_DOUBLE_VEC4_EXT", 0x8FFE}, {"GL_SAMPLER_BUFFER_AMD", 0x9001}, {"GL_INT_SAMPLER_BUFFER_AMD", 0x9002}, {"GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD", 0x9003}, {"GL_TESSELLATION_MODE_AMD", 0x9004}, {"GL_TESSELLATION_FACTOR_AMD", 0x9005}, {"GL_DISCRETE_AMD", 0x9006}, {"GL_CONTINUOUS_AMD", 0x9007}, {"GL_TEXTURE_CUBE_MAP_ARRAY", 0x9009}, {"GL_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x9009}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY", 0x900A}, {"GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB", 0x900A}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY", 0x900B}, {"GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB", 0x900B}, {"GL_SAMPLER_CUBE_MAP_ARRAY", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900C}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW", 0x900D}, {"GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB", 0x900D}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900E}, {"GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900E}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY", 0x900F}, {"GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB", 0x900F}, {"GL_ALPHA_SNORM", 0x9010}, {"GL_LUMINANCE_SNORM", 0x9011}, {"GL_LUMINANCE_ALPHA_SNORM", 0x9012}, {"GL_INTENSITY_SNORM", 0x9013}, {"GL_ALPHA8_SNORM", 0x9014}, {"GL_LUMINANCE8_SNORM", 0x9015}, {"GL_LUMINANCE8_ALPHA8_SNORM", 0x9016}, {"GL_INTENSITY8_SNORM", 0x9017}, {"GL_ALPHA16_SNORM", 0x9018}, {"GL_LUMINANCE16_SNORM", 0x9019}, {"GL_LUMINANCE16_ALPHA16_SNORM", 0x901A}, {"GL_INTENSITY16_SNORM", 0x901B}, {"GL_FACTOR_MIN_AMD", 0x901C}, {"GL_FACTOR_MAX_AMD", 0x901D}, {"GL_DEPTH_CLAMP_NEAR_AMD", 0x901E}, {"GL_DEPTH_CLAMP_FAR_AMD", 0x901F}, {"GL_VIDEO_BUFFER_NV", 0x9020}, {"GL_VIDEO_BUFFER_BINDING_NV", 0x9021}, {"GL_FIELD_UPPER_NV", 0x9022}, {"GL_FIELD_LOWER_NV", 0x9023}, {"GL_NUM_VIDEO_CAPTURE_STREAMS_NV", 0x9024}, {"GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV", 0x9025}, {"GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV", 0x9026}, {"GL_LAST_VIDEO_CAPTURE_STATUS_NV", 0x9027}, {"GL_VIDEO_BUFFER_PITCH_NV", 0x9028}, {"GL_VIDEO_COLOR_CONVERSION_MATRIX_NV", 0x9029}, {"GL_VIDEO_COLOR_CONVERSION_MAX_NV", 0x902A}, {"GL_VIDEO_COLOR_CONVERSION_MIN_NV", 0x902B}, {"GL_VIDEO_COLOR_CONVERSION_OFFSET_NV", 0x902C}, {"GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV", 0x902D}, {"GL_PARTIAL_SUCCESS_NV", 0x902E}, {"GL_SUCCESS_NV", 0x902F}, {"GL_FAILURE_NV", 0x9030}, {"GL_YCBYCR8_422_NV", 0x9031}, {"GL_YCBAYCR8A_4224_NV", 0x9032}, {"GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV", 0x9033}, {"GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV", 0x9034}, {"GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV", 0x9035}, {"GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV", 0x9036}, {"GL_Z4Y12Z4CB12Z4CR12_444_NV", 0x9037}, {"GL_VIDEO_CAPTURE_FRAME_WIDTH_NV", 0x9038}, {"GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV", 0x9039}, {"GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV", 0x903A}, {"GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV", 0x903B}, {"GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV", 0x903C}, {"GL_TEXTURE_COVERAGE_SAMPLES_NV", 0x9045}, {"GL_TEXTURE_COLOR_SAMPLES_NV", 0x9046}, {"GL_IMAGE_1D", 0x904C}, {"GL_IMAGE_1D_EXT", 0x904C}, {"GL_IMAGE_2D", 0x904D}, {"GL_IMAGE_2D_EXT", 0x904D}, {"GL_IMAGE_3D", 0x904E}, {"GL_IMAGE_3D_EXT", 0x904E}, {"GL_IMAGE_2D_RECT", 0x904F}, {"GL_IMAGE_2D_RECT_EXT", 0x904F}, {"GL_IMAGE_CUBE", 0x9050}, {"GL_IMAGE_CUBE_EXT", 0x9050}, {"GL_IMAGE_BUFFER", 0x9051}, {"GL_IMAGE_BUFFER_EXT", 0x9051}, {"GL_IMAGE_1D_ARRAY", 0x9052}, {"GL_IMAGE_1D_ARRAY_EXT", 0x9052}, {"GL_IMAGE_2D_ARRAY", 0x9053}, {"GL_IMAGE_2D_ARRAY_EXT", 0x9053}, {"GL_IMAGE_CUBE_MAP_ARRAY", 0x9054}, {"GL_IMAGE_CUBE_MAP_ARRAY_EXT", 0x9054}, {"GL_IMAGE_2D_MULTISAMPLE", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_EXT", 0x9055}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9056}, {"GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9056}, {"GL_INT_IMAGE_1D", 0x9057}, {"GL_INT_IMAGE_1D_EXT", 0x9057}, {"GL_INT_IMAGE_2D", 0x9058}, {"GL_INT_IMAGE_2D_EXT", 0x9058}, {"GL_INT_IMAGE_3D", 0x9059}, {"GL_INT_IMAGE_3D_EXT", 0x9059}, {"GL_INT_IMAGE_2D_RECT", 0x905A}, {"GL_INT_IMAGE_2D_RECT_EXT", 0x905A}, {"GL_INT_IMAGE_CUBE", 0x905B}, {"GL_INT_IMAGE_CUBE_EXT", 0x905B}, {"GL_INT_IMAGE_BUFFER", 0x905C}, {"GL_INT_IMAGE_BUFFER_EXT", 0x905C}, {"GL_INT_IMAGE_1D_ARRAY", 0x905D}, {"GL_INT_IMAGE_1D_ARRAY_EXT", 0x905D}, {"GL_INT_IMAGE_2D_ARRAY", 0x905E}, {"GL_INT_IMAGE_2D_ARRAY_EXT", 0x905E}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY", 0x905F}, {"GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x905F}, {"GL_INT_IMAGE_2D_MULTISAMPLE", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x9060}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x9061}, {"GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x9061}, {"GL_UNSIGNED_INT_IMAGE_1D", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_1D_EXT", 0x9062}, {"GL_UNSIGNED_INT_IMAGE_2D", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_2D_EXT", 0x9063}, {"GL_UNSIGNED_INT_IMAGE_3D", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_3D_EXT", 0x9064}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT", 0x9065}, {"GL_UNSIGNED_INT_IMAGE_CUBE", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_CUBE_EXT", 0x9066}, {"GL_UNSIGNED_INT_IMAGE_BUFFER", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_BUFFER_EXT", 0x9067}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT", 0x9068}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT", 0x9069}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT", 0x906A}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT", 0x906B}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY", 0x906C}, {"GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT", 0x906C}, {"GL_MAX_IMAGE_SAMPLES", 0x906D}, {"GL_MAX_IMAGE_SAMPLES_EXT", 0x906D}, {"GL_IMAGE_BINDING_FORMAT", 0x906E}, {"GL_IMAGE_BINDING_FORMAT_EXT", 0x906E}, {"GL_RGB10_A2UI", 0x906F}, {"GL_PATH_FORMAT_SVG_NV", 0x9070}, {"GL_PATH_FORMAT_PS_NV", 0x9071}, {"GL_STANDARD_FONT_NAME_NV", 0x9072}, {"GL_SYSTEM_FONT_NAME_NV", 0x9073}, {"GL_FILE_NAME_NV", 0x9074}, {"GL_PATH_STROKE_WIDTH_NV", 0x9075}, {"GL_PATH_END_CAPS_NV", 0x9076}, {"GL_PATH_INITIAL_END_CAP_NV", 0x9077}, {"GL_PATH_TERMINAL_END_CAP_NV", 0x9078}, {"GL_PATH_JOIN_STYLE_NV", 0x9079}, {"GL_PATH_MITER_LIMIT_NV", 0x907A}, {"GL_PATH_DASH_CAPS_NV", 0x907B}, {"GL_PATH_INITIAL_DASH_CAP_NV", 0x907C}, {"GL_PATH_TERMINAL_DASH_CAP_NV", 0x907D}, {"GL_PATH_DASH_OFFSET_NV", 0x907E}, {"GL_PATH_CLIENT_LENGTH_NV", 0x907F}, {"GL_PATH_FILL_MODE_NV", 0x9080}, {"GL_PATH_FILL_MASK_NV", 0x9081}, {"GL_PATH_FILL_COVER_MODE_NV", 0x9082}, {"GL_PATH_STROKE_COVER_MODE_NV", 0x9083}, {"GL_PATH_STROKE_MASK_NV", 0x9084}, {"GL_COUNT_UP_NV", 0x9088}, {"GL_COUNT_DOWN_NV", 0x9089}, {"GL_PATH_OBJECT_BOUNDING_BOX_NV", 0x908A}, {"GL_CONVEX_HULL_NV", 0x908B}, {"GL_BOUNDING_BOX_NV", 0x908D}, {"GL_TRANSLATE_X_NV", 0x908E}, {"GL_TRANSLATE_Y_NV", 0x908F}, {"GL_TRANSLATE_2D_NV", 0x9090}, {"GL_TRANSLATE_3D_NV", 0x9091}, {"GL_AFFINE_2D_NV", 0x9092}, {"GL_AFFINE_3D_NV", 0x9094}, {"GL_TRANSPOSE_AFFINE_2D_NV", 0x9096}, {"GL_TRANSPOSE_AFFINE_3D_NV", 0x9098}, {"GL_UTF8_NV", 0x909A}, {"GL_UTF16_NV", 0x909B}, {"GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV", 0x909C}, {"GL_PATH_COMMAND_COUNT_NV", 0x909D}, {"GL_PATH_COORD_COUNT_NV", 0x909E}, {"GL_PATH_DASH_ARRAY_COUNT_NV", 0x909F}, {"GL_PATH_COMPUTED_LENGTH_NV", 0x90A0}, {"GL_PATH_FILL_BOUNDING_BOX_NV", 0x90A1}, {"GL_PATH_STROKE_BOUNDING_BOX_NV", 0x90A2}, {"GL_SQUARE_NV", 0x90A3}, {"GL_ROUND_NV", 0x90A4}, {"GL_TRIANGULAR_NV", 0x90A5}, {"GL_BEVEL_NV", 0x90A6}, {"GL_MITER_REVERT_NV", 0x90A7}, {"GL_MITER_TRUNCATE_NV", 0x90A8}, {"GL_SKIP_MISSING_GLYPH_NV", 0x90A9}, {"GL_USE_MISSING_GLYPH_NV", 0x90AA}, {"GL_PATH_ERROR_POSITION_NV", 0x90AB}, {"GL_PATH_FOG_GEN_MODE_NV", 0x90AC}, {"GL_ACCUM_ADJACENT_PAIRS_NV", 0x90AD}, {"GL_ADJACENT_PAIRS_NV", 0x90AE}, {"GL_FIRST_TO_REST_NV", 0x90AF}, {"GL_PATH_GEN_MODE_NV", 0x90B0}, {"GL_PATH_GEN_COEFF_NV", 0x90B1}, {"GL_PATH_GEN_COLOR_FORMAT_NV", 0x90B2}, {"GL_PATH_GEN_COMPONENTS_NV", 0x90B3}, {"GL_PATH_DASH_OFFSET_RESET_NV", 0x90B4}, {"GL_MOVE_TO_RESETS_NV", 0x90B5}, {"GL_MOVE_TO_CONTINUES_NV", 0x90B6}, {"GL_PATH_STENCIL_FUNC_NV", 0x90B7}, {"GL_PATH_STENCIL_REF_NV", 0x90B8}, {"GL_PATH_STENCIL_VALUE_MASK_NV", 0x90B9}, {"GL_SCALED_RESOLVE_FASTEST_EXT", 0x90BA}, {"GL_SCALED_RESOLVE_NICEST_EXT", 0x90BB}, {"GL_MIN_MAP_BUFFER_ALIGNMENT", 0x90BC}, {"GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV", 0x90BD}, {"GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV", 0x90BE}, {"GL_PATH_COVER_DEPTH_FUNC_NV", 0x90BF}, {"GL_IMAGE_FORMAT_COMPATIBILITY_TYPE", 0x90C7}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE", 0x90C8}, {"GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS", 0x90C9}, {"GL_MAX_VERTEX_IMAGE_UNIFORMS", 0x90CA}, {"GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS", 0x90CB}, {"GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS", 0x90CC}, {"GL_MAX_GEOMETRY_IMAGE_UNIFORMS", 0x90CD}, {"GL_MAX_FRAGMENT_IMAGE_UNIFORMS", 0x90CE}, {"GL_MAX_COMBINED_IMAGE_UNIFORMS", 0x90CF}, {"GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV", 0x90D0}, {"GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV", 0x90D1}, {"GL_SHADER_STORAGE_BUFFER", 0x90D2}, {"GL_SHADER_STORAGE_BUFFER_BINDING", 0x90D3}, {"GL_SHADER_STORAGE_BUFFER_START", 0x90D4}, {"GL_SHADER_STORAGE_BUFFER_SIZE", 0x90D5}, {"GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS", 0x90D6}, {"GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS", 0x90D7}, {"GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS", 0x90D8}, {"GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS", 0x90D9}, {"GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS", 0x90DA}, {"GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS", 0x90DB}, {"GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS", 0x90DC}, {"GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS", 0x90DD}, {"GL_MAX_SHADER_STORAGE_BLOCK_SIZE", 0x90DE}, {"GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT", 0x90DF}, {"GL_SYNC_X11_FENCE_EXT", 0x90E1}, {"GL_DEPTH_STENCIL_TEXTURE_MODE", 0x90EA}, {"GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB", 0x90EB}, {"GL_MAX_COMPUTE_LOCAL_INVOCATIONS", 0x90EB}, {"GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER", 0x90EC}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER", 0x90ED}, {"GL_DISPATCH_INDIRECT_BUFFER", 0x90EE}, {"GL_DISPATCH_INDIRECT_BUFFER_BINDING", 0x90EF}, {"GL_COLOR_ATTACHMENT_EXT", 0x90F0}, {"GL_MULTIVIEW_EXT", 0x90F1}, {"GL_MAX_MULTIVIEW_BUFFERS_EXT", 0x90F2}, {"GL_COMPUTE_PROGRAM_NV", 0x90FB}, {"GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV", 0x90FC}, {"GL_TEXTURE_2D_MULTISAMPLE", 0x9100}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE", 0x9101}, {"GL_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9102}, {"GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY", 0x9103}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE", 0x9104}, {"GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY", 0x9105}, {"GL_TEXTURE_SAMPLES", 0x9106}, {"GL_TEXTURE_FIXED_SAMPLE_LOCATIONS", 0x9107}, {"GL_SAMPLER_2D_MULTISAMPLE", 0x9108}, {"GL_INT_SAMPLER_2D_MULTISAMPLE", 0x9109}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE", 0x910A}, {"GL_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910B}, {"GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910C}, {"GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY", 0x910D}, {"GL_MAX_COLOR_TEXTURE_SAMPLES", 0x910E}, {"GL_MAX_DEPTH_TEXTURE_SAMPLES", 0x910F}, {"GL_MAX_INTEGER_SAMPLES", 0x9110}, {"GL_MAX_SERVER_WAIT_TIMEOUT", 0x9111}, {"GL_MAX_SERVER_WAIT_TIMEOUT_APPLE", 0x9111}, {"GL_OBJECT_TYPE", 0x9112}, {"GL_OBJECT_TYPE_APPLE", 0x9112}, {"GL_SYNC_CONDITION", 0x9113}, {"GL_SYNC_CONDITION_APPLE", 0x9113}, {"GL_SYNC_STATUS", 0x9114}, {"GL_SYNC_STATUS_APPLE", 0x9114}, {"GL_SYNC_FLAGS", 0x9115}, {"GL_SYNC_FLAGS_APPLE", 0x9115}, {"GL_SYNC_FENCE", 0x9116}, {"GL_SYNC_FENCE_APPLE", 0x9116}, {"GL_SYNC_GPU_COMMANDS_COMPLETE", 0x9117}, {"GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE", 0x9117}, {"GL_UNSIGNALED", 0x9118}, {"GL_UNSIGNALED_APPLE", 0x9118}, {"GL_SIGNALED", 0x9119}, {"GL_SIGNALED_APPLE", 0x9119}, {"GL_ALREADY_SIGNALED", 0x911A}, {"GL_ALREADY_SIGNALED_APPLE", 0x911A}, {"GL_TIMEOUT_EXPIRED", 0x911B}, {"GL_TIMEOUT_EXPIRED_APPLE", 0x911B}, {"GL_CONDITION_SATISFIED", 0x911C}, {"GL_CONDITION_SATISFIED_APPLE", 0x911C}, {"GL_WAIT_FAILED", 0x911D}, {"GL_WAIT_FAILED_APPLE", 0x911D}, {"GL_BUFFER_ACCESS_FLAGS", 0x911F}, {"GL_BUFFER_MAP_LENGTH", 0x9120}, {"GL_BUFFER_MAP_OFFSET", 0x9121}, {"GL_MAX_VERTEX_OUTPUT_COMPONENTS", 0x9122}, {"GL_MAX_GEOMETRY_INPUT_COMPONENTS", 0x9123}, {"GL_MAX_GEOMETRY_OUTPUT_COMPONENTS", 0x9124}, {"GL_MAX_FRAGMENT_INPUT_COMPONENTS", 0x9125}, {"GL_CONTEXT_PROFILE_MASK", 0x9126}, {"GL_UNPACK_COMPRESSED_BLOCK_WIDTH", 0x9127}, {"GL_UNPACK_COMPRESSED_BLOCK_HEIGHT", 0x9128}, {"GL_UNPACK_COMPRESSED_BLOCK_DEPTH", 0x9129}, {"GL_UNPACK_COMPRESSED_BLOCK_SIZE", 0x912A}, {"GL_PACK_COMPRESSED_BLOCK_WIDTH", 0x912B}, {"GL_PACK_COMPRESSED_BLOCK_HEIGHT", 0x912C}, {"GL_PACK_COMPRESSED_BLOCK_DEPTH", 0x912D}, {"GL_PACK_COMPRESSED_BLOCK_SIZE", 0x912E}, {"GL_TEXTURE_IMMUTABLE_FORMAT", 0x912F}, {"GL_SGX_PROGRAM_BINARY_IMG", 0x9130}, {"GL_RENDERBUFFER_SAMPLES_IMG", 0x9133}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG", 0x9134}, {"GL_MAX_SAMPLES_IMG", 0x9135}, {"GL_TEXTURE_SAMPLES_IMG", 0x9136}, {"GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG", 0x9137}, {"GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG", 0x9138}, {"GL_MAX_DEBUG_MESSAGE_LENGTH", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_AMD", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_ARB", 0x9143}, {"GL_MAX_DEBUG_MESSAGE_LENGTH_KHR", 0x9143}, {"GL_MAX_DEBUG_LOGGED_MESSAGES", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_AMD", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_ARB", 0x9144}, {"GL_MAX_DEBUG_LOGGED_MESSAGES_KHR", 0x9144}, {"GL_DEBUG_LOGGED_MESSAGES", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_AMD", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_ARB", 0x9145}, {"GL_DEBUG_LOGGED_MESSAGES_KHR", 0x9145}, {"GL_DEBUG_SEVERITY_HIGH", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_AMD", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_ARB", 0x9146}, {"GL_DEBUG_SEVERITY_HIGH_KHR", 0x9146}, {"GL_DEBUG_SEVERITY_MEDIUM", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_AMD", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_ARB", 0x9147}, {"GL_DEBUG_SEVERITY_MEDIUM_KHR", 0x9147}, {"GL_DEBUG_SEVERITY_LOW", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_AMD", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_ARB", 0x9148}, {"GL_DEBUG_SEVERITY_LOW_KHR", 0x9148}, {"GL_DEBUG_CATEGORY_API_ERROR_AMD", 0x9149}, {"GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD", 0x914A}, {"GL_DEBUG_CATEGORY_DEPRECATION_AMD", 0x914B}, {"GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD", 0x914C}, {"GL_DEBUG_CATEGORY_PERFORMANCE_AMD", 0x914D}, {"GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD", 0x914E}, {"GL_DEBUG_CATEGORY_APPLICATION_AMD", 0x914F}, {"GL_DEBUG_CATEGORY_OTHER_AMD", 0x9150}, {"GL_BUFFER_OBJECT_EXT", 0x9151}, {"GL_DATA_BUFFER_AMD", 0x9151}, {"GL_PERFORMANCE_MONITOR_AMD", 0x9152}, {"GL_QUERY_OBJECT_AMD", 0x9153}, {"GL_QUERY_OBJECT_EXT", 0x9153}, {"GL_VERTEX_ARRAY_OBJECT_AMD", 0x9154}, {"GL_VERTEX_ARRAY_OBJECT_EXT", 0x9154}, {"GL_SAMPLER_OBJECT_AMD", 0x9155}, {"GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD", 0x9160}, {"GL_QUERY_BUFFER", 0x9192}, {"GL_QUERY_BUFFER_AMD", 0x9192}, {"GL_QUERY_BUFFER_BINDING", 0x9193}, {"GL_QUERY_BUFFER_BINDING_AMD", 0x9193}, {"GL_QUERY_RESULT_NO_WAIT", 0x9194}, {"GL_QUERY_RESULT_NO_WAIT_AMD", 0x9194}, {"GL_VIRTUAL_PAGE_SIZE_X_ARB", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_X_AMD", 0x9195}, {"GL_VIRTUAL_PAGE_SIZE_Y_ARB", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Y_AMD", 0x9196}, {"GL_VIRTUAL_PAGE_SIZE_Z_ARB", 0x9197}, {"GL_VIRTUAL_PAGE_SIZE_Z_AMD", 0x9197}, {"GL_MAX_SPARSE_TEXTURE_SIZE_ARB", 0x9198}, {"GL_MAX_SPARSE_TEXTURE_SIZE_AMD", 0x9198}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB", 0x9199}, {"GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD", 0x9199}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB", 0x919A}, {"GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS", 0x919A}, {"GL_MIN_SPARSE_LEVEL_ARB", 0x919B}, {"GL_MIN_SPARSE_LEVEL_AMD", 0x919B}, {"GL_MIN_LOD_WARNING_AMD", 0x919C}, {"GL_TEXTURE_BUFFER_OFFSET", 0x919D}, {"GL_TEXTURE_BUFFER_SIZE", 0x919E}, {"GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT", 0x919F}, {"GL_VERTEX_ELEMENT_SWIZZLE_AMD", 0x91A4}, {"GL_VERTEX_ID_SWIZZLE_AMD", 0x91A5}, {"GL_TEXTURE_SPARSE_ARB", 0x91A6}, {"GL_VIRTUAL_PAGE_SIZE_INDEX_ARB", 0x91A7}, {"GL_NUM_VIRTUAL_PAGE_SIZES_ARB", 0x91A8}, {"GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB", 0x91A9}, {"GL_COMPUTE_SHADER", 0x91B9}, {"GL_MAX_COMPUTE_UNIFORM_BLOCKS", 0x91BB}, {"GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS", 0x91BC}, {"GL_MAX_COMPUTE_IMAGE_UNIFORMS", 0x91BD}, {"GL_MAX_COMPUTE_WORK_GROUP_COUNT", 0x91BE}, {"GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB", 0x91BF}, {"GL_MAX_COMPUTE_WORK_GROUP_SIZE", 0x91BF}, {"GL_UNPACK_FLIP_Y_WEBGL", 0x9240}, {"GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL", 0x9241}, {"GL_CONTEXT_LOST_WEBGL", 0x9242}, {"GL_UNPACK_COLORSPACE_CONVERSION_WEBGL", 0x9243}, {"GL_BROWSER_DEFAULT_WEBGL", 0x9244}, {"GL_SHADER_BINARY_DMP", 0x9250}, {"GL_GCCSO_SHADER_BINARY_FJ", 0x9260}, {"GL_COMPRESSED_R11_EAC", 0x9270}, {"GL_COMPRESSED_R11_EAC_OES", 0x9270}, {"GL_COMPRESSED_SIGNED_R11_EAC", 0x9271}, {"GL_COMPRESSED_SIGNED_R11_EAC_OES", 0x9271}, {"GL_COMPRESSED_RG11_EAC", 0x9272}, {"GL_COMPRESSED_RG11_EAC_OES", 0x9272}, {"GL_COMPRESSED_SIGNED_RG11_EAC", 0x9273}, {"GL_COMPRESSED_SIGNED_RG11_EAC_OES", 0x9273}, {"GL_COMPRESSED_RGB8_ETC2", 0x9274}, {"GL_COMPRESSED_RGB8_ETC2_OES", 0x9274}, {"GL_COMPRESSED_SRGB8_ETC2", 0x9275}, {"GL_COMPRESSED_SRGB8_ETC2_OES", 0x9275}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9276}, {"GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9276}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2", 0x9277}, {"GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES", 0x9277}, {"GL_COMPRESSED_RGBA8_ETC2_EAC", 0x9278}, {"GL_COMPRESSED_RGBA8_ETC2_EAC_OES", 0x9278}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC", 0x9279}, {"GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES", 0x9279}, {"GL_BLEND_PREMULTIPLIED_SRC_NV", 0x9280}, {"GL_BLEND_OVERLAP_NV", 0x9281}, {"GL_UNCORRELATED_NV", 0x9282}, {"GL_DISJOINT_NV", 0x9283}, {"GL_CONJOINT_NV", 0x9284}, {"GL_BLEND_ADVANCED_COHERENT_NV", 0x9285}, {"GL_SRC_NV", 0x9286}, {"GL_DST_NV", 0x9287}, {"GL_SRC_OVER_NV", 0x9288}, {"GL_DST_OVER_NV", 0x9289}, {"GL_SRC_IN_NV", 0x928A}, {"GL_DST_IN_NV", 0x928B}, {"GL_SRC_OUT_NV", 0x928C}, {"GL_DST_OUT_NV", 0x928D}, {"GL_SRC_ATOP_NV", 0x928E}, {"GL_DST_ATOP_NV", 0x928F}, {"GL_PLUS_NV", 0x9291}, {"GL_PLUS_DARKER_NV", 0x9292}, {"GL_MULTIPLY_NV", 0x9294}, {"GL_SCREEN_NV", 0x9295}, {"GL_OVERLAY_NV", 0x9296}, {"GL_DARKEN_NV", 0x9297}, {"GL_LIGHTEN_NV", 0x9298}, {"GL_COLORDODGE_NV", 0x9299}, {"GL_COLORBURN_NV", 0x929A}, {"GL_HARDLIGHT_NV", 0x929B}, {"GL_SOFTLIGHT_NV", 0x929C}, {"GL_DIFFERENCE_NV", 0x929E}, {"GL_MINUS_NV", 0x929F}, {"GL_EXCLUSION_NV", 0x92A0}, {"GL_CONTRAST_NV", 0x92A1}, {"GL_INVERT_RGB_NV", 0x92A3}, {"GL_LINEARDODGE_NV", 0x92A4}, {"GL_LINEARBURN_NV", 0x92A5}, {"GL_VIVIDLIGHT_NV", 0x92A6}, {"GL_LINEARLIGHT_NV", 0x92A7}, {"GL_PINLIGHT_NV", 0x92A8}, {"GL_HARDMIX_NV", 0x92A9}, {"GL_HSL_HUE_NV", 0x92AD}, {"GL_HSL_SATURATION_NV", 0x92AE}, {"GL_HSL_COLOR_NV", 0x92AF}, {"GL_HSL_LUMINOSITY_NV", 0x92B0}, {"GL_PLUS_CLAMPED_NV", 0x92B1}, {"GL_PLUS_CLAMPED_ALPHA_NV", 0x92B2}, {"GL_MINUS_CLAMPED_NV", 0x92B3}, {"GL_INVERT_OVG_NV", 0x92B4}, {"GL_ATOMIC_COUNTER_BUFFER", 0x92C0}, {"GL_ATOMIC_COUNTER_BUFFER_BINDING", 0x92C1}, {"GL_ATOMIC_COUNTER_BUFFER_START", 0x92C2}, {"GL_ATOMIC_COUNTER_BUFFER_SIZE", 0x92C3}, {"GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE", 0x92C4}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS", 0x92C5}, {"GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES", 0x92C6}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER", 0x92C7}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER", 0x92C8}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x92C9}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER", 0x92CA}, {"GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER", 0x92CB}, {"GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS", 0x92CC}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS", 0x92CD}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS", 0x92CE}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS", 0x92CF}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS", 0x92D0}, {"GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS", 0x92D1}, {"GL_MAX_VERTEX_ATOMIC_COUNTERS", 0x92D2}, {"GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS", 0x92D3}, {"GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS", 0x92D4}, {"GL_MAX_GEOMETRY_ATOMIC_COUNTERS", 0x92D5}, {"GL_MAX_FRAGMENT_ATOMIC_COUNTERS", 0x92D6}, {"GL_MAX_COMBINED_ATOMIC_COUNTERS", 0x92D7}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE", 0x92D8}, {"GL_ACTIVE_ATOMIC_COUNTER_BUFFERS", 0x92D9}, {"GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX", 0x92DA}, {"GL_UNSIGNED_INT_ATOMIC_COUNTER", 0x92DB}, {"GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS", 0x92DC}, {"GL_DEBUG_OUTPUT", 0x92E0}, {"GL_DEBUG_OUTPUT_KHR", 0x92E0}, {"GL_UNIFORM", 0x92E1}, {"GL_UNIFORM_BLOCK", 0x92E2}, {"GL_PROGRAM_INPUT", 0x92E3}, {"GL_PROGRAM_OUTPUT", 0x92E4}, {"GL_BUFFER_VARIABLE", 0x92E5}, {"GL_SHADER_STORAGE_BLOCK", 0x92E6}, {"GL_IS_PER_PATCH", 0x92E7}, {"GL_VERTEX_SUBROUTINE", 0x92E8}, {"GL_TESS_CONTROL_SUBROUTINE", 0x92E9}, {"GL_TESS_EVALUATION_SUBROUTINE", 0x92EA}, {"GL_GEOMETRY_SUBROUTINE", 0x92EB}, {"GL_FRAGMENT_SUBROUTINE", 0x92EC}, {"GL_COMPUTE_SUBROUTINE", 0x92ED}, {"GL_VERTEX_SUBROUTINE_UNIFORM", 0x92EE}, {"GL_TESS_CONTROL_SUBROUTINE_UNIFORM", 0x92EF}, {"GL_TESS_EVALUATION_SUBROUTINE_UNIFORM", 0x92F0}, {"GL_GEOMETRY_SUBROUTINE_UNIFORM", 0x92F1}, {"GL_FRAGMENT_SUBROUTINE_UNIFORM", 0x92F2}, {"GL_COMPUTE_SUBROUTINE_UNIFORM", 0x92F3}, {"GL_TRANSFORM_FEEDBACK_VARYING", 0x92F4}, {"GL_ACTIVE_RESOURCES", 0x92F5}, {"GL_MAX_NAME_LENGTH", 0x92F6}, {"GL_MAX_NUM_ACTIVE_VARIABLES", 0x92F7}, {"GL_MAX_NUM_COMPATIBLE_SUBROUTINES", 0x92F8}, {"GL_NAME_LENGTH", 0x92F9}, {"GL_TYPE", 0x92FA}, {"GL_ARRAY_SIZE", 0x92FB}, {"GL_OFFSET", 0x92FC}, {"GL_BLOCK_INDEX", 0x92FD}, {"GL_ARRAY_STRIDE", 0x92FE}, {"GL_MATRIX_STRIDE", 0x92FF}, {"GL_IS_ROW_MAJOR", 0x9300}, {"GL_ATOMIC_COUNTER_BUFFER_INDEX", 0x9301}, {"GL_BUFFER_BINDING", 0x9302}, {"GL_BUFFER_DATA_SIZE", 0x9303}, {"GL_NUM_ACTIVE_VARIABLES", 0x9304}, {"GL_ACTIVE_VARIABLES", 0x9305}, {"GL_REFERENCED_BY_VERTEX_SHADER", 0x9306}, {"GL_REFERENCED_BY_TESS_CONTROL_SHADER", 0x9307}, {"GL_REFERENCED_BY_TESS_EVALUATION_SHADER", 0x9308}, {"GL_REFERENCED_BY_GEOMETRY_SHADER", 0x9309}, {"GL_REFERENCED_BY_FRAGMENT_SHADER", 0x930A}, {"GL_REFERENCED_BY_COMPUTE_SHADER", 0x930B}, {"GL_TOP_LEVEL_ARRAY_SIZE", 0x930C}, {"GL_TOP_LEVEL_ARRAY_STRIDE", 0x930D}, {"GL_LOCATION", 0x930E}, {"GL_LOCATION_INDEX", 0x930F}, {"GL_FRAMEBUFFER_DEFAULT_WIDTH", 0x9310}, {"GL_FRAMEBUFFER_DEFAULT_HEIGHT", 0x9311}, {"GL_FRAMEBUFFER_DEFAULT_LAYERS", 0x9312}, {"GL_FRAMEBUFFER_DEFAULT_SAMPLES", 0x9313}, {"GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS", 0x9314}, {"GL_MAX_FRAMEBUFFER_WIDTH", 0x9315}, {"GL_MAX_FRAMEBUFFER_HEIGHT", 0x9316}, {"GL_MAX_FRAMEBUFFER_LAYERS", 0x9317}, {"GL_MAX_FRAMEBUFFER_SAMPLES", 0x9318}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB", 0x9344}, {"GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB", 0x9345}, {"GL_LOCATION_COMPONENT", 0x934A}, {"GL_TRANSFORM_FEEDBACK_BUFFER_INDEX", 0x934B}, {"GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE", 0x934C}, {"GL_CLEAR_TEXTURE", 0x9365}, {"GL_NUM_SAMPLE_COUNTS", 0x9380}, {"GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE", 0x93A0}, {"GL_TEXTURE_USAGE_ANGLE", 0x93A2}, {"GL_FRAMEBUFFER_ATTACHMENT_ANGLE", 0x93A3}, {"GL_PACK_REVERSE_ROW_ORDER_ANGLE", 0x93A4}, {"GL_PROGRAM_BINARY_ANGLE", 0x93A6}, {"GL_COMPRESSED_RGBA_ASTC_4x4_KHR", 0x93B0}, {"GL_COMPRESSED_RGBA_ASTC_5x4_KHR", 0x93B1}, {"GL_COMPRESSED_RGBA_ASTC_5x5_KHR", 0x93B2}, {"GL_COMPRESSED_RGBA_ASTC_6x5_KHR", 0x93B3}, {"GL_COMPRESSED_RGBA_ASTC_6x6_KHR", 0x93B4}, {"GL_COMPRESSED_RGBA_ASTC_8x5_KHR", 0x93B5}, {"GL_COMPRESSED_RGBA_ASTC_8x6_KHR", 0x93B6}, {"GL_COMPRESSED_RGBA_ASTC_8x8_KHR", 0x93B7}, {"GL_COMPRESSED_RGBA_ASTC_10x5_KHR", 0x93B8}, {"GL_COMPRESSED_RGBA_ASTC_10x6_KHR", 0x93B9}, {"GL_COMPRESSED_RGBA_ASTC_10x8_KHR", 0x93BA}, {"GL_COMPRESSED_RGBA_ASTC_10x10_KHR", 0x93BB}, {"GL_COMPRESSED_RGBA_ASTC_12x10_KHR", 0x93BC}, {"GL_COMPRESSED_RGBA_ASTC_12x12_KHR", 0x93BD}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR", 0x93D0}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR", 0x93D1}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR", 0x93D2}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR", 0x93D3}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR", 0x93D4}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR", 0x93D5}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR", 0x93D6}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR", 0x93D7}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR", 0x93D8}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR", 0x93D9}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR", 0x93DA}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR", 0x93DB}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR", 0x93DC}, {"GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR", 0x93DD}, {"GL_RASTER_POSITION_UNCLIPPED_IBM", 0x19262}, {"GL_CULL_VERTEX_IBM", 103050}, {"GL_ALL_STATIC_DATA_IBM", 103060}, {"GL_STATIC_VERTEX_ARRAY_IBM", 103061}, {"GL_VERTEX_ARRAY_LIST_IBM", 103070}, {"GL_NORMAL_ARRAY_LIST_IBM", 103071}, {"GL_COLOR_ARRAY_LIST_IBM", 103072}, {"GL_INDEX_ARRAY_LIST_IBM", 103073}, {"GL_TEXTURE_COORD_ARRAY_LIST_IBM", 103074}, {"GL_EDGE_FLAG_ARRAY_LIST_IBM", 103075}, {"GL_FOG_COORDINATE_ARRAY_LIST_IBM", 103076}, {"GL_SECONDARY_COLOR_ARRAY_LIST_IBM", 103077}, {"GL_VERTEX_ARRAY_LIST_STRIDE_IBM", 103080}, {"GL_NORMAL_ARRAY_LIST_STRIDE_IBM", 103081}, {"GL_COLOR_ARRAY_LIST_STRIDE_IBM", 103082}, {"GL_INDEX_ARRAY_LIST_STRIDE_IBM", 103083}, {"GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM", 103084}, {"GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM", 103085}, {"GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM", 103086}, {"GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM", 103087}, {"GL_PREFER_DOUBLEBUFFER_HINT_PGI", 0x1A1F8}, {"GL_CONSERVE_MEMORY_HINT_PGI", 0x1A1FD}, {"GL_RECLAIM_MEMORY_HINT_PGI", 0x1A1FE}, {"GL_NATIVE_GRAPHICS_HANDLE_PGI", 0x1A202}, {"GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI", 0x1A203}, {"GL_NATIVE_GRAPHICS_END_HINT_PGI", 0x1A204}, {"GL_ALWAYS_FAST_HINT_PGI", 0x1A20C}, {"GL_ALWAYS_SOFT_HINT_PGI", 0x1A20D}, {"GL_ALLOW_DRAW_OBJ_HINT_PGI", 0x1A20E}, {"GL_ALLOW_DRAW_WIN_HINT_PGI", 0x1A20F}, {"GL_ALLOW_DRAW_FRG_HINT_PGI", 0x1A210}, {"GL_ALLOW_DRAW_MEM_HINT_PGI", 0x1A211}, {"GL_STRICT_DEPTHFUNC_HINT_PGI", 0x1A216}, {"GL_STRICT_LIGHTING_HINT_PGI", 0x1A217}, {"GL_STRICT_SCISSOR_HINT_PGI", 0x1A218}, {"GL_FULL_STIPPLE_HINT_PGI", 0x1A219}, {"GL_CLIP_NEAR_HINT_PGI", 0x1A220}, {"GL_CLIP_FAR_HINT_PGI", 0x1A221}, {"GL_WIDE_LINE_HINT_PGI", 0x1A222}, {"GL_BACK_NORMALS_HINT_PGI", 0x1A223}, {"GL_VERTEX_DATA_HINT_PGI", 0x1A22A}, {"GL_VERTEX_CONSISTENT_HINT_PGI", 0x1A22B}, {"GL_MATERIAL_SIDE_HINT_PGI", 0x1A22C}, {"GL_MAX_VERTEX_HINT_PGI", 0x1A22D}, {"GL_MAX_CLIP_PLANES_IMG", 0x0D32}, {"GL_TEXTURE_GEN_MODE_OES", 0x2500}, {"GL_CLIP_PLANE0_IMG", 0x3000}, {"GL_CLIP_PLANE1_IMG", 0x3001}, {"GL_CLIP_PLANE2_IMG", 0x3002}, {"GL_CLIP_PLANE3_IMG", 0x3003}, {"GL_CLIP_PLANE4_IMG", 0x3004}, {"GL_CLIP_PLANE5_IMG", 0x3005}, {"GL_ALPHA8_OES", 0x803C}, {"GL_LUMINANCE8_OES", 0x8040}, {"GL_LUMINANCE4_ALPHA4_OES", 0x8043}, {"GL_LUMINANCE8_ALPHA8_OES", 0x8045}, {"GL_RGB8_OES", 0x8051}, {"GL_TEXTURE_BINDING_3D_OES", 0x806A}, {"GL_BGRA_IMG", 0x80E1}, {"GL_TEXTURE_MAX_LEVEL_APPLE", 0x813D}, {"GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT", 0x8210}, {"GL_R32F_EXT", 0x822E}, {"GL_RG32F_EXT", 0x8230}, {"GL_LOSE_CONTEXT_ON_RESET_EXT", 0x8252}, {"GL_GUILTY_CONTEXT_RESET_EXT", 0x8253}, {"GL_INNOCENT_CONTEXT_RESET_EXT", 0x8254}, {"GL_UNKNOWN_CONTEXT_RESET_EXT", 0x8255}, {"GL_RESET_NOTIFICATION_STRATEGY_EXT", 0x8256}, {"GL_NO_RESET_NOTIFICATION_EXT", 0x8261}, {"GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG", 0x8365}, {"GL_VERTEX_ARRAY_BINDING_OES", 0x85B5}, {"GL_RGBA32F_EXT", 0x8814}, {"GL_RGB32F_EXT", 0x8815}, {"GL_ALPHA32F_EXT", 0x8816}, {"GL_LUMINANCE32F_EXT", 0x8818}, {"GL_LUMINANCE_ALPHA32F_EXT", 0x8819}, {"GL_ALPHA16F_EXT", 0x881C}, {"GL_LUMINANCE16F_EXT", 0x881E}, {"GL_LUMINANCE_ALPHA16F_EXT", 0x881F}, {"GL_DRAW_FRAMEBUFFER_BINDING_ANGLE", 0x8CA6}, {"GL_DRAW_FRAMEBUFFER_BINDING_APPLE", 0x8CA6}, {"GL_READ_FRAMEBUFFER_APPLE", 0x8CA8}, {"GL_DRAW_FRAMEBUFFER_APPLE", 0x8CA9}, {"GL_READ_FRAMEBUFFER_BINDING_ANGLE", 0x8CAA}, {"GL_READ_FRAMEBUFFER_BINDING_APPLE", 0x8CAA}, {"GL_RENDERBUFFER_SAMPLES_APPLE", 0x8CAB}, {"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE", 0x8D56}, {"GL_MAX_SAMPLES_APPLE", 0x8D57}, {"GL_CONTEXT_ROBUST_ACCESS_EXT", 0x90F3}, {"GL_TEXTURE_IMMUTABLE_FORMAT_EXT", 0x912F}, {"GL_BGRA8_EXT", 0x93A1}, {0, 0} }; struct OpenGLEnum_u { const char *name; unsigned value; }; static OpenGLEnum_u openGLEnums_u[] = { {"GL_INVALID_INDEX", 0xFFFFFFFFu}, {0, 0} }; struct OpenGLEnum_ull { const char *name; unsigned long long value; }; static OpenGLEnum_ull openGLEnums_ull[] = { {"GL_TIMEOUT_IGNORED", 0xFFFFFFFFFFFFFFFFull}, {"GL_TIMEOUT_IGNORED_APPLE", 0xFFFFFFFFFFFFFFFFull}, {0, 0} }; /* * Add the OpenGL constants to a Python object. Return -1 and raise an * exception on error. */ int qpyopengl_add_constants(PyObject *obj) { int i, rc; PyObject *py_value; for (i = 0; openGLEnums_i[i].name; ++i) { py_value = PyLong_FromLong(openGLEnums_i[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_i[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_u[i].name; ++i) { py_value = PyLong_FromUnsignedLong(openGLEnums_u[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_u[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } for (i = 0; openGLEnums_ull[i].name; ++i) { py_value = PyLong_FromUnsignedLongLong(openGLEnums_ull[i].value); if (!py_value) return -1; rc = PyObject_SetAttrString(obj, openGLEnums_ull[i].name, py_value); Py_DECREF(py_value); if (rc < 0) return -1; } return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2289755 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_api.h0000644000076500000240000000503114532160372016652 0ustar00philstaff// This defines the OpenGL related API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_API_H #define _QPYOPENGL_API_H #include #include #include "sipAPIQtOpenGL.h" // Initialisation. void qpyopengl_init(); // Support for shader arrays. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate); const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate); // Support for QOpenGLVersionFunctionsFactory.get(). class QOpenGLContext; class QOpenGLVersionProfile; PyObject *qpyopengl_version_functions( const QOpenGLVersionProfile &version_profile, QOpenGLContext *context, PyObject *py_context); // Support for the OpenGL bindings. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings); const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey); GLint qpyopengl_get(GLenum pname, GLenum *query); PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, Py_ssize_t len); PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, Py_ssize_t len); PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, Py_ssize_t len); PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, Py_ssize_t len); #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, Py_ssize_t len); #endif #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2266803 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_array_convertors.cpp0000644000076500000240000000764214532160372022050 0ustar00philstaff// This contains the support for converting QOpenGL arrays to Python objects. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyopengl_api.h" // Convert a GLint array to a Python object. PyObject *qpyopengl_from_GLint(int *eflag, const GLint *array, Py_ssize_t len) { if (len == 1) return PyLong_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyLong_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLuint array to a Python object. PyObject *qpyopengl_from_GLuint(int *eflag, const GLuint *array, Py_ssize_t len) { if (len == 1) return PyLong_FromUnsignedLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyLong_FromUnsignedLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLboolean array to a Python object. PyObject *qpyopengl_from_GLboolean(int *eflag, const GLboolean *array, Py_ssize_t len) { if (len == 1) return PyBool_FromLong(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyBool_FromLong(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } // Convert a GLfloat array to a Python object. PyObject *qpyopengl_from_GLfloat(int *eflag, const GLfloat *array, Py_ssize_t len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) // Convert a GLdouble array to a Python object. PyObject *qpyopengl_from_GLdouble(int *eflag, const GLdouble *array, Py_ssize_t len) { if (len == 1) return PyFloat_FromDouble(array[0]); PyObject *tuple = PyTuple_New(len); if (!tuple) { *eflag = 1; return 0; } for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PyFloat_FromDouble(array[i]); if (!itm) { Py_DECREF(tuple); *eflag = 1; return 0; } PyTuple_SetItem(tuple, i, itm); } return tuple; } #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2228775 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_attribute_array.cpp0000644000076500000240000001577514532160372021655 0ustar00philstaff// This contains the support for shader program attribute arrays. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpyopengl_api.h" #include "qpyopengl_misc.h" // Forward declaratations. static void array_dtor(PyObject *capsule); // Parse a Python object as a sequence of either QVector[234]D instances or a // sequence of sequence of floats and return an array that can be passed to // QGLShaderProgram::setAttributeArray(). The array is destroyed only when the // shader is garbage collected or when replaced by another array. const GLfloat *qpyopengl_attribute_array(PyObject *values, PyObject *shader, PyObject *key, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = sipGetUserObject((sipSimpleWrapper *)shader); if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } sipSetUserObject((sipSimpleWrapper *)shader, dict); } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "an attribute array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "an attribute array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = Sequence_Fast_GetItem(values, 0); const sipTypeDef *td; Py_ssize_t nr_dim; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; nr_dim = 2; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; nr_dim = 3; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; nr_dim = 4; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; } else { PyErr_SetString(PyExc_TypeError, "an attribute array must be a sequence of QVector2D, " "QVector3D, QVector4D, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Create the array that will be returned. GLfloat *array = new GLfloat[nr_items * nr_dim]; // Convert the values. GLfloat *ap = array; for (Py_ssize_t i = 0; i < nr_items; ++i) { int iserr = 0; itm = Sequence_Fast_GetItem(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be '%s', not '%s'", sipPyTypeName(sipTypeAsPyTypeObject(td)), sipPyTypeName(Py_TYPE(itm))); } else if (td == sipType_QVector2D) { QVector2D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); } else if (td == sipType_QVector3D) { QVector3D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); } else if (td == sipType_QVector4D) { QVector4D *v = reinterpret_cast(cpp); *ap++ = v->x(); *ap++ = v->y(); *ap++ = v->z(); *ap++ = v->w(); } } else { itm = PySequence_Fast(itm, "attribute array elements should all be sequences"); if (itm) { if (Sequence_Fast_Size(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "attribute array elements should all be sequences " "of length %zd", nr_dim); Py_DECREF(itm); iserr = 1; } else { PyErr_Clear(); for (Py_ssize_t j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble(Sequence_Fast_GetItem(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "attribute array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete[] array; *estate = sipErrorFail; return 0; } } Py_DECREF(values); *tsize = nr_dim; // Wrap the array in a Python object so that it won't leak. PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); if (!array_obj) { Py_DECREF(key); delete[] array; *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } return array; } // The dtor for the saved attribute array. static void array_dtor(PyObject *capsule) { delete[] reinterpret_cast(PyCapsule_GetPointer(capsule, 0)); } ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372154.22823 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_data_cache.cpp0000644000076500000240000001161214532160372020472 0ustar00philstaff// This is the implementation of dataCache. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyopengl_data_cache.h" // The type object. PyTypeObject *qpyopengl_dataCache_TypeObject; // Forward declarations. extern "C" { static int dataCache_clear(PyObject *self); static void dataCache_dealloc(PyObject *self); static int dataCache_traverse(PyObject *self, visitproc visit, void *arg); } // Define the slots. static PyType_Slot qpyopengl_dataCache_Slots[] = { {Py_tp_dealloc, (void *)dataCache_dealloc}, {Py_tp_clear, (void *)dataCache_clear}, {Py_tp_traverse, (void *)dataCache_traverse}, {0, 0} }; // Define the type. static PyType_Spec qpyopengl_dataCache_Spec = { "PyQt6.QtGui.dataCache", sizeof (qpyopengl_dataCache), 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_GC, qpyopengl_dataCache_Slots }; // The dataCache clear function. static int dataCache_clear(PyObject *self) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; Array *uncached = data_cache->uncached; if (uncached) { data_cache->uncached = 0; uncached->clear(); delete uncached; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { data_cache->pcache = 0; PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { delete *pit; ++pit; } delete pcache; } return 0; } // The dataCache dealloc function. static void dataCache_dealloc(PyObject *self) { PyObject_GC_UnTrack(self); dataCache_clear(self); PyObject_GC_Del(self); } // The dataCache traverse function. static int dataCache_traverse(PyObject *self, visitproc visit, void *arg) { qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)self; int vret; Array *uncached = data_cache->uncached; if (uncached) { vret = uncached->traverse(visit, arg); if (vret != 0) return vret; } PrimaryCache *pcache = data_cache->pcache; if (pcache) { PrimaryCache::const_iterator pit = pcache->constBegin(); while (pit != pcache->constEnd()) { PrimaryCacheEntry *pce = *pit; vret = pce->skey_0.traverse(visit, arg); if (vret != 0) return vret; SecondaryCache *scache = pce->skey_n; if (scache) { SecondaryCache::const_iterator sit = scache->constBegin(); while (sit != scache->constEnd()) { vret = (*sit)->traverse(visit, arg); if (vret != 0) return vret; ++sit; } } ++pit; } } return 0; } // Initialise the type and return true if there was no error. bool qpyopengl_dataCache_init_type() { qpyopengl_dataCache_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyopengl_dataCache_Spec); return qpyopengl_dataCache_TypeObject; } // Create a new data cache. qpyopengl_dataCache *qpyopengl_dataCache_New() { return (qpyopengl_dataCache *)PyType_GenericAlloc( qpyopengl_dataCache_TypeObject, 0); } // PrimaryCacheEntry ctor. PrimaryCacheEntry::PrimaryCacheEntry() : skey_n(0) { } // PrimaryCacheEntry dtor. PrimaryCacheEntry::~PrimaryCacheEntry() { if (skey_n) { SecondaryCache::const_iterator sit = skey_n->constBegin(); while (sit != skey_n->constEnd()) { delete (*sit); ++sit; } delete skey_n; skey_n = 0; } } // Array ctor. Array::Array() : data(0) { buffer.bi_obj = 0; } // Array dtor. Array::~Array() { clear(); } // Clear the array. void Array::clear() { if (data) { sipFree(data); data = 0; } else if (buffer.bi_obj) { sipReleaseBufferInfo(&buffer); } } // Traverse the array. int Array::traverse(visitproc visit, void *arg) { PyObject *obj = buffer.bi_obj; return obj ? visit(obj, arg) : 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1919057 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_data_cache.h0000644000076500000240000000455514532160372020147 0ustar00philstaff// This contains the definitions for the implementation of dataCache. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_DATACACHE_H #define _QPYOPENGL_DATACACHE_H #include #include #include "sipAPIQtOpenGL.h" // The wrapper around the actual array memory. struct Array { Array(); ~Array(); // Clear the array. void clear(); // Traverse the array for the garbage collector. int traverse(visitproc visit, void *arg); // The data. If it is 0 then any data is provided by an object that // implements the buffer protocol. void *data; // The buffer information. The obj element is a reference to the object // that implements the buffer protocol. sipBufferInfoDef buffer; }; typedef QHash SecondaryCache; // The cache for all value arrays for a particular primary key. struct PrimaryCacheEntry { PrimaryCacheEntry(); ~PrimaryCacheEntry(); // The cache entry for a secondary key of zero. Array skey_0; // The cache entries for all non-zero secondary keys. SecondaryCache *skey_n; }; typedef QHash PrimaryCache; extern "C" { // This defines the structure of a data cache for OpenGL. typedef struct { PyObject_HEAD // The most recent uncached array, if any. Array *uncached; // The primary cache. PrimaryCache *pcache; } qpyopengl_dataCache; } // The type object. extern PyTypeObject *qpyopengl_dataCache_TypeObject; bool qpyopengl_dataCache_init_type(); qpyopengl_dataCache *qpyopengl_dataCache_New(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2203622 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_get.cpp0000644000076500000240000001111614532160372017214 0ustar00philstaff// This implements support common to all glGet functions. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyopengl_api.h" // Return the number of values returned for a particular parameter, or the // subsequent query needed to obtain the number of values. GLint qpyopengl_get(GLenum pname, GLenum *query) { GLint nr_params = 0; switch (pname) { #if defined(GL_COMPRESSED_TEXTURE_FORMATS) case GL_COMPRESSED_TEXTURE_FORMATS: *query = GL_NUM_COMPRESSED_TEXTURE_FORMATS; break; #endif #if defined(GL_PROGRAM_BINARY_FORMATS) case GL_PROGRAM_BINARY_FORMATS: *query = GL_NUM_PROGRAM_BINARY_FORMATS; break; #endif #if defined(GL_SHADER_BINARY_FORMATS) case GL_SHADER_BINARY_FORMATS: *query = GL_NUM_SHADER_BINARY_FORMATS; break; #endif #if defined(GL_COLOR_MATRIX) case GL_COLOR_MATRIX: #endif #if defined(GL_MODELVIEW_MATRIX) case GL_MODELVIEW_MATRIX: #endif #if defined(GL_PROJECTION_MATRIX) case GL_PROJECTION_MATRIX: #endif #if defined(GL_TEXTURE_MATRIX) case GL_TEXTURE_MATRIX: #endif #if defined(GL_TRANSPOSE_COLOR_MATRIX) case GL_TRANSPOSE_COLOR_MATRIX: #endif #if defined(GL_TRANSPOSE_MODELVIEW_MATRIX) case GL_TRANSPOSE_MODELVIEW_MATRIX: #endif #if defined(GL_TRANSPOSE_PROJECTION_MATRIX) case GL_TRANSPOSE_PROJECTION_MATRIX: #endif #if defined(GL_TRANSPOSE_TEXTURE_MATRIX) case GL_TRANSPOSE_TEXTURE_MATRIX: #endif nr_params = 16; break; #if defined(GL_ACCUM_CLEAR_VALUE) case GL_ACCUM_CLEAR_VALUE: #endif #if defined(GL_BLEND_COLOR) case GL_BLEND_COLOR: #endif #if defined(GL_COLOR_CLEAR_VALUE) case GL_COLOR_CLEAR_VALUE: #endif #if defined(GL_COLOR_WRITEMASK) case GL_COLOR_WRITEMASK: #endif #if defined(GL_CURRENT_COLOR) case GL_CURRENT_COLOR: #endif #if defined(GL_CURRENT_RASTER_COLOR) case GL_CURRENT_RASTER_COLOR: #endif #if defined(GL_CURRENT_RASTER_POSITION) case GL_CURRENT_RASTER_POSITION: #endif #if defined(GL_CURRENT_RASTER_SECONDARY_COLOR) case GL_CURRENT_RASTER_SECONDARY_COLOR: #endif #if defined(GL_CURRENT_RASTER_TEXTURE_COORDS) case GL_CURRENT_RASTER_TEXTURE_COORDS: #endif #if defined(GL_CURRENT_SECONDARY_COLOR) case GL_CURRENT_SECONDARY_COLOR: #endif #if defined(GL_CURRENT_TEXTURE_COORDS) case GL_CURRENT_TEXTURE_COORDS: #endif #if defined(GL_FOG_COLOR) case GL_FOG_COLOR: #endif #if defined(GL_LIGHT_MODEL_AMBIENT) case GL_LIGHT_MODEL_AMBIENT: #endif #if defined(GL_MAP2_GRID_DOMAIN) case GL_MAP2_GRID_DOMAIN: #endif #if defined(GL_SCISSOR_BOX) case GL_SCISSOR_BOX: #endif #if defined(GL_VIEWPORT) case GL_VIEWPORT: #endif nr_params = 4; break; #if defined(GL_SMOOTH_POINT_SIZE_RANGE) case GL_SMOOTH_POINT_SIZE_RANGE: #endif #if defined(GL_POINT_SIZE_RANGE) && (!defined(GL_SMOOTH_POINT_SIZE_RANGE) || GL_SMOOTH_POINT_SIZE_RANGE != GL_POINT_SIZE_RANGE) case GL_POINT_SIZE_RANGE: #endif #if defined(GL_SMOOTH_LINE_WIDTH_RANGE) case GL_SMOOTH_LINE_WIDTH_RANGE: #endif #if defined(GL_LINE_WIDTH_RANGE) && (!defined(GL_SMOOTH_LINE_WIDTH_RANGE) || GL_SMOOTH_LINE_WIDTH_RANGE != GL_LINE_WIDTH_RANGE) case GL_LINE_WIDTH_RANGE: #endif #if defined(GL_ALIASED_POINT_SIZE_RANGE) case GL_ALIASED_POINT_SIZE_RANGE: #endif #if defined(GL_ALIASED_LINE_WIDTH_RANGE) case GL_ALIASED_LINE_WIDTH_RANGE: #endif #if defined(GL_DEPTH_RANGE) case GL_DEPTH_RANGE: #endif #if defined(GL_MAP1_GRID_DOMAIN) case GL_MAP1_GRID_DOMAIN: #endif #if defined(GL_MAP2_GRID_SEGMENTS) case GL_MAP2_GRID_SEGMENTS: #endif #if defined(GL_MAX_VIEWPORT_DIMS) case GL_MAX_VIEWPORT_DIMS: #endif #if defined(GL_POLYGON_MODE) case GL_POLYGON_MODE: #endif #if defined(GL_VIEWPORT_BOUNDS_RANGE) case GL_VIEWPORT_BOUNDS_RANGE: #endif nr_params = 2; break; default: nr_params = 1; } return nr_params; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2295732 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_init.cpp0000644000076500000240000000231414532160372017400 0ustar00philstaff// This is the initialisation support code for the QtOpenGL module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" // Perform any required initialisation. void qpyopengl_init() { // Initialise the OpenGL data cache type. if (!qpyopengl_dataCache_init_type()) Py_FatalError("PyQt6.QtGui: Failed to initialise dataCache type"); } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.192251 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_misc.h0000644000076500000240000000235514532160372017042 0ustar00philstaff// This defines the interfaces to various odd and ends. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYOPENGL_MISC_H #define _QPYOPENGL_MISC_H #include // Replacements for the corresponding Python macros that use the limited API. #define Sequence_Fast_Size(o) \ (PyList_Check(o) ? PyList_Size(o) : PyTuple_Size(o)) #define Sequence_Fast_GetItem(o, i)\ (PyList_Check(o) ? PyList_GetItem(o, i) : PyTuple_GetItem(o, i)) #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1945872 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_uniform_value_array.cpp0000644000076500000240000003053514532160372022514 0ustar00philstaff// This contains the support for shader program uniform value arrays. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "qpyopengl_api.h" #include "qpyopengl_misc.h" // Forward declaratations. static void delete_array(void *array, const sipTypeDef *td); static void array_dtor(PyObject *capsule); // Parse a Python object as a sequence of either QVector[234]D or // QMatrix[234]x[234] instances, or a sequence of sequence of floats and return // an array that can be passed to QOpenGLShaderProgram::setUniformValueArray(). // The array is destroyed only when the shader is garbage collected or when // replaced by another array. const void *qpyopengl_uniform_value_array(PyObject *values, PyObject *shader, PyObject *key, const sipTypeDef **array_type, int *array_len, int *tsize, sipErrorState *estate) { // Check the key was created correctly. if (!key) { *estate = sipErrorFail; return 0; } // Get the dict that holds the converted arrays. PyObject *dict = sipGetUserObject((sipSimpleWrapper *)shader); if (!dict) { dict = PyDict_New(); if (!dict) { Py_DECREF(key); *estate = sipErrorFail; return 0; } sipSetUserObject((sipSimpleWrapper *)shader, dict); } // Check that values is a non-empty sequence. values = PySequence_Fast(values, "a uniform value array must be a sequence"); if (!values) { Py_DECREF(key); *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(values); if (nr_items < 1) { PyErr_SetString(PyExc_TypeError, "a uniform value array must have at least one element"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // The first element determines the type expected. PyObject *itm = Sequence_Fast_GetItem(values, 0); const sipTypeDef *td; Py_ssize_t nr_dim = 0; void *array; if (sipCanConvertToType(itm, sipType_QVector2D, SIP_NOT_NONE)) { td = sipType_QVector2D; array = new QVector2D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector3D, SIP_NOT_NONE)) { td = sipType_QVector3D; array = new QVector3D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QVector4D, SIP_NOT_NONE)) { td = sipType_QVector4D; array = new QVector4D[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x2, SIP_NOT_NONE)) { td = sipType_QMatrix2x2; array = new QMatrix2x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x3, SIP_NOT_NONE)) { td = sipType_QMatrix2x3; array = new QMatrix2x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix2x4, SIP_NOT_NONE)) { td = sipType_QMatrix2x4; array = new QMatrix2x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x2, SIP_NOT_NONE)) { td = sipType_QMatrix3x2; array = new QMatrix3x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x3, SIP_NOT_NONE)) { td = sipType_QMatrix3x3; array = new QMatrix3x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix3x4, SIP_NOT_NONE)) { td = sipType_QMatrix3x4; array = new QMatrix3x4[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x2, SIP_NOT_NONE)) { td = sipType_QMatrix4x2; array = new QMatrix4x2[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x3, SIP_NOT_NONE)) { td = sipType_QMatrix4x3; array = new QMatrix4x3[nr_items]; } else if (sipCanConvertToType(itm, sipType_QMatrix4x4, SIP_NOT_NONE)) { td = sipType_QMatrix4x4; array = new QMatrix4x4[nr_items]; } else if (PySequence_Check(itm) && (nr_dim = PySequence_Size(itm)) >= 1) { td = 0; array = new GLfloat[nr_items * nr_dim]; } else { PyErr_SetString(PyExc_TypeError, "a uniform value array must be a sequence of QVector2D, " "QVector3D, QVector4D, QMatrix2x2, QMatrix2x3, QMatrix2x4, " "QMatrix3x2, QMatrix3x3, QMatrix3x4, QMatrix4x2, QMatrix4x3, " "QMatrix4x4, or a sequence of sequences of floats"); Py_DECREF(key); Py_DECREF(values); *estate = sipErrorFail; return 0; } // Convert the values. for (Py_ssize_t i = 0; i < nr_items; ++i) { int iserr = 0; itm = Sequence_Fast_GetItem(values, i); if (td) { void *cpp; cpp = sipForceConvertToType(itm, td, 0, SIP_NOT_NONE | SIP_NO_CONVERTORS, 0, &iserr); if (iserr) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be '%s', not " "'%s'", sipPyTypeName(sipTypeAsPyTypeObject(td)), sipPyTypeName(Py_TYPE(itm))); } else if (td == sipType_QVector2D) { QVector2D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector3D) { QVector3D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QVector4D) { QVector4D *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x2) { QMatrix2x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x3) { QMatrix2x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix2x4) { QMatrix2x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x2) { QMatrix3x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x3) { QMatrix3x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix3x4) { QMatrix3x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x2) { QMatrix4x2 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x3) { QMatrix4x3 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } else if (td == sipType_QMatrix4x4) { QMatrix4x4 *a = reinterpret_cast(array); a[i] = *reinterpret_cast(cpp); } } else { itm = PySequence_Fast(itm, "uniform value array elements should all be sequences"); if (itm) { if (Sequence_Fast_Size(itm) != nr_dim) { PyErr_Format(PyExc_TypeError, "uniform value array elements should all be " "sequences of length %zd", nr_dim); Py_DECREF(itm); iserr = 1; } else { GLfloat *ap = reinterpret_cast(array); PyErr_Clear(); for (Py_ssize_t j = 0; j < nr_dim; ++j) *ap++ = PyFloat_AsDouble( Sequence_Fast_GetItem(itm, j)); if (PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "uniform value array elements should all be " "sequences of floats"); Py_DECREF(itm); iserr = 1; } } } else { iserr = 1; } } if (iserr) { Py_DECREF(key); Py_DECREF(values); delete_array(array, td); *estate = sipErrorFail; return 0; } } Py_DECREF(values); // Wrap the array in a Python object so that it won't leak. PyObject *array_obj = PyCapsule_New(array, 0, array_dtor); if (array_obj && PyCapsule_SetContext(array_obj, const_cast(td)) != 0) { Py_DECREF(array_obj); array_obj = 0; } if (!array_obj) { Py_DECREF(key); delete_array(array, td); *estate = sipErrorFail; return 0; } int rc = PyDict_SetItem(dict, key, array_obj); Py_DECREF(key); Py_DECREF(array_obj); if (rc < 0) { *estate = sipErrorFail; return 0; } *array_type = td; *array_len = nr_items; *tsize = nr_dim; return array; } // Do the actual work of deleting the array. static void delete_array(void *array, const sipTypeDef *td) { if (td == sipType_QVector2D) delete[] reinterpret_cast(array); else if (td == sipType_QVector3D) delete[] reinterpret_cast(array); else if (td == sipType_QVector4D) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix2x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix3x4) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x2) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x3) delete[] reinterpret_cast(array); else if (td == sipType_QMatrix4x4) delete[] reinterpret_cast(array); else delete[] reinterpret_cast(array); } // The dtor for the saved array. static void array_dtor(PyObject *capsule) { delete_array(PyCapsule_GetPointer(capsule, 0), reinterpret_cast( PyCapsule_GetContext(capsule))); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.1981227 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_value_array.cpp0000644000076500000240000002333314532160372020753 0ustar00philstaff// This contains the support for QOpenGL value arrays. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyopengl_api.h" #include "qpyopengl_data_cache.h" #include "qpyopengl_misc.h" #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) && GL_DOUBLE != GL_FLOAT #define HAVE_GL_DOUBLE #endif // Forward declarations. static qpyopengl_dataCache *get_cache(PyObject *bindings); static void *convert_values(Array *cache, PyObject *values, GLenum gl_type, sipErrorState *estate); static void convert_byte(PyObject *itm, void *array, Py_ssize_t i); static void convert_ubyte(PyObject *itm, void *array, Py_ssize_t i); static void convert_short(PyObject *itm, void *array, Py_ssize_t i); static void convert_ushort(PyObject *itm, void *array, Py_ssize_t i); static void convert_int(PyObject *itm, void *array, Py_ssize_t i); static void convert_uint(PyObject *itm, void *array, Py_ssize_t i); static void convert_float(PyObject *itm, void *array, Py_ssize_t i); #if defined(HAVE_GL_DOUBLE) static void convert_double(PyObject *itm, void *array, Py_ssize_t i); #endif // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. const GLvoid *qpyopengl_value_array(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings) { // Handle the trivial None case first. 0 has a special meaning to some // OpenGL calls so we allow it for all. If this becomes a problem then we // can add a new variant of this function that handles None differently. if (values == Py_None) return 0; qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } // Get an empty wrapper for the array. if (data_cache->uncached) data_cache->uncached->clear(); else data_cache->uncached = new Array; return convert_values(data_cache->uncached, values, gl_type, estate); } // Get an array of OpenGL fundamental types from a sequence or an object that // implements a compatible buffer. Cache the array so that it persists until a // similar call. const GLvoid *qpyopengl_value_array_cached(sipErrorState *estate, PyObject *values, GLenum gl_type, PyObject *bindings, const char *pkey, GLuint skey) { // Handle the trivial byte offset case first. PyErr_Clear(); void *data = PyLong_AsVoidPtr(values); if (!PyErr_Occurred()) return data; PyErr_Clear(); qpyopengl_dataCache *data_cache = get_cache(bindings); if (!data_cache) { *estate = sipErrorFail; return 0; } if (!data_cache->pcache) data_cache->pcache = new PrimaryCache; // Get an empty wrapper for the array. PrimaryCacheEntry *pce = (*data_cache->pcache)[pkey]; if (!pce) { pce = new PrimaryCacheEntry; data_cache->pcache->insert(pkey, pce); } Array *array; if (skey == 0) { array = &pce->skey_0; } else { if (!pce->skey_n) pce->skey_n = new SecondaryCache; array = (*pce->skey_n)[skey]; if (!array) { array = new Array; pce->skey_n->insert(skey, array); } } array->clear(); return convert_values(array, values, gl_type, estate); } // Get the cache for a set of bindings. static qpyopengl_dataCache *get_cache(PyObject *bindings) { // Create the cache if it doesn't already exist. qpyopengl_dataCache *data_cache = (qpyopengl_dataCache *)sipGetUserObject((sipSimpleWrapper *)bindings); if (!data_cache) { data_cache = qpyopengl_dataCache_New(); if (data_cache) sipSetUserObject((sipSimpleWrapper *)bindings, (PyObject *)data_cache); } return data_cache; } // Convert the Python values to a raw array. static void *convert_values(Array *array, PyObject *values, GLenum gl_type, sipErrorState *estate) { int rc = sipGetBufferInfo(values, &array->buffer); if (rc < 0) { *estate = sipErrorFail; return 0; } if (rc > 0) { // Check the buffer is compatible with what we need. GLenum array_type; switch (*array->buffer.bi_format) { case 'b': array_type = GL_BYTE; break; case 'B': array_type = GL_UNSIGNED_BYTE; break; case 'h': array_type = GL_SHORT; break; case 'H': array_type = GL_UNSIGNED_SHORT; break; case 'i': array_type = GL_INT; break; case 'I': array_type = GL_UNSIGNED_INT; break; case 'f': array_type = GL_FLOAT; break; #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) case 'd': array_type = GL_DOUBLE; break; #endif default: PyErr_Format(PyExc_TypeError, "unsupported buffer type '%s'", array->buffer.bi_format); *estate = sipErrorFail; return 0; } if (array_type != gl_type) { PyErr_SetString(PyExc_TypeError, "the buffer type is not the same as the array type"); *estate = sipErrorFail; return 0; } return array->buffer.bi_buf; } PyObject *seq = PySequence_Fast(values, "array must be a sequence or a buffer"); if (!seq) { *estate = sipErrorContinue; return 0; } Py_ssize_t nr_items = Sequence_Fast_Size(seq); if (nr_items < 1) { Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "array must have at least one element"); *estate = sipErrorFail; return 0; } void (*convertor)(PyObject *, void *, Py_ssize_t); size_t element_size; switch (gl_type) { case GL_BYTE: convertor = convert_byte; element_size = sizeof (GLbyte); break; case GL_UNSIGNED_BYTE: convertor = convert_ubyte; element_size = sizeof (GLubyte); break; case GL_SHORT: convertor = convert_short; element_size = sizeof (GLshort); break; case GL_UNSIGNED_SHORT: convertor = convert_ushort; element_size = sizeof (GLushort); break; case GL_INT: convertor = convert_int; element_size = sizeof (GLint); break; case GL_UNSIGNED_INT: convertor = convert_uint; element_size = sizeof (GLuint); break; case GL_FLOAT: convertor = convert_float; element_size = sizeof (GLfloat); break; #if defined(HAVE_GL_DOUBLE) case GL_DOUBLE: convertor = convert_double; element_size = sizeof (GLdouble); break; #endif default: Py_DECREF(seq); PyErr_SetString(PyExc_TypeError, "unsupported GL element type"); *estate = sipErrorFail; return 0; } void *data = sipMalloc(nr_items * element_size); if (!data) { Py_DECREF(seq); *estate = sipErrorFail; return 0; } for (Py_ssize_t i = 0; i < nr_items; ++i) { PyErr_Clear(); convertor(Sequence_Fast_GetItem(seq, i), data, i); if (PyErr_Occurred()) { sipFree(data); Py_DECREF(seq); *estate = sipErrorFail; return 0; } } Py_DECREF(seq); array->data = data; return data; } // Convert a Python object to a GLbyte. static void convert_byte(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsSignedChar(itm); } // Convert a Python object to a GLubyte. static void convert_ubyte(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedChar(itm); } // Convert a Python object to a GLshort. static void convert_short(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsShort(itm); } // Convert a Python object to a GLushort. static void convert_ushort(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedShort(itm); } // Convert a Python object to a GLint. static void convert_int(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsInt(itm); } // Convert a Python object to a GLuint. static void convert_uint(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = sipLong_AsUnsignedInt(itm); } // Convert a Python object to a GLfloat. static void convert_float(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #if defined(HAVE_GL_DOUBLE) // Convert a Python object to a GLdouble. static void convert_double(PyObject *itm, void *array, Py_ssize_t i) { reinterpret_cast(array)[i] = PyFloat_AsDouble(itm); } #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2240207 PyQt6-6.6.1/qpy/QtOpenGL/qpyopengl_version_functions.cpp0000644000076500000240000000603714532160372022220 0ustar00philstaff// This contains the support for QOpenGLVersionFunctionsFactory.get(). // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include "qpyopengl_api.h" // Forward declarations. int qpyopengl_add_constants(PyObject *obj); // Create the Python object that wraps the requested OpenGL functions. PyObject *qpyopengl_version_functions( const QOpenGLVersionProfile &version_profile, QOpenGLContext *context, PyObject *py_context) { // Get a valid version profile if possible. QOpenGLVersionProfile vp(version_profile); if (!vp.isValid() && context) vp = QOpenGLVersionProfile(context->format()); // Create the functions. QAbstractOpenGLFunctions *funcs = QOpenGLVersionFunctionsFactory::get(vp, context); if (!funcs) { Py_INCREF(Py_None); return Py_None; } // Qt doesn't allow us to introspect the functions to find which set we // have, so work out what it should be based on the version profile. const sipTypeDef *td; #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) QByteArray name("QOpenGLFunctions_"); QPair version = vp.version(); name.append(QByteArray::number(version.first)); name.append('_'); name.append(QByteArray::number(version.second)); if (vp.hasProfiles()) { switch (vp.profile()) { case QSurfaceFormat::CoreProfile: name.append("_Core"); break; case QSurfaceFormat::CompatibilityProfile: name.append("_Compatibility"); break; default: ; } } td = sipFindType(name.constData()); if (!td) { PyErr_Format(PyExc_TypeError, "%s is not supported by PyQt6", name.constData()); return SIP_NULLPTR; } #else td = sipType_QOpenGLFunctions_ES2; #endif // Ownership is with the context. PyObject *funcs_obj = sipConvertFromType(funcs, td, py_context); if (funcs_obj) { if (qpyopengl_add_constants(funcs_obj) < 0) { Py_DECREF(funcs_obj); funcs_obj = SIP_NULLPTR; } } return funcs_obj; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.344069 PyQt6-6.6.1/qpy/QtQml/0000755000076500000240000000000014532160402013232 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2421086 PyQt6-6.6.1/qpy/QtQml/qpyqml_api.h0000644000076500000240000000434714532160372015575 0ustar00philstaff// This defines the API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_API_H #define _QPYQML_API_H #include #include #include #include #include // Support for qmlRegisterType(). int qpyqml_register_anonymous_type(PyTypeObject *py_type, const char *uri, int major); int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, PyTypeObject *attached); int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory); int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason); // Support for qmlAttachedPropertiesObject(). QObject *qpyqml_find_proxy_for(QObject *proxied); // Support for QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py); int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr); // Python exception handling. typedef void (*pyqt6_qtqml_err_print_t)(); extern pyqt6_qtqml_err_print_t pyqt6_qtqml_err_print; // Other imports from QtCore. typedef const QMetaObject *(*pyqt6_qtqml_get_qmetaobject_t)(PyTypeObject *); extern pyqt6_qtqml_get_qmetaobject_t pyqt6_qtqml_get_qmetaobject; // Initialisation. void qpyqml_post_init(PyObject *module_dict); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2467704 PyQt6-6.6.1/qpy/QtQml/qpyqml_listdata.cpp0000644000076500000240000000340714532160372017160 0ustar00philstaff// This is the implementation of the ListData class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_listdata.h" // Create a null instance. ListData::ListData(PyObject *py_type_, PyObject *py_obj_, PyObject *py_list_, PyObject *py_append_, PyObject *py_count_, PyObject *py_at_, PyObject *py_clear_, QObject *parent) : QObject(parent), py_type(py_type_), py_obj(py_obj_), py_list(py_list_), py_append(py_append_), py_count(py_count_), py_at(py_at_), py_clear(py_clear_) { Py_XINCREF(py_type); Py_XINCREF(py_obj); Py_XINCREF(py_list); Py_XINCREF(py_append); Py_XINCREF(py_count); Py_XINCREF(py_at); Py_XINCREF(py_clear); } // Destroy the data. ListData::~ListData() { SIP_BLOCK_THREADS Py_XDECREF(py_type); Py_XDECREF(py_obj); Py_XDECREF(py_list); Py_XDECREF(py_append); Py_XDECREF(py_count); Py_XDECREF(py_at); Py_XDECREF(py_clear); SIP_UNBLOCK_THREADS } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2533588 PyQt6-6.6.1/qpy/QtQml/qpyqml_listdata.h0000644000076500000240000000262714532160372016630 0ustar00philstaff// This is the definition of the ListData class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQML_LISTDATA_H #define _QPYQML_LISTDATA_H #include #include class ListData : public QObject { Q_OBJECT public: ListData(PyObject *py_type, PyObject *py_obj, PyObject *py_list, PyObject *py_append, PyObject *py_count, PyObject *py_at, PyObject *py_clear, QObject *parent); ~ListData(); PyObject *py_type; PyObject *py_obj; PyObject *py_list; PyObject *py_append; PyObject *py_count; PyObject *py_at; PyObject *py_clear; }; #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.247926 PyQt6-6.6.1/qpy/QtQml/qpyqml_post_init.cpp0000644000076500000240000000504314532160372017361 0ustar00philstaff// This is the initialisation support code for the QtQml module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Imports from QtCore. pyqt6_qtqml_err_print_t pyqt6_qtqml_err_print; // Perform any required initialisation. void qpyqml_post_init(PyObject *module_dict) { // QtCore imports. pyqt6_qtqml_err_print = (pyqt6_qtqml_err_print_t)sipImportSymbol( "pyqt6_err_print"); Q_ASSERT(pyqt6_qtqml_err_print); // Register the our list type. Note that Q_DECLARE_METATYPE doesn't seem // to work. qMetaTypeId >(); // Initialise the QQmlListProperty type. if (!qpyqml_QQmlListProperty_init_type()) Py_FatalError("PyQt6.QtQml: Failed to initialise QQmlListProperty type"); // Create the only instance and add it to the module dictionary. PyObject *inst = PyObject_CallFunction( (PyObject *)qpyqml_QQmlListProperty_TypeObject, "s", "QQmlListProperty"); if (!inst) Py_FatalError("PyQt6.QtQml: Failed to create QQmlListProperty instance"); if (PyDict_SetItemString(module_dict, "QQmlListProperty", inst) < 0) Py_FatalError("PyQt6.QtQml: Failed to set QQmlListProperty instance"); // Initialise the private QQmlListPropertyWrapper type. if (!qpyqml_QQmlListPropertyWrapper_init_type()) Py_FatalError("PyQt6.QtQml: Failed to initialise QQmlListPropertyWrapper type"); // Register the proxy resolver. if (sipRegisterProxyResolver(sipType_QObject, QPyQmlObjectProxy::resolveProxy) < 0) Py_FatalError("PyQt6.QtQml: Failed to register proxy resolver"); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2462924 PyQt6-6.6.1/qpy/QtQml/qpyqml_qjsvalue.cpp0000644000076500000240000000602114532160372017200 0ustar00philstaff// This is the support for QJSValue. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include "qpyqml_api.h" #include "sipAPIQtQml.h" // See if a Python object can be converted to a QJSValue. int qpyqml_canConvertTo_QJSValue(PyObject *py) { // Note that the API doesn't provide the ability to test for a constrained // named enum. if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) return 1; if (PyBool_Check(py)) return 1; if (PyLong_Check(py)) return 1; if (PyFloat_Check(py)) return 1; if (sipCanConvertToType(py, sipType_QString, 0)) return 1; return sipCanConvertToType(py, sipType_QJSValue, SIP_NO_CONVERTORS); } // Convert a Python object to a QJSValue. int qpyqml_convertTo_QJSValue(PyObject *py, PyObject *transferObj, QJSValue **cpp, int *isErr) { if (PyObject_TypeCheck(py, sipTypeAsPyTypeObject(sipType_QJSValue_SpecialValue))) { int v = sipConvertToEnum(py, sipType_QJSValue_SpecialValue); if (PyErr_Occurred()) { *isErr = 1; return 0; } *cpp = new QJSValue(static_cast(v)); return sipGetState(transferObj); } if (PyBool_Check(py)) { *cpp = new QJSValue(py == Py_True); return sipGetState(transferObj); } if (PyLong_Check(py)) { *cpp = new QJSValue((int)PyLong_AsLong(py)); return sipGetState(transferObj); } if (PyFloat_Check(py)) { *cpp = new QJSValue((double)PyFloat_AsDouble(py)); return sipGetState(transferObj); } if (sipCanConvertToType(py, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(py, sipType_QString, 0, 0, &state, isErr)); if (*isErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *cpp = new QJSValue(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(transferObj); } *cpp = reinterpret_cast(sipConvertToType(py, sipType_QJSValue, transferObj, SIP_NO_CONVERTORS, 0, isErr)); return 0; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2383606 PyQt6-6.6.1/qpy/QtQml/qpyqml_register_singleton_type.cpp0000644000076500000240000001224314532160372022320 0ustar00philstaff// This contains the main implementation of qmlRegisterSingletonType. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqml_api.h" #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // Forward declarations. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory); static int register_type(QQmlPrivate::RegisterSingletonType *rt); // The number of types that can be registered. const int NrOfTypes = 30; // The registration data for the proxy types. static QQmlPrivate::RegisterSingletonType proxy_types[NrOfTypes]; // Register a singleton Python type. int qpyqml_register_singleton_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *type_name, PyObject *factory) { // Initialise the registration data structure. QQmlPrivate::RegisterSingletonType *rt = init_type(py_type, factory); if (!rt) return -1; if (!type_name) type_name = sipPyTypeName(py_type); rt->uri = uri; rt->version = QTypeRevision::fromVersion(major, minor); rt->typeName = type_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterSingletonType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register singleton type with QML"); return -1; } return type_id; } #define QPYQML_SINGLETON_TYPE_INIT(n) \ case n##U: \ QPyQmlSingletonObject##n::staticMetaObject = *mo; \ QPyQmlSingletonObject##n::factory = factory; \ rt->qObjectApi = QPyQmlSingletonObject##n::objectFactory; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ break // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterSingletonType *init_type(PyTypeObject *py_type, PyObject *factory) { // Check the type is derived from QObject. if (!PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QObject))) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } // Get the type's number and check there aren't too many. int type_nr = QPyQmlSingletonObjectProxy::addType(); if (type_nr >= NrOfTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d singleton types may be registered with QML", NrOfTypes); return 0; } QQmlPrivate::RegisterSingletonType *rt = &proxy_types[type_nr]; const QMetaObject *mo = pyqt6_qtqml_get_qmetaobject(py_type); QByteArray ptr_name(sipPyTypeName(py_type)); ptr_name.append('*'); // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_SINGLETON_TYPE_INIT(0); QPYQML_SINGLETON_TYPE_INIT(1); QPYQML_SINGLETON_TYPE_INIT(2); QPYQML_SINGLETON_TYPE_INIT(3); QPYQML_SINGLETON_TYPE_INIT(4); QPYQML_SINGLETON_TYPE_INIT(5); QPYQML_SINGLETON_TYPE_INIT(6); QPYQML_SINGLETON_TYPE_INIT(7); QPYQML_SINGLETON_TYPE_INIT(8); QPYQML_SINGLETON_TYPE_INIT(9); QPYQML_SINGLETON_TYPE_INIT(10); QPYQML_SINGLETON_TYPE_INIT(11); QPYQML_SINGLETON_TYPE_INIT(12); QPYQML_SINGLETON_TYPE_INIT(13); QPYQML_SINGLETON_TYPE_INIT(14); QPYQML_SINGLETON_TYPE_INIT(15); QPYQML_SINGLETON_TYPE_INIT(16); QPYQML_SINGLETON_TYPE_INIT(17); QPYQML_SINGLETON_TYPE_INIT(18); QPYQML_SINGLETON_TYPE_INIT(19); QPYQML_SINGLETON_TYPE_INIT(20); QPYQML_SINGLETON_TYPE_INIT(21); QPYQML_SINGLETON_TYPE_INIT(22); QPYQML_SINGLETON_TYPE_INIT(23); QPYQML_SINGLETON_TYPE_INIT(24); QPYQML_SINGLETON_TYPE_INIT(25); QPYQML_SINGLETON_TYPE_INIT(26); QPYQML_SINGLETON_TYPE_INIT(27); QPYQML_SINGLETON_TYPE_INIT(28); QPYQML_SINGLETON_TYPE_INIT(29); } // Initialise the remaining members. rt->instanceMetaObject = mo; rt->structVersion = 0; rt->uri = 0; rt->version = QTypeRevision::zero(); rt->typeName = 0; rt->scriptApi = 0; rt->revision = QTypeRevision::zero(); Py_INCREF(factory); return rt; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2500806 PyQt6-6.6.1/qpy/QtQml/qpyqml_register_type.cpp0000644000076500000240000003055014532160372020237 0ustar00philstaff// This contains the main implementation of qmlRegisterType. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include #include #include #include "qpyqml_api.h" #include "qpyqmlobject.h" #include "qpyqmlvalidator.h" #include "sipAPIQtQml.h" class QQmlPropertyValueInterceptor; // Forward declarations. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, PyTypeObject *attached); static void complete_init(QQmlPrivate::RegisterType *rt); static int register_type(QQmlPrivate::RegisterType *rt); // The registration data for the QValidator proxy types. const int NrOfQValidatorTypes = 10; static QQmlPrivate::RegisterType validator_proxy_types[NrOfQValidatorTypes]; // The registration data for the QObject/QAbstractItemModel proxy types. const int NrOfQObjectTypes = 60; static QQmlPrivate::RegisterType object_proxy_types[NrOfQObjectTypes]; // Register an anonymous Python type. int qpyqml_register_anonymous_type(PyTypeObject *py_type, const char *uri, int major) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, nullptr); if (!rt) return -1; rt->uri = uri; rt->version = QTypeRevision::fromVersion(major, 0); rt->elementName = nullptr; return register_type(rt); } // Register a library Python type. int qpyqml_register_library_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, PyTypeObject *attached) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, true, attached); if (!rt) return -1; if (!qml_name) qml_name = sipPyTypeName(py_type); rt->uri = uri; rt->version = QTypeRevision::fromVersion(major, minor); rt->elementName = qml_name; return register_type(rt); } // Register an uncreatable library Python type. int qpyqml_register_uncreatable_type(PyTypeObject *py_type, const char *uri, int major, int minor, const char *qml_name, const QString &reason) { // Initialise the registration data structure. QQmlPrivate::RegisterType *rt = init_type(py_type, false, nullptr); if (!rt) return -1; if (!qml_name) qml_name = sipPyTypeName(py_type); rt->noCreationReason = reason; rt->uri = uri; rt->version = QTypeRevision::fromVersion(major, minor); rt->elementName = qml_name; return register_type(rt); } // Register the proxy type with QML. static int register_type(QQmlPrivate::RegisterType *rt) { int type_id = QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, rt); if (type_id < 0) { PyErr_SetString(PyExc_RuntimeError, "unable to register type with QML"); return -1; } return type_id; } #define QPYQML_TYPE_INIT(t, n) \ case n##U: \ QPyQml##t##n::staticMetaObject = *mo; \ QPyQml##t##n::attachedPyType = attached; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = ctor ? sizeof(QPyQml##t##n) : 0; \ if (ctor) rt->create = QQmlPrivate::createInto; else rt->create = 0; \ rt->attachedPropertiesFunction = attached_mo ? QPyQml##t##n::attachedProperties : 0; \ rt->parserStatusCast = is_parser_status ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueSourceCast = is_value_source ? QQmlPrivate::StaticCastSelector::cast() : -1; \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // Return a pointer to the initialised registration structure for a type. static QQmlPrivate::RegisterType *init_type(PyTypeObject *py_type, bool ctor, PyTypeObject *attached) { PyTypeObject *qobject_type = sipTypeAsPyTypeObject(sipType_QObject); // Check the type is derived from QObject and get its meta-object. if (!PyType_IsSubtype(py_type, qobject_type)) { PyErr_SetString(PyExc_TypeError, "type being registered must be a sub-type of QObject"); return 0; } const QMetaObject *mo = pyqt6_qtqml_get_qmetaobject(py_type); // See if the type is a parser status. bool is_parser_status = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlParserStatus)); // See if the type is a property value source. bool is_value_source = PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQmlPropertyValueSource)); // Check any attached type is derived from QObject and get its meta-object. const QMetaObject *attached_mo; if (attached) { if (!PyType_IsSubtype(attached, qobject_type)) { PyErr_SetString(PyExc_TypeError, "attached properties type must be a sub-type of QObject"); return 0; } attached_mo = pyqt6_qtqml_get_qmetaobject(attached); Py_INCREF((PyObject *)attached); } else { attached_mo = nullptr; } QByteArray ptr_name(sipPyTypeName(py_type)); ptr_name.append('*'); QByteArray list_name(sipPyTypeName(py_type)); list_name.prepend("QQmlListProperty<"); list_name.append('>'); QQmlPrivate::RegisterType *rt; // See if we have the QQuickItem registation helper from the QtQuick // module. Check each time because it could be imported at any point. typedef sipErrorState (*QQuickItemRegisterFn)(PyTypeObject *, const QMetaObject *, const QByteArray &, const QByteArray &, QQmlPrivate::RegisterType **); static QQuickItemRegisterFn qquickitem_register = 0; if (!qquickitem_register) qquickitem_register = (QQuickItemRegisterFn)sipImportSymbol( "qtquick_register_item"); if (qquickitem_register) { sipErrorState estate = qquickitem_register(py_type, mo, ptr_name, list_name, &rt); if (estate == sipErrorFail) return 0; if (estate == sipErrorNone) { complete_init(rt); return rt; } } // Initialise the specific type. static const sipTypeDef *qvalidator_td = 0; if (!qvalidator_td) qvalidator_td = sipFindType("QValidator"); if (qvalidator_td && PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(qvalidator_td))) { int type_nr = QPyQmlValidatorProxy::addType(py_type); if (type_nr >= NrOfQValidatorTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QValidator types may be registered with QML", NrOfQValidatorTypes); return 0; } rt = &validator_proxy_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_TYPE_INIT(Validator, 0); QPYQML_TYPE_INIT(Validator, 1); QPYQML_TYPE_INIT(Validator, 2); QPYQML_TYPE_INIT(Validator, 3); QPYQML_TYPE_INIT(Validator, 4); QPYQML_TYPE_INIT(Validator, 5); QPYQML_TYPE_INIT(Validator, 6); QPYQML_TYPE_INIT(Validator, 7); QPYQML_TYPE_INIT(Validator, 8); QPYQML_TYPE_INIT(Validator, 9); } } else { int type_nr = QPyQmlObjectProxy::addType(py_type); if (type_nr >= NrOfQObjectTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d types may be registered with QML", NrOfQObjectTypes); return 0; } rt = &object_proxy_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQML_TYPE_INIT(Object, 0); QPYQML_TYPE_INIT(Object, 1); QPYQML_TYPE_INIT(Object, 2); QPYQML_TYPE_INIT(Object, 3); QPYQML_TYPE_INIT(Object, 4); QPYQML_TYPE_INIT(Object, 5); QPYQML_TYPE_INIT(Object, 6); QPYQML_TYPE_INIT(Object, 7); QPYQML_TYPE_INIT(Object, 8); QPYQML_TYPE_INIT(Object, 9); QPYQML_TYPE_INIT(Object, 10); QPYQML_TYPE_INIT(Object, 11); QPYQML_TYPE_INIT(Object, 12); QPYQML_TYPE_INIT(Object, 13); QPYQML_TYPE_INIT(Object, 14); QPYQML_TYPE_INIT(Object, 15); QPYQML_TYPE_INIT(Object, 16); QPYQML_TYPE_INIT(Object, 17); QPYQML_TYPE_INIT(Object, 18); QPYQML_TYPE_INIT(Object, 19); QPYQML_TYPE_INIT(Object, 20); QPYQML_TYPE_INIT(Object, 21); QPYQML_TYPE_INIT(Object, 22); QPYQML_TYPE_INIT(Object, 23); QPYQML_TYPE_INIT(Object, 24); QPYQML_TYPE_INIT(Object, 25); QPYQML_TYPE_INIT(Object, 26); QPYQML_TYPE_INIT(Object, 27); QPYQML_TYPE_INIT(Object, 28); QPYQML_TYPE_INIT(Object, 29); QPYQML_TYPE_INIT(Object, 30); QPYQML_TYPE_INIT(Object, 31); QPYQML_TYPE_INIT(Object, 32); QPYQML_TYPE_INIT(Object, 33); QPYQML_TYPE_INIT(Object, 34); QPYQML_TYPE_INIT(Object, 35); QPYQML_TYPE_INIT(Object, 36); QPYQML_TYPE_INIT(Object, 37); QPYQML_TYPE_INIT(Object, 38); QPYQML_TYPE_INIT(Object, 39); QPYQML_TYPE_INIT(Object, 40); QPYQML_TYPE_INIT(Object, 41); QPYQML_TYPE_INIT(Object, 42); QPYQML_TYPE_INIT(Object, 43); QPYQML_TYPE_INIT(Object, 44); QPYQML_TYPE_INIT(Object, 45); QPYQML_TYPE_INIT(Object, 46); QPYQML_TYPE_INIT(Object, 47); QPYQML_TYPE_INIT(Object, 48); QPYQML_TYPE_INIT(Object, 49); QPYQML_TYPE_INIT(Object, 50); QPYQML_TYPE_INIT(Object, 51); QPYQML_TYPE_INIT(Object, 52); QPYQML_TYPE_INIT(Object, 53); QPYQML_TYPE_INIT(Object, 54); QPYQML_TYPE_INIT(Object, 55); QPYQML_TYPE_INIT(Object, 56); QPYQML_TYPE_INIT(Object, 57); QPYQML_TYPE_INIT(Object, 58); QPYQML_TYPE_INIT(Object, 59); } } rt->metaObject = mo; rt->attachedPropertiesMetaObject = attached_mo; complete_init(rt); return rt; } // Complete the initialisation of a type registration structure. static void complete_init(QQmlPrivate::RegisterType *rt) { rt->structVersion = 0; rt->uri = 0; rt->version = QTypeRevision::zero(); rt->elementName = 0; rt->extensionObjectCreate = 0; rt->extensionMetaObject = 0; rt->customParser = 0; rt->revision = QTypeRevision::zero(); } // Return the proxy that created an object. This is called with the GIL. QObject *qpyqml_find_proxy_for(QObject *proxied) { QSetIterator oit(QPyQmlObjectProxy::proxies); while (oit.hasNext()) { QPyQmlObjectProxy *proxy = static_cast(oit.next()); if (proxy->proxied.data() == proxied) return proxy; } QSetIterator vit(QPyQmlValidatorProxy::proxies); while (vit.hasNext()) { QPyQmlValidatorProxy *proxy = static_cast(vit.next()); if (proxy->proxied.data() == proxied) return proxy; } PyErr_Format(PyExc_TypeError, "QObject instance at %p was not created from QML", proxied); return 0; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.252933 PyQt6-6.6.1/qpy/QtQml/qpyqmllistproperty.cpp0000644000076500000240000002242714532160372017777 0ustar00philstaff// This is the implementation of the QQmlListProperty class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include "qpyqmllistproperty.h" #include "qpyqmllistpropertywrapper.h" #include "qpyqml_listdata.h" #include "sipAPIQtQml.h" // The type object. PyTypeObject *qpyqml_QQmlListProperty_TypeObject; // Forward declarations. extern "C" { static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds); } static void list_append(QQmlListProperty *p, QObject *el); static QObject *list_at(QQmlListProperty *p, qsizetype idx); static void list_clear(QQmlListProperty *p); static qsizetype list_count(QQmlListProperty *p); static void bad_result(PyObject *py_res, const char *context); // The type's doc-string. PyDoc_STRVAR(QQmlListProperty_doc, "QQmlListProperty(type, object, list)\n" "QQmlListProperty(type, object, append=None, count=None, at=None, clear=None)"); // This implements the QQmlListProperty Python type. It is a sub-type of the // standard string type that is callable. // Define the slots. static PyType_Slot qpyqml_QQmlListProperty_Slots[] = { {Py_tp_base, (void *)&PyUnicode_Type}, {Py_tp_call, (void *)QQmlListProperty_call}, {Py_tp_doc, (void *)QQmlListProperty_doc}, {0, 0} }; // Define the type. static PyType_Spec qpyqml_QQmlListProperty_Spec = { "PyQt6.QtQml.QQmlListProperty", 0, 0, Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_UNICODE_SUBCLASS, qpyqml_QQmlListProperty_Slots }; // Initialise the type and return true if there was no error. bool qpyqml_QQmlListProperty_init_type() { qpyqml_QQmlListProperty_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyqml_QQmlListProperty_Spec); return qpyqml_QQmlListProperty_TypeObject; } // The QQmlListProperty init function. static PyObject *QQmlListProperty_call(PyObject *, PyObject *args, PyObject *kwds) { PyObject *py_type, *py_obj, *py_list = 0, *py_append = 0, *py_count = 0, *py_at = 0, *py_clear = 0; static const char *kwlist[] = {"type", "object", "list", "append", "count", "at", "clear", 0}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O!OOOO:QQmlListProperty", const_cast(kwlist), &py_type, &py_obj, &PyList_Type, &py_list, &py_append, &py_count, &py_at, &py_clear)) return 0; // Check the type is derived from QObject. if (!PyObject_TypeCheck(py_type, &PyType_Type) || !PyType_IsSubtype((PyTypeObject *)py_type, sipTypeAsPyTypeObject(sipType_QObject))) { PyErr_Format(PyExc_TypeError, "type argument must be a sub-type of QObject"); return 0; } // Get the C++ QObject. int iserr = 0; QObject *obj = reinterpret_cast(sipForceConvertToType(py_obj, sipType_QObject, 0, SIP_NOT_NONE|SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) { PyErr_Format(PyExc_TypeError, "object argument must be of type 'QObject', not '%s'", sipPyTypeName(Py_TYPE(py_obj))); return 0; } // If we have a list then check we have no callables. if (py_list && (py_append || py_count || py_at || py_clear)) { PyErr_SetString(PyExc_TypeError, "cannot specify a list and a list function"); return 0; } // Get a list wrapper with the C++ QObject as its parent. ListData *list_data = new ListData(py_type, py_obj, py_list, py_append, py_count, py_at, py_clear, obj); // Create the C++ QQmlListProperty with the list data as the data. // Note that we will create a new one each time the property getter is // called. Also note that the callables will not be reached by the garbage // collector. QQmlListProperty *prop = new QQmlListProperty(obj, list_data, ((py_list || py_append) ? list_append : 0), ((py_list || py_count) ? list_count : 0), ((py_list || py_at) ? list_at : 0), ((py_list || py_clear) ? list_clear : 0)); // Convert it to a Python object. PyObject *prop_obj = qpyqml_QQmlListPropertyWrapper_New(prop, py_list); if (!prop_obj) { delete prop; return 0; } return prop_obj; } // Append to the list. static void list_append(QQmlListProperty *p, QObject *el) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; // Convert the element to a Python object and check the type. PyObject *py_el = sipConvertFromType(el, sipType_QObject, 0); if (py_el) { if (!PyObject_TypeCheck(py_el, (PyTypeObject *)ldata->py_type)) { PyErr_Format(PyExc_TypeError, "list element must be of type '%s', not '%s'", sipPyTypeName(((PyTypeObject *)ldata->py_type)), sipPyTypeName(Py_TYPE(py_el))); } else if (ldata->py_list) { if (PyList_Append(ldata->py_list, py_el) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_append, ldata->py_obj, py_el, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "append"); Py_DECREF(py_res); } } Py_DECREF(py_el); } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Get the length of the list. static qsizetype list_count(QQmlListProperty *p) { qsizetype res = -1; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { res = PyList_Size(ldata->py_list); } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_count, ldata->py_obj, NULL); if (py_res) { res = sipLong_AsInt(py_res); if (PyErr_Occurred()) { bad_result(py_res, "count"); res = -1; } Py_DECREF(py_res); } } if (res < 0) { pyqt6_qtqml_err_print(); res = 0; } SIP_UNBLOCK_THREADS return res; } // Get an item from the list. static QObject *list_at(QQmlListProperty *p, qsizetype idx) { QObject *qobj = 0; SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); if (ldata->py_list) { PyObject *py_el = PyList_GetItem(ldata->py_list, idx); if (py_el) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_el, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); } } else { // Call the function. PyObject *py_res = PyObject_CallFunction(ldata->py_at, const_cast("Ni"), ldata->py_obj, idx); if (py_res) { int iserr = 0; qobj = reinterpret_cast(sipForceConvertToType(py_res, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) bad_result(py_res, "at"); Py_DECREF(py_res); } } if (!qobj) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS return qobj; } // Clear the list. static void list_clear(QQmlListProperty *p) { SIP_BLOCK_THREADS ListData *ldata = reinterpret_cast(p->data); bool ok = false; if (ldata->py_list) { if (PyList_SetSlice(ldata->py_list, 0, PyList_Size(ldata->py_list), NULL) == 0) ok = true; } else { // Call the function. PyObject *py_res = PyObject_CallFunctionObjArgs(ldata->py_clear, ldata->py_obj, NULL); if (py_res) { if (py_res == Py_None) ok = true; else bad_result(py_res, "clear"); Py_DECREF(py_res); } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *py_res, const char *context) { PyErr_Format(PyExc_TypeError, "unexpected result from %s function: %S", context, py_res); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2455773 PyQt6-6.6.1/qpy/QtQml/qpyqmllistproperty.h0000644000076500000240000000213614532160372017437 0ustar00philstaff// This is the definition of the QQmlListProperty class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTY_H #define _QPYQMLLISTPROPERTY_H #include // The type object. extern PyTypeObject *qpyqml_QQmlListProperty_TypeObject; bool qpyqml_QQmlListProperty_init_type(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2440937 PyQt6-6.6.1/qpy/QtQml/qpyqmllistpropertywrapper.cpp0000644000076500000240000001403314532160372021372 0ustar00philstaff// This contains the implementation of the QQmlListPropertyWrapper type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyqmllistpropertywrapper.h" // The type object. PyTypeObject *qpyqml_QQmlListPropertyWrapper_TypeObject; // Forward declarations. extern "C" { static void QQmlListPropertyWrapper_dealloc(PyObject *self); static Py_ssize_t QQmlListPropertyWrapper_sq_length(PyObject *self); static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, Py_ssize_t count); static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, Py_ssize_t i); static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, Py_ssize_t i, PyObject *value); static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value); static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other); static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, Py_ssize_t count); } static PyObject *get_list(PyObject *self); // Define the slots. static PyType_Slot qpyqml_QQmlListPropertyWrapper_Slots[] = { {Py_tp_dealloc, (void *)QQmlListPropertyWrapper_dealloc}, {Py_sq_length, (void *)QQmlListPropertyWrapper_sq_length}, {Py_sq_concat, (void *)QQmlListPropertyWrapper_sq_concat}, {Py_sq_repeat, (void *)QQmlListPropertyWrapper_sq_repeat}, {Py_sq_item, (void *)QQmlListPropertyWrapper_sq_item}, {Py_sq_ass_item, (void *)QQmlListPropertyWrapper_sq_ass_item}, {Py_sq_contains, (void *)QQmlListPropertyWrapper_sq_contains}, {Py_sq_inplace_concat, (void *)QQmlListPropertyWrapper_sq_inplace_concat}, {Py_sq_inplace_repeat, (void *)QQmlListPropertyWrapper_sq_inplace_repeat}, {0, 0} }; // Define the type. static PyType_Spec qpyqml_QQmlListPropertyWrapper_Spec = { "PyQt6.QtQml.QQmlListPropertyWrapper", sizeof (qpyqml_QQmlListPropertyWrapper), 0, Py_TPFLAGS_DEFAULT, qpyqml_QQmlListPropertyWrapper_Slots }; // Initialise the type and return true if there was no error. bool qpyqml_QQmlListPropertyWrapper_init_type() { qpyqml_QQmlListPropertyWrapper_TypeObject = (PyTypeObject *)PyType_FromSpec( &qpyqml_QQmlListPropertyWrapper_Spec); return qpyqml_QQmlListPropertyWrapper_TypeObject; } // Create the wrapper object. PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list) { qpyqml_QQmlListPropertyWrapper *obj; obj = PyObject_New(qpyqml_QQmlListPropertyWrapper, qpyqml_QQmlListPropertyWrapper_TypeObject); if (!obj) return 0; obj->qml_list_property = prop; obj->py_list = list; return (PyObject *)obj; } // The type dealloc slot. static void QQmlListPropertyWrapper_dealloc(PyObject *self) { delete ((qpyqml_QQmlListPropertyWrapper *)self)->qml_list_property; PyObject_Del(self); } // Return the underlying list. Return 0 and raise an exception if there wasn't // one. static PyObject *get_list(PyObject *self) { PyObject *list = ((qpyqml_QQmlListPropertyWrapper *)self)->py_list; if (!list) { PyErr_SetString(PyExc_TypeError, "there is no object bound to QQmlListProperty"); return 0; } // Make sure it has sequence methods. if (!PySequence_Check(list)) { PyErr_SetString(PyExc_TypeError, "object bound to QQmlListProperty is not a sequence"); return 0; } return list; } // The proxy sequence methods. static Py_ssize_t QQmlListPropertyWrapper_sq_length(PyObject *self) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_Size(list); } static PyObject *QQmlListPropertyWrapper_sq_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_Concat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_repeat(PyObject *self, Py_ssize_t count) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_Repeat(list, count); } static PyObject *QQmlListPropertyWrapper_sq_item(PyObject *self, Py_ssize_t i) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_GetItem(list, i); } static int QQmlListPropertyWrapper_sq_ass_item(PyObject *self, Py_ssize_t i, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_SetItem(list, i, value); } static int QQmlListPropertyWrapper_sq_contains(PyObject *self, PyObject *value) { PyObject *list = get_list(self); if (!list) return -1; return PySequence_Contains(list, value); } static PyObject *QQmlListPropertyWrapper_sq_inplace_concat(PyObject *self, PyObject *other) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_InPlaceConcat(list, other); } static PyObject *QQmlListPropertyWrapper_sq_inplace_repeat(PyObject *self, Py_ssize_t count) { PyObject *list = get_list(self); if (!list) return 0; return PySequence_InPlaceRepeat(list, count); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2429888 PyQt6-6.6.1/qpy/QtQml/qpyqmllistpropertywrapper.h0000644000076500000240000000353414532160372021043 0ustar00philstaff// This defines the interfaces for the QQmlListPropertyWrapper type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLLISTPROPERTYWRAPPER_H #define _QPYQMLLISTPROPERTYWRAPPER_H #include #include #include extern "C" { // This defines the structure of a QQmlListPropertyWrapper object. This serves // two purposes. Firstly it wraps a pointer to a QQmlListProperty like a // capsule would. Secondly it acts as a proxy for the underlying Python list. typedef struct _qpyqml_QQmlListPropertyWrapper { PyObject_HEAD // The QML list property that is being wrapped. It is owned by the // wrapper. QQmlListProperty *qml_list_property; // A borrowed reference to the underlying Python list. PyObject *py_list; } qpyqml_QQmlListPropertyWrapper; } // The type object. extern PyTypeObject *qpyqml_QQmlListPropertyWrapper_TypeObject; bool qpyqml_QQmlListPropertyWrapper_init_type(); PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty *prop, PyObject *list); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2415097 PyQt6-6.6.1/qpy/QtQml/qpyqmlobject.cpp0000644000076500000240000004232214532160372016461 0ustar00philstaff// This is the implementation of the QPyQmlObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlobject.h" #include "sipAPIQtQml.h" // Forward declarations. static void bad_result(PyObject *res, const char *context); // The list of registered Python types. QList QPyQmlObjectProxy::pyqt_types; // The set of proxies in existence. QSet QPyQmlObjectProxy::proxies; // The ctor. QPyQmlObjectProxy::QPyQmlObjectProxy(QObject *parent) : QAbstractItemModel(parent), proxied_model(0), py_proxied(0) { proxies.insert(this); } // The dtor. QPyQmlObjectProxy::~QPyQmlObjectProxy() { proxies.remove(this); SIP_BLOCK_THREADS Py_XDECREF(py_proxied); SIP_UNBLOCK_THREADS if (!proxied.isNull()) delete proxied.data(); } // Called when QML has connected to a signal of the proxied object. Note that // we also used to implement the corresponding disconnectNotify() to // disconnect the signal. However this resulted in deadlocks and shouldn't be // necessary anyway because it was only happening when the object that made the // connection was itself being destroyed. void QPyQmlObjectProxy::connectNotify(const QMetaMethod &sig) { QByteArray signal_sig(sig.methodSignature()); // Avoid a warning message from QObject::connect(). This seems to happen // when a notification signal of the proxied object gets connected to a // property that is defined in QML. I think it is benign... if (signal_sig.isEmpty()) return; signal_sig.prepend('2'); // The signal has actually been connected to the proxy, so do the same from // the proxied object to the proxy. Use Qt::UniqueConnection in case the // object (ie. model) is used in more than one view. QObject::connect(proxied, signal_sig.constData(), this, signal_sig.constData(), Qt::UniqueConnection); } // Delegate to the real object. const QMetaObject *QPyQmlObjectProxy::metaObject() const { return !proxied.isNull() ? proxied->metaObject() : QObject::metaObject(); } // Delegate to the real object. void *QPyQmlObjectProxy::qt_metacast(const char *_clname) { return !proxied.isNull() ? proxied->qt_metacast(_clname) : 0; } // Delegate to the real object. int QPyQmlObjectProxy::qt_metacall(QMetaObject::Call call, int idx, void **args) { if (idx < 0) return idx; if (proxied.isNull()) return QObject::qt_metacall(call, idx, args); const QMetaObject *proxied_mo = proxied->metaObject(); // See if a signal defined in the proxied object might be being invoked. // Note that we used to use sender() but this proved unreliable. if (call == QMetaObject::InvokeMetaMethod && proxied_mo->method(idx).methodType() == QMetaMethod::Signal) { // Get the meta-object of the class that defines the signal. while (idx < proxied_mo->methodOffset()) { proxied_mo = proxied_mo->superClass(); Q_ASSERT(proxied_mo); } // Relay the signal to QML. QMetaObject::activate(this, proxied_mo, idx - proxied_mo->methodOffset(), args); return idx - (proxied_mo->methodCount() - proxied_mo->methodOffset()); } return proxied->qt_metacall(call, idx, args); } // Add a new Python type and return its number. int QPyQmlObjectProxy::addType(PyTypeObject *type) { pyqt_types.append(type); return pyqt_types.size() - 1; } // Create the Python instance. void QPyQmlObjectProxy::createPyObject(QObject *parent) { SIP_BLOCK_THREADS py_proxied = sipCallMethod(NULL, (PyObject *)pyqt_types.at(typeNr()), "D", parent, sipType_QObject, NULL); if (py_proxied) { proxied = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_proxied)); proxied_model = qobject_cast(proxied.data()); } else { pyqt6_qtqml_err_print(); } SIP_UNBLOCK_THREADS } // Resolve any proxy. void *QPyQmlObjectProxy::resolveProxy(void *proxy) { QObject *qobj = reinterpret_cast(proxy); // We have to search for proxy instances because we have subverted the // usual sub-class detection mechanism. if (proxies.contains(qobj)) return static_cast(qobj)->proxied.data(); // It's not a proxy. return proxy; } // Create an instance of the attached properties. QObject *QPyQmlObjectProxy::createAttachedProperties(PyTypeObject *py_type, QObject *parent) { QObject *qobj = 0; SIP_BLOCK_THREADS PyObject *obj = sipCallMethod(NULL, (PyObject *)py_type, "D", parent, sipType_QObject, NULL); if (obj) { qobj = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)obj)); // It should always have a parent, but just in case... if (parent) Py_DECREF(obj); } else { pyqt6_qtqml_err_print(); } SIP_UNBLOCK_THREADS return qobj; } // Invoked when a class parse begins. void QPyQmlObjectProxy::pyClassBegin() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("classBegin"); if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "classBegin()"); Py_DECREF(res); } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked when a component parse completes. void QPyQmlObjectProxy::pyComponentComplete() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("componentComplete"); if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "componentComplete()"); Py_DECREF(res); } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked to set the target property of a property value source. void QPyQmlObjectProxy::pySetTarget(const QQmlProperty &target) { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("setTarget"); if (method_name) { QQmlProperty *target_heap = new QQmlProperty(target); PyObject *py_target = sipConvertFromNewType(target_heap, sipType_QQmlProperty, 0); if (!py_target) { delete target_heap; } else { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, py_target, NULL); Py_DECREF(py_target); if (res) { if (res == Py_None) ok = true; else bad_result(res, "setTarget()"); Py_DECREF(res); } } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *res, const char *context) { PyErr_Format(PyExc_TypeError, "unexpected result from %s: %S", context, res); } // The proxy type implementations. #define QPYQML_PROXY_IMPL(n) \ QPyQmlObject##n::QPyQmlObject##n(QObject *parent) : QPyQmlObjectProxy(parent) \ { \ createPyObject(parent); \ } \ QObject *QPyQmlObject##n::attachedProperties(QObject *parent) \ { \ return createAttachedProperties(attachedPyType, parent); \ } \ void QPyQmlObject##n::classBegin() \ { \ pyClassBegin(); \ } \ void QPyQmlObject##n::componentComplete() \ { \ pyComponentComplete(); \ } \ void QPyQmlObject##n::setTarget(const QQmlProperty &target) \ { \ pySetTarget(target); \ } \ QMetaObject QPyQmlObject##n::staticMetaObject; \ PyTypeObject *QPyQmlObject##n::attachedPyType QPYQML_PROXY_IMPL(0); QPYQML_PROXY_IMPL(1); QPYQML_PROXY_IMPL(2); QPYQML_PROXY_IMPL(3); QPYQML_PROXY_IMPL(4); QPYQML_PROXY_IMPL(5); QPYQML_PROXY_IMPL(6); QPYQML_PROXY_IMPL(7); QPYQML_PROXY_IMPL(8); QPYQML_PROXY_IMPL(9); QPYQML_PROXY_IMPL(10); QPYQML_PROXY_IMPL(11); QPYQML_PROXY_IMPL(12); QPYQML_PROXY_IMPL(13); QPYQML_PROXY_IMPL(14); QPYQML_PROXY_IMPL(15); QPYQML_PROXY_IMPL(16); QPYQML_PROXY_IMPL(17); QPYQML_PROXY_IMPL(18); QPYQML_PROXY_IMPL(19); QPYQML_PROXY_IMPL(20); QPYQML_PROXY_IMPL(21); QPYQML_PROXY_IMPL(22); QPYQML_PROXY_IMPL(23); QPYQML_PROXY_IMPL(24); QPYQML_PROXY_IMPL(25); QPYQML_PROXY_IMPL(26); QPYQML_PROXY_IMPL(27); QPYQML_PROXY_IMPL(28); QPYQML_PROXY_IMPL(29); QPYQML_PROXY_IMPL(30); QPYQML_PROXY_IMPL(31); QPYQML_PROXY_IMPL(32); QPYQML_PROXY_IMPL(33); QPYQML_PROXY_IMPL(34); QPYQML_PROXY_IMPL(35); QPYQML_PROXY_IMPL(36); QPYQML_PROXY_IMPL(37); QPYQML_PROXY_IMPL(38); QPYQML_PROXY_IMPL(39); QPYQML_PROXY_IMPL(40); QPYQML_PROXY_IMPL(41); QPYQML_PROXY_IMPL(42); QPYQML_PROXY_IMPL(43); QPYQML_PROXY_IMPL(44); QPYQML_PROXY_IMPL(45); QPYQML_PROXY_IMPL(46); QPYQML_PROXY_IMPL(47); QPYQML_PROXY_IMPL(48); QPYQML_PROXY_IMPL(49); QPYQML_PROXY_IMPL(50); QPYQML_PROXY_IMPL(51); QPYQML_PROXY_IMPL(52); QPYQML_PROXY_IMPL(53); QPYQML_PROXY_IMPL(54); QPYQML_PROXY_IMPL(55); QPYQML_PROXY_IMPL(56); QPYQML_PROXY_IMPL(57); QPYQML_PROXY_IMPL(58); QPYQML_PROXY_IMPL(59); // The reimplementations of the QAbstractItemModel virtuals. QModelIndex QPyQmlObjectProxy::index(int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->index(row, column, parent); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::parent(const QModelIndex &child) const { if (!proxied.isNull() && proxied_model) return proxied_model->parent(child); return QModelIndex(); } QModelIndex QPyQmlObjectProxy::sibling(int row, int column, const QModelIndex &idx) const { if (!proxied.isNull() && proxied_model) return proxied_model->sibling(row, column, idx); return QModelIndex(); } int QPyQmlObjectProxy::rowCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->rowCount(parent); return 0; } int QPyQmlObjectProxy::columnCount(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->columnCount(parent); return 0; } bool QPyQmlObjectProxy::hasChildren(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->hasChildren(parent); return false; } QVariant QPyQmlObjectProxy::data(const QModelIndex &index, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->data(index, role); return QVariant(); } bool QPyQmlObjectProxy::setData(const QModelIndex &index, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setData(index, value, role); return false; } QVariant QPyQmlObjectProxy::headerData(int section, Qt::Orientation orientation, int role) const { if (!proxied.isNull() && proxied_model) return proxied_model->headerData(section, orientation, role); return QVariant(); } bool QPyQmlObjectProxy::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) { if (!proxied.isNull() && proxied_model) return proxied_model->setHeaderData(section, orientation, value, role); return false; } QMap QPyQmlObjectProxy::itemData(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->itemData(index); return QMap(); } bool QPyQmlObjectProxy::setItemData(const QModelIndex &index, const QMap &roles) { if (!proxied.isNull() && proxied_model) return proxied_model->setItemData(index, roles); return false; } QStringList QPyQmlObjectProxy::mimeTypes() const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeTypes(); return QStringList(); } QMimeData *QPyQmlObjectProxy::mimeData(const QModelIndexList &indexes) const { if (!proxied.isNull() && proxied_model) return proxied_model->mimeData(indexes); return 0; } bool QPyQmlObjectProxy::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canDropMimeData(data, action, row, column, parent); return false; } bool QPyQmlObjectProxy::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->dropMimeData(data, action, row, column, parent); return false; } Qt::DropActions QPyQmlObjectProxy::supportedDropActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDropActions(); return Qt::IgnoreAction; } Qt::DropActions QPyQmlObjectProxy::supportedDragActions() const { if (!proxied.isNull() && proxied_model) return proxied_model->supportedDragActions(); return Qt::IgnoreAction; } bool QPyQmlObjectProxy::insertRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertRows(row, count, parent); return false; } bool QPyQmlObjectProxy::insertColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->insertColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::removeRows(int row, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeRows(row, count, parent); return false; } bool QPyQmlObjectProxy::removeColumns(int column, int count, const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) return proxied_model->removeColumns(column, count, parent); return false; } bool QPyQmlObjectProxy::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveRows(sourceParent, sourceRow, count, destinationParent, destinationChild); return false; } bool QPyQmlObjectProxy::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) { if (!proxied.isNull() && proxied_model) return proxied_model->moveColumns(sourceParent, sourceColumn, count, destinationParent, destinationChild); return false; } void QPyQmlObjectProxy::fetchMore(const QModelIndex &parent) { if (!proxied.isNull() && proxied_model) proxied_model->fetchMore(parent); } bool QPyQmlObjectProxy::canFetchMore(const QModelIndex &parent) const { if (!proxied.isNull() && proxied_model) return proxied_model->canFetchMore(parent); return false; } Qt::ItemFlags QPyQmlObjectProxy::flags(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->flags(index); return Qt::NoItemFlags; } void QPyQmlObjectProxy::sort(int column, Qt::SortOrder order) { if (!proxied.isNull() && proxied_model) proxied_model->sort(column, order); } QModelIndex QPyQmlObjectProxy::buddy(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->buddy(index); return QModelIndex(); } QModelIndexList QPyQmlObjectProxy::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const { if (!proxied.isNull() && proxied_model) return proxied_model->match(start, role, value, hits, flags); return QModelIndexList(); } QSize QPyQmlObjectProxy::span(const QModelIndex &index) const { if (!proxied.isNull() && proxied_model) return proxied_model->span(index); return QSize(); } QHash QPyQmlObjectProxy::roleNames() const { if (!proxied.isNull() && proxied_model) return proxied_model->roleNames(); return QHash(); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2333775 PyQt6-6.6.1/qpy/QtQml/qpyqmlobject.h0000644000076500000240000001646514532160372016137 0ustar00philstaff// This is the definition of the QPyQmlObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include #include #include #include #include #include class QPyQmlObjectProxy : public QAbstractItemModel { public: QPyQmlObjectProxy(QObject *parent = 0); virtual ~QPyQmlObjectProxy(); virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *_clname); virtual int qt_metacall(QMetaObject::Call, int, void **); virtual int typeNr() const = 0; static int addType(PyTypeObject *type); void createPyObject(QObject *parent); static QObject *createAttachedProperties(PyTypeObject *py_type, QObject *parent); static void *resolveProxy(void *proxy); void pyClassBegin(); void pyComponentComplete(); void pySetTarget(const QQmlProperty &target); // The set of proxies in existence. static QSet proxies; // The real object. QPointer proxied; // The real object if it is an item model. QAbstractItemModel *proxied_model; // QAbstractItemModel virtuals. virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual Qt::DropActions supportedDragActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const; virtual QSize span(const QModelIndex &index) const; virtual QHash roleNames() const; protected: void connectNotify(const QMetaMethod &signal); private: // These can by cast to sipWrapperType. static QList pyqt_types; // The wrapped proxied object. PyObject *py_proxied; QPyQmlObjectProxy(const QPyQmlObjectProxy &); }; // The proxy type declarations. #define QPYQML_PROXY_DECL(n) \ class QPyQmlObject##n : public QPyQmlObjectProxy, public QQmlParserStatus, public QQmlPropertyValueSource \ { \ public: \ QPyQmlObject##n(QObject *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ static PyTypeObject *attachedPyType; \ static QObject *attachedProperties(QObject *parent); \ virtual void classBegin(); \ virtual void componentComplete(); \ virtual void setTarget(const QQmlProperty &target); \ private: \ QPyQmlObject##n(const QPyQmlObject##n &); \ } QPYQML_PROXY_DECL(0); QPYQML_PROXY_DECL(1); QPYQML_PROXY_DECL(2); QPYQML_PROXY_DECL(3); QPYQML_PROXY_DECL(4); QPYQML_PROXY_DECL(5); QPYQML_PROXY_DECL(6); QPYQML_PROXY_DECL(7); QPYQML_PROXY_DECL(8); QPYQML_PROXY_DECL(9); QPYQML_PROXY_DECL(10); QPYQML_PROXY_DECL(11); QPYQML_PROXY_DECL(12); QPYQML_PROXY_DECL(13); QPYQML_PROXY_DECL(14); QPYQML_PROXY_DECL(15); QPYQML_PROXY_DECL(16); QPYQML_PROXY_DECL(17); QPYQML_PROXY_DECL(18); QPYQML_PROXY_DECL(19); QPYQML_PROXY_DECL(20); QPYQML_PROXY_DECL(21); QPYQML_PROXY_DECL(22); QPYQML_PROXY_DECL(23); QPYQML_PROXY_DECL(24); QPYQML_PROXY_DECL(25); QPYQML_PROXY_DECL(26); QPYQML_PROXY_DECL(27); QPYQML_PROXY_DECL(28); QPYQML_PROXY_DECL(29); QPYQML_PROXY_DECL(30); QPYQML_PROXY_DECL(31); QPYQML_PROXY_DECL(32); QPYQML_PROXY_DECL(33); QPYQML_PROXY_DECL(34); QPYQML_PROXY_DECL(35); QPYQML_PROXY_DECL(36); QPYQML_PROXY_DECL(37); QPYQML_PROXY_DECL(38); QPYQML_PROXY_DECL(39); QPYQML_PROXY_DECL(40); QPYQML_PROXY_DECL(41); QPYQML_PROXY_DECL(42); QPYQML_PROXY_DECL(43); QPYQML_PROXY_DECL(44); QPYQML_PROXY_DECL(45); QPYQML_PROXY_DECL(46); QPYQML_PROXY_DECL(47); QPYQML_PROXY_DECL(48); QPYQML_PROXY_DECL(49); QPYQML_PROXY_DECL(50); QPYQML_PROXY_DECL(51); QPYQML_PROXY_DECL(52); QPYQML_PROXY_DECL(53); QPYQML_PROXY_DECL(54); QPYQML_PROXY_DECL(55); QPYQML_PROXY_DECL(56); QPYQML_PROXY_DECL(57); QPYQML_PROXY_DECL(58); QPYQML_PROXY_DECL(59); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2447686 PyQt6-6.6.1/qpy/QtQml/qpyqmlsingletonobject.cpp0000644000076500000240000000620114532160372020400 0ustar00philstaff// This is the implementation of the QPyQmlSingletonObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlsingletonobject.h" #include "sipAPIQtQml.h" // The number of registered Python types. int QPyQmlSingletonObjectProxy::nr_types = 0; // Add a new Python type and return its number. int QPyQmlSingletonObjectProxy::addType() { return nr_types++; } // Create the QObject instance. QObject *QPyQmlSingletonObjectProxy::createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory) { // This should never happen. if (!factory) return 0; QObject *qobject; SIP_BLOCK_THREADS PyObject *py_obj = sipCallMethod(NULL, factory, "DD", engine, sipType_QQmlEngine, NULL, scriptEngine, sipType_QJSEngine, NULL); if (py_obj) { qobject = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_obj)); // The engine will call the dtor and garbage collect the Python object. sipTransferTo(py_obj, Py_None); Py_DECREF(py_obj); } else { qobject = 0; pyqt6_qtqml_err_print(); } Py_DECREF(factory); SIP_UNBLOCK_THREADS return qobject; } // The proxy type implementations. #define QPYQML_SINGLETON_PROXY_IMPL(n) \ PyObject *QPyQmlSingletonObject##n::factory = 0; \ QMetaObject QPyQmlSingletonObject##n::staticMetaObject QPYQML_SINGLETON_PROXY_IMPL(0); QPYQML_SINGLETON_PROXY_IMPL(1); QPYQML_SINGLETON_PROXY_IMPL(2); QPYQML_SINGLETON_PROXY_IMPL(3); QPYQML_SINGLETON_PROXY_IMPL(4); QPYQML_SINGLETON_PROXY_IMPL(5); QPYQML_SINGLETON_PROXY_IMPL(6); QPYQML_SINGLETON_PROXY_IMPL(7); QPYQML_SINGLETON_PROXY_IMPL(8); QPYQML_SINGLETON_PROXY_IMPL(9); QPYQML_SINGLETON_PROXY_IMPL(10); QPYQML_SINGLETON_PROXY_IMPL(11); QPYQML_SINGLETON_PROXY_IMPL(12); QPYQML_SINGLETON_PROXY_IMPL(13); QPYQML_SINGLETON_PROXY_IMPL(14); QPYQML_SINGLETON_PROXY_IMPL(15); QPYQML_SINGLETON_PROXY_IMPL(16); QPYQML_SINGLETON_PROXY_IMPL(17); QPYQML_SINGLETON_PROXY_IMPL(18); QPYQML_SINGLETON_PROXY_IMPL(19); QPYQML_SINGLETON_PROXY_IMPL(20); QPYQML_SINGLETON_PROXY_IMPL(21); QPYQML_SINGLETON_PROXY_IMPL(22); QPYQML_SINGLETON_PROXY_IMPL(23); QPYQML_SINGLETON_PROXY_IMPL(24); QPYQML_SINGLETON_PROXY_IMPL(25); QPYQML_SINGLETON_PROXY_IMPL(26); QPYQML_SINGLETON_PROXY_IMPL(27); QPYQML_SINGLETON_PROXY_IMPL(28); QPYQML_SINGLETON_PROXY_IMPL(29); ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1701372154.2341 PyQt6-6.6.1/qpy/QtQml/qpyqmlsingletonobject.h0000644000076500000240000000603114532160372020046 0ustar00philstaff// This is the definition of the QPyQmlSingletonObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLOBJECT_H #define _QPYQMLOBJECT_H #include #include #include #include // Note that these classes are never instantiated. They are used to give the // registration structure appropriate values (although whether or not those // values are actually used isn't clear). class QPyQmlSingletonObjectProxy : public QObject { public: static int addType(); static QObject *createObject(QQmlEngine *engine, QJSEngine *scriptEngine, PyObject *factory); private: // The number of registered types. static int nr_types; QPyQmlSingletonObjectProxy(const QPyQmlSingletonObjectProxy &); }; // The proxy type declarations. #define QPYQML_SINGLETON_PROXY_DECL(n) \ class QPyQmlSingletonObject##n : public QPyQmlSingletonObjectProxy \ { \ public: \ static QMetaObject staticMetaObject; \ static PyObject *factory; \ static QObject *objectFactory(QQmlEngine *engine, QJSEngine *scriptEngine) \ { \ QObject *qo = createObject(engine, scriptEngine, factory); \ factory = 0; \ return qo; \ } \ private: \ QPyQmlSingletonObject##n(const QPyQmlSingletonObject##n &); \ } QPYQML_SINGLETON_PROXY_DECL(0); QPYQML_SINGLETON_PROXY_DECL(1); QPYQML_SINGLETON_PROXY_DECL(2); QPYQML_SINGLETON_PROXY_DECL(3); QPYQML_SINGLETON_PROXY_DECL(4); QPYQML_SINGLETON_PROXY_DECL(5); QPYQML_SINGLETON_PROXY_DECL(6); QPYQML_SINGLETON_PROXY_DECL(7); QPYQML_SINGLETON_PROXY_DECL(8); QPYQML_SINGLETON_PROXY_DECL(9); QPYQML_SINGLETON_PROXY_DECL(10); QPYQML_SINGLETON_PROXY_DECL(11); QPYQML_SINGLETON_PROXY_DECL(12); QPYQML_SINGLETON_PROXY_DECL(13); QPYQML_SINGLETON_PROXY_DECL(14); QPYQML_SINGLETON_PROXY_DECL(15); QPYQML_SINGLETON_PROXY_DECL(16); QPYQML_SINGLETON_PROXY_DECL(17); QPYQML_SINGLETON_PROXY_DECL(18); QPYQML_SINGLETON_PROXY_DECL(19); QPYQML_SINGLETON_PROXY_DECL(20); QPYQML_SINGLETON_PROXY_DECL(21); QPYQML_SINGLETON_PROXY_DECL(22); QPYQML_SINGLETON_PROXY_DECL(23); QPYQML_SINGLETON_PROXY_DECL(24); QPYQML_SINGLETON_PROXY_DECL(25); QPYQML_SINGLETON_PROXY_DECL(26); QPYQML_SINGLETON_PROXY_DECL(27); QPYQML_SINGLETON_PROXY_DECL(28); QPYQML_SINGLETON_PROXY_DECL(29); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.237182 PyQt6-6.6.1/qpy/QtQml/qpyqmlvalidator.cpp0000644000076500000240000002363414532160372017205 0ustar00philstaff// This is the implementation of the QPyQmlValidatorProxy class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyqmlvalidator.h" #include "sipAPIQtQml.h" // Forward declarations. static void bad_result(PyObject *res, const char *context); // The list of registered Python types. QList QPyQmlValidatorProxy::pyqt_types; // The set of proxies in existence. QSet QPyQmlValidatorProxy::proxies; // The ctor. QPyQmlValidatorProxy::QPyQmlValidatorProxy(QObject *parent) : QValidator(parent), py_proxied(0) { proxies.insert(this); } // The dtor. QPyQmlValidatorProxy::~QPyQmlValidatorProxy() { proxies.remove(this); SIP_BLOCK_THREADS Py_XDECREF(py_proxied); SIP_UNBLOCK_THREADS if (!proxied.isNull()) delete proxied.data(); } // Called when QML has connected to a signal of the proxied object. Note that // we also used to implement the corresponding disconnectNotify() to // disconnect the signal. However this resulted in deadlocks and shouldn't be // necessary anyway because it was only happening when the object that made the // connection was itself being destroyed. void QPyQmlValidatorProxy::connectNotify(const QMetaMethod &sig) { QByteArray signal_sig = signalSignature(sig); // The signal has actually been connected to the proxy, so do the same from // the proxied object to the proxy. Use Qt::UniqueConnection in case the // object (ie. model) is used in more than one view. QObject::connect(proxied, signal_sig.constData(), this, signal_sig.constData(), Qt::UniqueConnection); } // Return what SIGNAL() would return for a method. QByteArray QPyQmlValidatorProxy::signalSignature(const QMetaMethod &signal) { QByteArray signal_sig(signal.methodSignature()); signal_sig.prepend('2'); return signal_sig; } // Delegate to the real object. const QMetaObject *QPyQmlValidatorProxy::metaObject() const { return !proxied.isNull() ? proxied->metaObject() : QObject::metaObject(); } // Delegate to the real object. void *QPyQmlValidatorProxy::qt_metacast(const char *_clname) { return !proxied.isNull() ? proxied->qt_metacast(_clname) : 0; } // Delegate to the real object. int QPyQmlValidatorProxy::qt_metacall(QMetaObject::Call call, int idx, void **args) { if (idx < 0) return idx; if (proxied.isNull()) return QObject::qt_metacall(call, idx, args); const QMetaObject *proxied_mo = proxied->metaObject(); // See if a signal defined in the proxied object might be being invoked. // Note that we used to use sender() but this proved unreliable. if (call == QMetaObject::InvokeMetaMethod && proxied_mo->method(idx).methodType() == QMetaMethod::Signal) { // Get the meta-object of the class that defines the signal. while (idx < proxied_mo->methodOffset()) { proxied_mo = proxied_mo->superClass(); Q_ASSERT(proxied_mo); } // Relay the signal to QML. QMetaObject::activate(this, proxied_mo, idx - proxied_mo->methodOffset(), args); return idx - (proxied_mo->methodCount() - proxied_mo->methodOffset()); } return proxied->qt_metacall(call, idx, args); } // Add a new Python type and return its number. int QPyQmlValidatorProxy::addType(PyTypeObject *type) { pyqt_types.append(type); return pyqt_types.size() - 1; } // Create the Python instance. void QPyQmlValidatorProxy::createPyObject(QObject *parent) { static const sipTypeDef *qvalidator_td = 0; SIP_BLOCK_THREADS if (!qvalidator_td) qvalidator_td = sipFindType("QValidator"); if (qvalidator_td) { py_proxied = sipCallMethod(NULL, (PyObject *)pyqt_types.at(typeNr()), "D", parent, qvalidator_td, NULL); if (py_proxied) proxied = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)py_proxied)); else pyqt6_qtqml_err_print(); } else { PyErr_SetString(PyExc_TypeError, "unknown type 'QValidator'"); pyqt6_qtqml_err_print(); } SIP_UNBLOCK_THREADS } // Resolve any proxy. void *QPyQmlValidatorProxy::resolveProxy(void *proxy) { QObject *qobj = reinterpret_cast(proxy); // We have to search for proxy instances because we have subverted the // usual sub-class detection mechanism. if (proxies.contains(qobj)) return static_cast(qobj)->proxied.data(); // It's not a proxy. return proxy; } // Create an instance of the attached properties. QObject *QPyQmlValidatorProxy::createAttachedProperties(PyTypeObject *py_type, QObject *parent) { QObject *qobj = 0; SIP_BLOCK_THREADS PyObject *obj = sipCallMethod(NULL, (PyObject *)py_type, "D", parent, sipType_QObject, NULL); if (obj) { qobj = reinterpret_cast( sipGetAddress((sipSimpleWrapper *)obj)); // It should always have a parent, but just in case... if (parent) Py_DECREF(obj); } else { pyqt6_qtqml_err_print(); } SIP_UNBLOCK_THREADS return qobj; } // Invoked when a class parse begins. void QPyQmlValidatorProxy::pyClassBegin() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("classBegin"); if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "classBegin()"); Py_DECREF(res); } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked when a component parse completes. void QPyQmlValidatorProxy::pyComponentComplete() { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("componentComplete"); if (method_name) { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, NULL); if (res) { if (res == Py_None) ok = true; else bad_result(res, "componentComplete()"); Py_DECREF(res); } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Invoked to set the target property of a property value source. void QPyQmlValidatorProxy::pySetTarget(const QQmlProperty &target) { if (!py_proxied) return; SIP_BLOCK_THREADS bool ok = false; static PyObject *method_name = 0; if (!method_name) method_name = PyUnicode_FromString("setTarget"); if (method_name) { QQmlProperty *target_heap = new QQmlProperty(target); PyObject *py_target = sipConvertFromNewType(target_heap, sipType_QQmlProperty, 0); if (!py_target) { delete target_heap; } else { PyObject *res = PyObject_CallMethodObjArgs(py_proxied, method_name, py_target, NULL); Py_DECREF(py_target); if (res) { if (res == Py_None) ok = true; else bad_result(res, "setTarget()"); Py_DECREF(res); } } } if (!ok) pyqt6_qtqml_err_print(); SIP_UNBLOCK_THREADS } // Raise an exception for an unexpected result. static void bad_result(PyObject *res, const char *context) { PyErr_Format(PyExc_TypeError, "unexpected result from %s: %S", context, res); } // The proxy type implementations. #define QPYQML_VALIDATOR_PROXY_IMPL(n) \ QPyQmlValidator##n::QPyQmlValidator##n(QObject *parent) : QPyQmlValidatorProxy(parent) \ { \ createPyObject(parent); \ } \ QObject *QPyQmlValidator##n::attachedProperties(QObject *parent) \ { \ return createAttachedProperties(attachedPyType, parent); \ } \ void QPyQmlValidator##n::classBegin() \ { \ pyClassBegin(); \ } \ void QPyQmlValidator##n::componentComplete() \ { \ pyComponentComplete(); \ } \ void QPyQmlValidator##n::setTarget(const QQmlProperty &target) \ { \ pySetTarget(target); \ } \ QMetaObject QPyQmlValidator##n::staticMetaObject; \ PyTypeObject *QPyQmlValidator##n::attachedPyType QPYQML_VALIDATOR_PROXY_IMPL(0); QPYQML_VALIDATOR_PROXY_IMPL(1); QPYQML_VALIDATOR_PROXY_IMPL(2); QPYQML_VALIDATOR_PROXY_IMPL(3); QPYQML_VALIDATOR_PROXY_IMPL(4); QPYQML_VALIDATOR_PROXY_IMPL(5); QPYQML_VALIDATOR_PROXY_IMPL(6); QPYQML_VALIDATOR_PROXY_IMPL(7); QPYQML_VALIDATOR_PROXY_IMPL(8); QPYQML_VALIDATOR_PROXY_IMPL(9); // The reimplementations of the QValidator virtuals. void QPyQmlValidatorProxy::fixup(QString &input) const { if (!proxied.isNull()) proxied->fixup(input); } QValidator::State QPyQmlValidatorProxy::validate(QString &input, int &pos) const { if (!proxied.isNull()) return proxied->validate(input, pos); return QValidator::Invalid; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.234945 PyQt6-6.6.1/qpy/QtQml/qpyqmlvalidator.h0000644000076500000240000000656014532160372016651 0ustar00philstaff// This is the definition of the QPyQmlValidatorProxy class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQMLVALIDATOR_H #define _QPYQMLVALIDATOR_H #include #include #include #include #include #include #include #include class QPyQmlValidatorProxy : public QValidator { public: QPyQmlValidatorProxy(QObject *parent = 0); virtual ~QPyQmlValidatorProxy(); virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *_clname); virtual int qt_metacall(QMetaObject::Call, int, void **); virtual int typeNr() const = 0; static int addType(PyTypeObject *type); void createPyObject(QObject *parent); static QObject *createAttachedProperties(PyTypeObject *py_type, QObject *parent); static void *resolveProxy(void *proxy); void pyClassBegin(); void pyComponentComplete(); void pySetTarget(const QQmlProperty &target); // The set of proxies in existence. static QSet proxies; // The real object. QPointer proxied; // QValidator virtuals. virtual void fixup(QString &input) const; virtual QValidator::State validate(QString &input, int &pos) const; protected: void connectNotify(const QMetaMethod &signal); private: // These can by cast to sipWrapperType. static QList pyqt_types; // The wrapped proxied object. PyObject *py_proxied; static QByteArray signalSignature(const QMetaMethod &signal); QPyQmlValidatorProxy(const QPyQmlValidatorProxy &); }; // The proxy type declarations. #define QPYQML_VALIDATOR_PROXY_DECL(n) \ class QPyQmlValidator##n : public QPyQmlValidatorProxy, public QQmlParserStatus, public QQmlPropertyValueSource \ { \ public: \ QPyQmlValidator##n(QObject *parent = 0); \ static QMetaObject staticMetaObject; \ virtual int typeNr() const {return n##U;} \ static PyTypeObject *attachedPyType; \ static QObject *attachedProperties(QObject *parent); \ virtual void classBegin(); \ virtual void componentComplete(); \ virtual void setTarget(const QQmlProperty &target); \ private: \ QPyQmlValidator##n(const QPyQmlValidator##n &); \ } QPYQML_VALIDATOR_PROXY_DECL(0); QPYQML_VALIDATOR_PROXY_DECL(1); QPYQML_VALIDATOR_PROXY_DECL(2); QPYQML_VALIDATOR_PROXY_DECL(3); QPYQML_VALIDATOR_PROXY_DECL(4); QPYQML_VALIDATOR_PROXY_DECL(5); QPYQML_VALIDATOR_PROXY_DECL(6); QPYQML_VALIDATOR_PROXY_DECL(7); QPYQML_VALIDATOR_PROXY_DECL(8); QPYQML_VALIDATOR_PROXY_DECL(9); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.353105 PyQt6-6.6.1/qpy/QtQuick/0000755000076500000240000000000014532160402013555 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2571943 PyQt6-6.6.1/qpy/QtQuick/qpyquick_api.h0000644000076500000240000000216014532160372016432 0ustar00philstaff// This defines the API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_API_H #define _QPYQUICK_API_H // Python exception handling. typedef void (*pyqt6_qtquick_err_print_t)(); extern pyqt6_qtquick_err_print_t pyqt6_qtquick_err_print; // Initialisation. void qpyquick_post_init(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2579837 PyQt6-6.6.1/qpy/QtQuick/qpyquick_chimera_helpers.cpp0000644000076500000240000001010214532160372021341 0ustar00philstaff// This is the implementation of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include #include #include "qpyquick_chimera_helpers.h" #include "sipAPIQtQuick.h" // Forward declarations. static QMetaType QList_QObject_metatype(); static bool to_QList_QObject(PyObject *obj, QList&cpp); // Convert a QVariant to a Python object. bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp) { // Check we handle the meta-type. if (varp->metaType() != QList_QObject_metatype()) return false; const QList *cpp = reinterpret_cast *>(varp->data()); PyObject *obj = PyList_New(cpp->count()); if (obj) { for (int i = 0; i < cpp->count(); ++i) { PyObject *itm = sipConvertFromType(cpp->at(i), sipType_QObject, 0); if (!itm) { Py_DECREF(obj); obj = 0; break; } PyList_SetItem(obj, i, itm); } } *objp = obj; return true; } // Convert a Python object to a QVariant. bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp) { QMetaType metatype = QList_QObject_metatype(); // Check the meta-type has been defined. if (!metatype.isValid()) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; var = QVariant(metatype, &qlo); *okp = true; return true; } // Convert a Python object to QVariant data. bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, QMetaType metatype, bool *okp) { // Check we handle the meta-type. if (metatype != QList_QObject_metatype()) return false; QList qlo; // A failure to convert isn't an error, just the wrong type of Python // object. if (!to_QList_QObject(obj, qlo)) return false; *reinterpret_cast *>(data) = qlo; *okp = true; return true; } // Get the metatype for QList or 0 if it hasn't been registered. static QMetaType QList_QObject_metatype() { static QMetaType lo_metatype; // We look each time until we find it rather than rely on any particular // behaviour from QtQuick. if (!lo_metatype.isValid()) lo_metatype = QMetaType::fromType >(); return lo_metatype; } // Convert a Python list object to a QList and return true if the // conversion was successful. An empty list is never converted and left to the // QtCore module to handle. static bool to_QList_QObject(PyObject *obj, QList&cpp) { if (!PyList_CheckExact(obj) || PyList_Size(obj) == 0) return false; for (Py_ssize_t i = 0; i < PyList_Size(obj); ++i) { PyObject *val_obj = PyList_GetItem(obj, i); if (!val_obj) return false; int iserr = 0; QObject *val = reinterpret_cast(sipForceConvertToType( val_obj, sipType_QObject, 0, SIP_NO_CONVERTORS, 0, &iserr)); if (iserr) return false; cpp.append(val); } return true; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2557807 PyQt6-6.6.1/qpy/QtQuick/qpyquick_chimera_helpers.h0000644000076500000240000000310114532160372021007 0ustar00philstaff// This is the definition of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_CHIMERAHELPERS_H #define _QPYQUICK_CHIMERAHELPERS_H #include #include #include // Keep these in sync. with those defined in the public API. typedef bool (*FromQVariantConvertorFn)(const QVariant *, PyObject **); typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); typedef bool (*ToQVariantDataConvertorFn)(PyObject *, void *, QMetaType, bool *); bool qpyquick_from_qvariant_convertor(const QVariant *varp, PyObject **objp); bool qpyquick_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp); bool qpyquick_to_qvariant_data_convertor(PyObject *obj, void *data, QMetaType, bool *okp); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2541058 PyQt6-6.6.1/qpy/QtQuick/qpyquick_post_init.cpp0000644000076500000240000000474014532160372020232 0ustar00philstaff// This is the initialisation support code for the QtQuick module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_api.h" #include "qpyquick_chimera_helpers.h" #include "qpyquick_register_type.h" #include "sipAPIQtQuick.h" // Imports from QtCore. pyqt6_qtquick_err_print_t pyqt6_qtquick_err_print; // Perform any required initialisation. void qpyquick_post_init() { // Import the Chimera helper registration functions. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); register_from_qvariant_convertor = (void (*)(FromQVariantConvertorFn))sipImportSymbol("pyqt6_register_from_qvariant_convertor"); Q_ASSERT(register_from_qvariant_convertor); register_from_qvariant_convertor(qpyquick_from_qvariant_convertor); void (*register_to_qvariant_convertor)(ToQVariantConvertorFn); register_to_qvariant_convertor = (void (*)(ToQVariantConvertorFn))sipImportSymbol("pyqt6_register_to_qvariant_convertor"); Q_ASSERT(register_to_qvariant_convertor); register_to_qvariant_convertor(qpyquick_to_qvariant_convertor); void (*register_to_qvariant_data_convertor)(ToQVariantDataConvertorFn); register_to_qvariant_data_convertor = (void (*)(ToQVariantDataConvertorFn))sipImportSymbol("pyqt6_register_to_qvariant_data_convertor"); Q_ASSERT(register_to_qvariant_data_convertor); register_to_qvariant_data_convertor(qpyquick_to_qvariant_data_convertor); // Other QtCore imports. pyqt6_qtquick_err_print = (pyqt6_qtquick_err_print_t)sipImportSymbol( "pyqt6_err_print"); Q_ASSERT(pyqt6_qtquick_err_print); // Export the qml_register_type() helper. sipExportSymbol("qtquick_register_item", (void *)qpyquick_register_type); } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.255308 PyQt6-6.6.1/qpy/QtQuick/qpyquick_register_type.cpp0000644000076500000240000000467214532160372021113 0ustar00philstaff// This is the implementation of the qml_register_type() helper. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpyquick_register_type.h" #include "qpyquickframebufferobject.h" #include "qpyquickitem.h" #include "qpyquickpainteditem.h" #include "qpyquickview.h" #include "qpyquickwindow.h" #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp) { // Make sure the types are tested in the right order (ie. more specific // types first). if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickFramebufferObject))) return ((*rtp = QPyQuickFramebufferObject::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickPaintedItem))) return ((*rtp = QPyQuickPaintedItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickItem))) return ((*rtp = QPyQuickItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickView))) return ((*rtp = QPyQuickView::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickWindow))) return ((*rtp = QPyQuickWindow::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); // We don't recognise the type. return sipErrorContinue; } ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.261575 PyQt6-6.6.1/qpy/QtQuick/qpyquick_register_type.h0000644000076500000240000000242114532160372020546 0ustar00philstaff// This is the declaration of the qml_register_type() helper. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICK_REGISTERTYPE_H #define _QPYQUICK_REGISTERTYPE_H #include #include #include #include #include "sipAPIQtQuick.h" sipErrorState qpyquick_register_type(PyTypeObject *py_type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name, QQmlPrivate::RegisterType **rtp); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2589946 PyQt6-6.6.1/qpy/QtQuick/qpyquickframebufferobject.cpp0000644000076500000240000001515314532160372021536 0ustar00philstaff// This is the implementation of the QPyQuickFramebufferObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickframebufferobject.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickFramebufferObject types. const int NrOfQuickFramebufferObjectTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickFramebufferObjectTypes]; // External declarations. extern const QMetaObject *qpyquick_pick_metaobject(const QMetaObject *super_mo, const QMetaObject *static_mo); #define QPYQUICKFRAMEBUFFEROBJECT_INIT(n) \ case n##U: \ QPyQuickFramebufferObject##n::staticMetaObject = *mo; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = sizeof(QPyQuickFramebufferObject##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickFramebufferObject::QPyQuickFramebufferObject(QQuickItem *parent) : sipQQuickFramebufferObject(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickFramebufferObject::addType( PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickFramebufferObjectTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickFramebufferObject types may be registered with QML", NrOfQuickFramebufferObjectTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKFRAMEBUFFEROBJECT_INIT(0); QPYQUICKFRAMEBUFFEROBJECT_INIT(1); QPYQUICKFRAMEBUFFEROBJECT_INIT(2); QPYQUICKFRAMEBUFFEROBJECT_INIT(3); QPYQUICKFRAMEBUFFEROBJECT_INIT(4); QPYQUICKFRAMEBUFFEROBJECT_INIT(5); QPYQUICKFRAMEBUFFEROBJECT_INIT(6); QPYQUICKFRAMEBUFFEROBJECT_INIT(7); QPYQUICKFRAMEBUFFEROBJECT_INIT(8); QPYQUICKFRAMEBUFFEROBJECT_INIT(9); QPYQUICKFRAMEBUFFEROBJECT_INIT(10); QPYQUICKFRAMEBUFFEROBJECT_INIT(11); QPYQUICKFRAMEBUFFEROBJECT_INIT(12); QPYQUICKFRAMEBUFFEROBJECT_INIT(13); QPYQUICKFRAMEBUFFEROBJECT_INIT(14); QPYQUICKFRAMEBUFFEROBJECT_INIT(15); QPYQUICKFRAMEBUFFEROBJECT_INIT(16); QPYQUICKFRAMEBUFFEROBJECT_INIT(17); QPYQUICKFRAMEBUFFEROBJECT_INIT(18); QPYQUICKFRAMEBUFFEROBJECT_INIT(19); QPYQUICKFRAMEBUFFEROBJECT_INIT(20); QPYQUICKFRAMEBUFFEROBJECT_INIT(21); QPYQUICKFRAMEBUFFEROBJECT_INIT(22); QPYQUICKFRAMEBUFFEROBJECT_INIT(23); QPYQUICKFRAMEBUFFEROBJECT_INIT(24); QPYQUICKFRAMEBUFFEROBJECT_INIT(25); QPYQUICKFRAMEBUFFEROBJECT_INIT(26); QPYQUICKFRAMEBUFFEROBJECT_INIT(27); QPYQUICKFRAMEBUFFEROBJECT_INIT(28); QPYQUICKFRAMEBUFFEROBJECT_INIT(29); } return rt; } // Create the Python instance. void QPyQuickFramebufferObject::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt6_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKFRAMEBUFFEROBJECT_IMPL(n) \ QPyQuickFramebufferObject##n::QPyQuickFramebufferObject##n(QQuickItem *parent) : QPyQuickFramebufferObject(parent) \ { \ createPyObject(parent); \ } \ const QMetaObject *QPyQuickFramebufferObject##n::metaObject() const \ { \ return qpyquick_pick_metaobject(QPyQuickFramebufferObject::metaObject(), &staticMetaObject); \ } \ QMetaObject QPyQuickFramebufferObject##n::staticMetaObject QPYQUICKFRAMEBUFFEROBJECT_IMPL(0); QPYQUICKFRAMEBUFFEROBJECT_IMPL(1); QPYQUICKFRAMEBUFFEROBJECT_IMPL(2); QPYQUICKFRAMEBUFFEROBJECT_IMPL(3); QPYQUICKFRAMEBUFFEROBJECT_IMPL(4); QPYQUICKFRAMEBUFFEROBJECT_IMPL(5); QPYQUICKFRAMEBUFFEROBJECT_IMPL(6); QPYQUICKFRAMEBUFFEROBJECT_IMPL(7); QPYQUICKFRAMEBUFFEROBJECT_IMPL(8); QPYQUICKFRAMEBUFFEROBJECT_IMPL(9); QPYQUICKFRAMEBUFFEROBJECT_IMPL(10); QPYQUICKFRAMEBUFFEROBJECT_IMPL(11); QPYQUICKFRAMEBUFFEROBJECT_IMPL(12); QPYQUICKFRAMEBUFFEROBJECT_IMPL(13); QPYQUICKFRAMEBUFFEROBJECT_IMPL(14); QPYQUICKFRAMEBUFFEROBJECT_IMPL(15); QPYQUICKFRAMEBUFFEROBJECT_IMPL(16); QPYQUICKFRAMEBUFFEROBJECT_IMPL(17); QPYQUICKFRAMEBUFFEROBJECT_IMPL(18); QPYQUICKFRAMEBUFFEROBJECT_IMPL(19); QPYQUICKFRAMEBUFFEROBJECT_IMPL(20); QPYQUICKFRAMEBUFFEROBJECT_IMPL(21); QPYQUICKFRAMEBUFFEROBJECT_IMPL(22); QPYQUICKFRAMEBUFFEROBJECT_IMPL(23); QPYQUICKFRAMEBUFFEROBJECT_IMPL(24); QPYQUICKFRAMEBUFFEROBJECT_IMPL(25); QPYQUICKFRAMEBUFFEROBJECT_IMPL(26); QPYQUICKFRAMEBUFFEROBJECT_IMPL(27); QPYQUICKFRAMEBUFFEROBJECT_IMPL(28); QPYQUICKFRAMEBUFFEROBJECT_IMPL(29); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2547581 PyQt6-6.6.1/qpy/QtQuick/qpyquickframebufferobject.h0000644000076500000240000000610014532160372021173 0ustar00philstaff// This is the definition of the QPyQuickFramebufferObject classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKFRAMEBUFFEROBJECT_H #define _QPYQUICKFRAMEBUFFEROBJECT_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickFramebufferObject : public sipQQuickFramebufferObject { public: QPyQuickFramebufferObject(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickFramebufferObject(const QPyQuickFramebufferObject &); }; // The canned type declarations. #define QPYQUICKFRAMEBUFFEROBJECT_DECL(n) \ class QPyQuickFramebufferObject##n : public QPyQuickFramebufferObject \ { \ public: \ QPyQuickFramebufferObject##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickFramebufferObject##n(const QPyQuickFramebufferObject##n &); \ } QPYQUICKFRAMEBUFFEROBJECT_DECL(0); QPYQUICKFRAMEBUFFEROBJECT_DECL(1); QPYQUICKFRAMEBUFFEROBJECT_DECL(2); QPYQUICKFRAMEBUFFEROBJECT_DECL(3); QPYQUICKFRAMEBUFFEROBJECT_DECL(4); QPYQUICKFRAMEBUFFEROBJECT_DECL(5); QPYQUICKFRAMEBUFFEROBJECT_DECL(6); QPYQUICKFRAMEBUFFEROBJECT_DECL(7); QPYQUICKFRAMEBUFFEROBJECT_DECL(8); QPYQUICKFRAMEBUFFEROBJECT_DECL(9); QPYQUICKFRAMEBUFFEROBJECT_DECL(10); QPYQUICKFRAMEBUFFEROBJECT_DECL(11); QPYQUICKFRAMEBUFFEROBJECT_DECL(12); QPYQUICKFRAMEBUFFEROBJECT_DECL(13); QPYQUICKFRAMEBUFFEROBJECT_DECL(14); QPYQUICKFRAMEBUFFEROBJECT_DECL(15); QPYQUICKFRAMEBUFFEROBJECT_DECL(16); QPYQUICKFRAMEBUFFEROBJECT_DECL(17); QPYQUICKFRAMEBUFFEROBJECT_DECL(18); QPYQUICKFRAMEBUFFEROBJECT_DECL(19); QPYQUICKFRAMEBUFFEROBJECT_DECL(20); QPYQUICKFRAMEBUFFEROBJECT_DECL(21); QPYQUICKFRAMEBUFFEROBJECT_DECL(22); QPYQUICKFRAMEBUFFEROBJECT_DECL(23); QPYQUICKFRAMEBUFFEROBJECT_DECL(24); QPYQUICKFRAMEBUFFEROBJECT_DECL(25); QPYQUICKFRAMEBUFFEROBJECT_DECL(26); QPYQUICKFRAMEBUFFEROBJECT_DECL(27); QPYQUICKFRAMEBUFFEROBJECT_DECL(28); QPYQUICKFRAMEBUFFEROBJECT_DECL(29); #endif ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1701372154.2628 PyQt6-6.6.1/qpy/QtQuick/qpyquickitem.cpp0000644000076500000240000001717314532160372017025 0ustar00philstaff// This is the implementation of the QPyQuickItem classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickitem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickItem types. const int NrOfQuickItemTypes = 60; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickItemTypes]; // Pick the correct meta-object, either the one from the super-class or the // static meta-object. const QMetaObject *qpyquick_pick_metaobject(const QMetaObject *super_mo, const QMetaObject *static_mo) { // If a Python type has been sub-classed in QML then we need to use the // QtQuick supplied meta-object. In this case it's super-class meta-object // will be the meta-object of the Python type. Otherwise we need to use // the static meta-object (which is a copy of the meta-object of the Python // type). We use the class names held by the meta-objects to determine the // correct meta-object to return. return (qstrcmp(super_mo->superClass()->className(), static_mo->className()) == 0) ? super_mo : static_mo; } #define QPYQUICKITEM_INIT(n) \ case n##U: \ QPyQuickItem##n::staticMetaObject = *mo; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = sizeof(QPyQuickItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickItem::QPyQuickItem(QQuickItem *parent) : sipQQuickItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickItem types may be registered with QML", NrOfQuickItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKITEM_INIT(0); QPYQUICKITEM_INIT(1); QPYQUICKITEM_INIT(2); QPYQUICKITEM_INIT(3); QPYQUICKITEM_INIT(4); QPYQUICKITEM_INIT(5); QPYQUICKITEM_INIT(6); QPYQUICKITEM_INIT(7); QPYQUICKITEM_INIT(8); QPYQUICKITEM_INIT(9); QPYQUICKITEM_INIT(10); QPYQUICKITEM_INIT(11); QPYQUICKITEM_INIT(12); QPYQUICKITEM_INIT(13); QPYQUICKITEM_INIT(14); QPYQUICKITEM_INIT(15); QPYQUICKITEM_INIT(16); QPYQUICKITEM_INIT(17); QPYQUICKITEM_INIT(18); QPYQUICKITEM_INIT(19); QPYQUICKITEM_INIT(20); QPYQUICKITEM_INIT(21); QPYQUICKITEM_INIT(22); QPYQUICKITEM_INIT(23); QPYQUICKITEM_INIT(24); QPYQUICKITEM_INIT(25); QPYQUICKITEM_INIT(26); QPYQUICKITEM_INIT(27); QPYQUICKITEM_INIT(28); QPYQUICKITEM_INIT(29); QPYQUICKITEM_INIT(30); QPYQUICKITEM_INIT(31); QPYQUICKITEM_INIT(32); QPYQUICKITEM_INIT(33); QPYQUICKITEM_INIT(34); QPYQUICKITEM_INIT(35); QPYQUICKITEM_INIT(36); QPYQUICKITEM_INIT(37); QPYQUICKITEM_INIT(38); QPYQUICKITEM_INIT(39); QPYQUICKITEM_INIT(40); QPYQUICKITEM_INIT(41); QPYQUICKITEM_INIT(42); QPYQUICKITEM_INIT(43); QPYQUICKITEM_INIT(44); QPYQUICKITEM_INIT(45); QPYQUICKITEM_INIT(46); QPYQUICKITEM_INIT(47); QPYQUICKITEM_INIT(48); QPYQUICKITEM_INIT(49); QPYQUICKITEM_INIT(50); QPYQUICKITEM_INIT(51); QPYQUICKITEM_INIT(52); QPYQUICKITEM_INIT(53); QPYQUICKITEM_INIT(54); QPYQUICKITEM_INIT(55); QPYQUICKITEM_INIT(56); QPYQUICKITEM_INIT(57); QPYQUICKITEM_INIT(58); QPYQUICKITEM_INIT(59); } return rt; } // Create the Python instance. void QPyQuickItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt6_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKITEM_IMPL(n) \ QPyQuickItem##n::QPyQuickItem##n(QQuickItem *parent) : QPyQuickItem(parent) \ { \ createPyObject(parent); \ } \ const QMetaObject *QPyQuickItem##n::metaObject() const \ { \ return qpyquick_pick_metaobject(QPyQuickItem::metaObject(), &staticMetaObject); \ } \ QMetaObject QPyQuickItem##n::staticMetaObject QPYQUICKITEM_IMPL(0); QPYQUICKITEM_IMPL(1); QPYQUICKITEM_IMPL(2); QPYQUICKITEM_IMPL(3); QPYQUICKITEM_IMPL(4); QPYQUICKITEM_IMPL(5); QPYQUICKITEM_IMPL(6); QPYQUICKITEM_IMPL(7); QPYQUICKITEM_IMPL(8); QPYQUICKITEM_IMPL(9); QPYQUICKITEM_IMPL(10); QPYQUICKITEM_IMPL(11); QPYQUICKITEM_IMPL(12); QPYQUICKITEM_IMPL(13); QPYQUICKITEM_IMPL(14); QPYQUICKITEM_IMPL(15); QPYQUICKITEM_IMPL(16); QPYQUICKITEM_IMPL(17); QPYQUICKITEM_IMPL(18); QPYQUICKITEM_IMPL(19); QPYQUICKITEM_IMPL(20); QPYQUICKITEM_IMPL(21); QPYQUICKITEM_IMPL(22); QPYQUICKITEM_IMPL(23); QPYQUICKITEM_IMPL(24); QPYQUICKITEM_IMPL(25); QPYQUICKITEM_IMPL(26); QPYQUICKITEM_IMPL(27); QPYQUICKITEM_IMPL(28); QPYQUICKITEM_IMPL(29); QPYQUICKITEM_IMPL(30); QPYQUICKITEM_IMPL(31); QPYQUICKITEM_IMPL(32); QPYQUICKITEM_IMPL(33); QPYQUICKITEM_IMPL(34); QPYQUICKITEM_IMPL(35); QPYQUICKITEM_IMPL(36); QPYQUICKITEM_IMPL(37); QPYQUICKITEM_IMPL(38); QPYQUICKITEM_IMPL(39); QPYQUICKITEM_IMPL(40); QPYQUICKITEM_IMPL(41); QPYQUICKITEM_IMPL(42); QPYQUICKITEM_IMPL(43); QPYQUICKITEM_IMPL(44); QPYQUICKITEM_IMPL(45); QPYQUICKITEM_IMPL(46); QPYQUICKITEM_IMPL(47); QPYQUICKITEM_IMPL(48); QPYQUICKITEM_IMPL(49); QPYQUICKITEM_IMPL(50); QPYQUICKITEM_IMPL(51); QPYQUICKITEM_IMPL(52); QPYQUICKITEM_IMPL(53); QPYQUICKITEM_IMPL(54); QPYQUICKITEM_IMPL(55); QPYQUICKITEM_IMPL(56); QPYQUICKITEM_IMPL(57); QPYQUICKITEM_IMPL(58); QPYQUICKITEM_IMPL(59); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2635622 PyQt6-6.6.1/qpy/QtQuick/qpyquickitem.h0000644000076500000240000000626714532160372016474 0ustar00philstaff// This is the definition of the QPyQuickItem classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKITEM_H #define _QPYQUICKITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickItem : public sipQQuickItem { public: QPyQuickItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickItem(const QPyQuickItem &); }; // The canned type declarations. #define QPYQUICKITEM_DECL(n) \ class QPyQuickItem##n : public QPyQuickItem \ { \ public: \ QPyQuickItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickItem##n(const QPyQuickItem##n &); \ } QPYQUICKITEM_DECL(0); QPYQUICKITEM_DECL(1); QPYQUICKITEM_DECL(2); QPYQUICKITEM_DECL(3); QPYQUICKITEM_DECL(4); QPYQUICKITEM_DECL(5); QPYQUICKITEM_DECL(6); QPYQUICKITEM_DECL(7); QPYQUICKITEM_DECL(8); QPYQUICKITEM_DECL(9); QPYQUICKITEM_DECL(10); QPYQUICKITEM_DECL(11); QPYQUICKITEM_DECL(12); QPYQUICKITEM_DECL(13); QPYQUICKITEM_DECL(14); QPYQUICKITEM_DECL(15); QPYQUICKITEM_DECL(16); QPYQUICKITEM_DECL(17); QPYQUICKITEM_DECL(18); QPYQUICKITEM_DECL(19); QPYQUICKITEM_DECL(20); QPYQUICKITEM_DECL(21); QPYQUICKITEM_DECL(22); QPYQUICKITEM_DECL(23); QPYQUICKITEM_DECL(24); QPYQUICKITEM_DECL(25); QPYQUICKITEM_DECL(26); QPYQUICKITEM_DECL(27); QPYQUICKITEM_DECL(28); QPYQUICKITEM_DECL(29); QPYQUICKITEM_DECL(30); QPYQUICKITEM_DECL(31); QPYQUICKITEM_DECL(32); QPYQUICKITEM_DECL(33); QPYQUICKITEM_DECL(34); QPYQUICKITEM_DECL(35); QPYQUICKITEM_DECL(36); QPYQUICKITEM_DECL(37); QPYQUICKITEM_DECL(38); QPYQUICKITEM_DECL(39); QPYQUICKITEM_DECL(40); QPYQUICKITEM_DECL(41); QPYQUICKITEM_DECL(42); QPYQUICKITEM_DECL(43); QPYQUICKITEM_DECL(44); QPYQUICKITEM_DECL(45); QPYQUICKITEM_DECL(46); QPYQUICKITEM_DECL(47); QPYQUICKITEM_DECL(48); QPYQUICKITEM_DECL(49); QPYQUICKITEM_DECL(50); QPYQUICKITEM_DECL(51); QPYQUICKITEM_DECL(52); QPYQUICKITEM_DECL(53); QPYQUICKITEM_DECL(54); QPYQUICKITEM_DECL(55); QPYQUICKITEM_DECL(56); QPYQUICKITEM_DECL(57); QPYQUICKITEM_DECL(58); QPYQUICKITEM_DECL(59); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2567427 PyQt6-6.6.1/qpy/QtQuick/qpyquickpainteditem.cpp0000644000076500000240000001410714532160372020364 0ustar00philstaff// This is the implementation of the QPyQuickPaintedItem classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickpainteditem.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickPaintedItem types. const int NrOfQuickPaintedItemTypes = 30; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickPaintedItemTypes]; // External declarations. extern const QMetaObject *qpyquick_pick_metaobject(const QMetaObject *super_mo, const QMetaObject *static_mo); #define QPYQUICKPAINTEDITEM_INIT(n) \ case n##U: \ QPyQuickPaintedItem##n::staticMetaObject = *mo; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = sizeof(QPyQuickPaintedItem##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickPaintedItem::QPyQuickPaintedItem(QQuickItem *parent) : sipQQuickPaintedItem(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickPaintedItem::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickPaintedItemTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickPaintedItem types may be registered with QML", NrOfQuickPaintedItemTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKPAINTEDITEM_INIT(0); QPYQUICKPAINTEDITEM_INIT(1); QPYQUICKPAINTEDITEM_INIT(2); QPYQUICKPAINTEDITEM_INIT(3); QPYQUICKPAINTEDITEM_INIT(4); QPYQUICKPAINTEDITEM_INIT(5); QPYQUICKPAINTEDITEM_INIT(6); QPYQUICKPAINTEDITEM_INIT(7); QPYQUICKPAINTEDITEM_INIT(8); QPYQUICKPAINTEDITEM_INIT(9); QPYQUICKPAINTEDITEM_INIT(10); QPYQUICKPAINTEDITEM_INIT(11); QPYQUICKPAINTEDITEM_INIT(12); QPYQUICKPAINTEDITEM_INIT(13); QPYQUICKPAINTEDITEM_INIT(14); QPYQUICKPAINTEDITEM_INIT(15); QPYQUICKPAINTEDITEM_INIT(16); QPYQUICKPAINTEDITEM_INIT(17); QPYQUICKPAINTEDITEM_INIT(18); QPYQUICKPAINTEDITEM_INIT(19); QPYQUICKPAINTEDITEM_INIT(20); QPYQUICKPAINTEDITEM_INIT(21); QPYQUICKPAINTEDITEM_INIT(22); QPYQUICKPAINTEDITEM_INIT(23); QPYQUICKPAINTEDITEM_INIT(24); QPYQUICKPAINTEDITEM_INIT(25); QPYQUICKPAINTEDITEM_INIT(26); QPYQUICKPAINTEDITEM_INIT(27); QPYQUICKPAINTEDITEM_INIT(28); QPYQUICKPAINTEDITEM_INIT(29); } return rt; } // Create the Python instance. void QPyQuickPaintedItem::createPyObject(QQuickItem *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QQuickItem, NULL); if (!obj) pyqt6_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKPAINTEDITEM_IMPL(n) \ QPyQuickPaintedItem##n::QPyQuickPaintedItem##n(QQuickItem *parent) : QPyQuickPaintedItem(parent) \ { \ createPyObject(parent); \ } \ const QMetaObject *QPyQuickPaintedItem##n::metaObject() const \ { \ return qpyquick_pick_metaobject(QPyQuickPaintedItem::metaObject(), &staticMetaObject); \ } \ QMetaObject QPyQuickPaintedItem##n::staticMetaObject QPYQUICKPAINTEDITEM_IMPL(0); QPYQUICKPAINTEDITEM_IMPL(1); QPYQUICKPAINTEDITEM_IMPL(2); QPYQUICKPAINTEDITEM_IMPL(3); QPYQUICKPAINTEDITEM_IMPL(4); QPYQUICKPAINTEDITEM_IMPL(5); QPYQUICKPAINTEDITEM_IMPL(6); QPYQUICKPAINTEDITEM_IMPL(7); QPYQUICKPAINTEDITEM_IMPL(8); QPYQUICKPAINTEDITEM_IMPL(9); QPYQUICKPAINTEDITEM_IMPL(10); QPYQUICKPAINTEDITEM_IMPL(11); QPYQUICKPAINTEDITEM_IMPL(12); QPYQUICKPAINTEDITEM_IMPL(13); QPYQUICKPAINTEDITEM_IMPL(14); QPYQUICKPAINTEDITEM_IMPL(15); QPYQUICKPAINTEDITEM_IMPL(16); QPYQUICKPAINTEDITEM_IMPL(17); QPYQUICKPAINTEDITEM_IMPL(18); QPYQUICKPAINTEDITEM_IMPL(19); QPYQUICKPAINTEDITEM_IMPL(20); QPYQUICKPAINTEDITEM_IMPL(21); QPYQUICKPAINTEDITEM_IMPL(22); QPYQUICKPAINTEDITEM_IMPL(23); QPYQUICKPAINTEDITEM_IMPL(24); QPYQUICKPAINTEDITEM_IMPL(25); QPYQUICKPAINTEDITEM_IMPL(26); QPYQUICKPAINTEDITEM_IMPL(27); QPYQUICKPAINTEDITEM_IMPL(28); QPYQUICKPAINTEDITEM_IMPL(29); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2595825 PyQt6-6.6.1/qpy/QtQuick/qpyquickpainteditem.h0000644000076500000240000000547114532160372020035 0ustar00philstaff// This is the definition of the QPyQuickPaintedItem classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKPAINTEDITEM_H #define _QPYQUICKPAINTEDITEM_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickPaintedItem : public sipQQuickPaintedItem { public: QPyQuickPaintedItem(QQuickItem *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QQuickItem *parent); private: QPyQuickPaintedItem(const QPyQuickPaintedItem &); }; // The canned type declarations. #define QPYQUICKPAINTEDITEM_DECL(n) \ class QPyQuickPaintedItem##n : public QPyQuickPaintedItem \ { \ public: \ QPyQuickPaintedItem##n(QQuickItem *parent = 0); \ static QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickPaintedItem##n(const QPyQuickPaintedItem##n &); \ } QPYQUICKPAINTEDITEM_DECL(0); QPYQUICKPAINTEDITEM_DECL(1); QPYQUICKPAINTEDITEM_DECL(2); QPYQUICKPAINTEDITEM_DECL(3); QPYQUICKPAINTEDITEM_DECL(4); QPYQUICKPAINTEDITEM_DECL(5); QPYQUICKPAINTEDITEM_DECL(6); QPYQUICKPAINTEDITEM_DECL(7); QPYQUICKPAINTEDITEM_DECL(8); QPYQUICKPAINTEDITEM_DECL(9); QPYQUICKPAINTEDITEM_DECL(10); QPYQUICKPAINTEDITEM_DECL(11); QPYQUICKPAINTEDITEM_DECL(12); QPYQUICKPAINTEDITEM_DECL(13); QPYQUICKPAINTEDITEM_DECL(14); QPYQUICKPAINTEDITEM_DECL(15); QPYQUICKPAINTEDITEM_DECL(16); QPYQUICKPAINTEDITEM_DECL(17); QPYQUICKPAINTEDITEM_DECL(18); QPYQUICKPAINTEDITEM_DECL(19); QPYQUICKPAINTEDITEM_DECL(20); QPYQUICKPAINTEDITEM_DECL(21); QPYQUICKPAINTEDITEM_DECL(22); QPYQUICKPAINTEDITEM_DECL(23); QPYQUICKPAINTEDITEM_DECL(24); QPYQUICKPAINTEDITEM_DECL(25); QPYQUICKPAINTEDITEM_DECL(26); QPYQUICKPAINTEDITEM_DECL(27); QPYQUICKPAINTEDITEM_DECL(28); QPYQUICKPAINTEDITEM_DECL(29); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2604518 PyQt6-6.6.1/qpy/QtQuick/qpyquickview.cpp0000644000076500000240000001163414532160372017035 0ustar00philstaff// This is the implementation of the QPyQuickWindow classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickview.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickView types. const int NrOfQuickViewTypes = 20; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickViewTypes]; // External declarations. extern const QMetaObject *qpyquick_pick_metaobject(const QMetaObject *super_mo, const QMetaObject *static_mo); #define QPYQUICKVIEW_INIT(n) \ case n##U: \ QPyQuickView##n::staticMetaObject = *mo; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = sizeof(QPyQuickView##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickView::QPyQuickView(QWindow *parent) : sipQQuickView(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickView::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickViewTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickView types may be registered with QML", NrOfQuickViewTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKVIEW_INIT(0); QPYQUICKVIEW_INIT(1); QPYQUICKVIEW_INIT(2); QPYQUICKVIEW_INIT(3); QPYQUICKVIEW_INIT(4); QPYQUICKVIEW_INIT(5); QPYQUICKVIEW_INIT(6); QPYQUICKVIEW_INIT(7); QPYQUICKVIEW_INIT(8); QPYQUICKVIEW_INIT(9); QPYQUICKVIEW_INIT(10); QPYQUICKVIEW_INIT(11); QPYQUICKVIEW_INIT(12); QPYQUICKVIEW_INIT(13); QPYQUICKVIEW_INIT(14); QPYQUICKVIEW_INIT(15); QPYQUICKVIEW_INIT(16); QPYQUICKVIEW_INIT(17); QPYQUICKVIEW_INIT(18); QPYQUICKVIEW_INIT(19); } return rt; } // Create the Python instance. void QPyQuickView::createPyObject(QWindow *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QWindow, NULL); if (!obj) pyqt6_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKVIEW_IMPL(n) \ QPyQuickView##n::QPyQuickView##n(QWindow *parent) : QPyQuickView(parent) \ { \ createPyObject(parent); \ } \ const QMetaObject *QPyQuickView##n::metaObject() const \ { \ return qpyquick_pick_metaobject(QPyQuickView::metaObject(), &staticMetaObject); \ } \ QMetaObject QPyQuickView##n::staticMetaObject QPYQUICKVIEW_IMPL(0); QPYQUICKVIEW_IMPL(1); QPYQUICKVIEW_IMPL(2); QPYQUICKVIEW_IMPL(3); QPYQUICKVIEW_IMPL(4); QPYQUICKVIEW_IMPL(5); QPYQUICKVIEW_IMPL(6); QPYQUICKVIEW_IMPL(7); QPYQUICKVIEW_IMPL(8); QPYQUICKVIEW_IMPL(9); QPYQUICKVIEW_IMPL(10); QPYQUICKVIEW_IMPL(11); QPYQUICKVIEW_IMPL(12); QPYQUICKVIEW_IMPL(13); QPYQUICKVIEW_IMPL(14); QPYQUICKVIEW_IMPL(15); QPYQUICKVIEW_IMPL(16); QPYQUICKVIEW_IMPL(17); QPYQUICKVIEW_IMPL(18); QPYQUICKVIEW_IMPL(19); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2651114 PyQt6-6.6.1/qpy/QtQuick/qpyquickview.h0000644000076500000240000000442614532160372016503 0ustar00philstaff// This is the definition of the QPyQuickView classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKVIEW_H #define _QPYQUICKVIEW_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickView : public sipQQuickView { public: QPyQuickView(QWindow *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QWindow *parent); private: QPyQuickView(const QPyQuickView &); }; // The canned type declarations. #define QPYQUICKVIEW_DECL(n) \ class QPyQuickView##n : public QPyQuickView \ { \ public: \ QPyQuickView##n(QWindow *parent = 0); \ static QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickView##n(const QPyQuickView##n &); \ } QPYQUICKVIEW_DECL(0); QPYQUICKVIEW_DECL(1); QPYQUICKVIEW_DECL(2); QPYQUICKVIEW_DECL(3); QPYQUICKVIEW_DECL(4); QPYQUICKVIEW_DECL(5); QPYQUICKVIEW_DECL(6); QPYQUICKVIEW_DECL(7); QPYQUICKVIEW_DECL(8); QPYQUICKVIEW_DECL(9); QPYQUICKVIEW_DECL(10); QPYQUICKVIEW_DECL(11); QPYQUICKVIEW_DECL(12); QPYQUICKVIEW_DECL(13); QPYQUICKVIEW_DECL(14); QPYQUICKVIEW_DECL(15); QPYQUICKVIEW_DECL(16); QPYQUICKVIEW_DECL(17); QPYQUICKVIEW_DECL(18); QPYQUICKVIEW_DECL(19); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2644327 PyQt6-6.6.1/qpy/QtQuick/qpyquickwindow.cpp0000644000076500000240000001205014532160372017363 0ustar00philstaff// This is the implementation of the QPyQuickWindow classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpyquickwindow.h" #include "sipAPIQtQuick.h" // The maximum number of Python QQuickWindow types. const int NrOfQuickWindowTypes = 20; // The list of registered Python types. static QList pyqt_types; // The registration data for the canned types. static QQmlPrivate::RegisterType canned_types[NrOfQuickWindowTypes]; // External declarations. extern const QMetaObject *qpyquick_pick_metaobject(const QMetaObject *super_mo, const QMetaObject *static_mo); #define QPYQUICKWINDOW_INIT(n) \ case n##U: \ QPyQuickWindow##n::staticMetaObject = *mo; \ rt->typeId = QQmlPrivate::QmlMetaType::self(); \ rt->listId = QQmlPrivate::QmlMetaType::list(); \ rt->objectSize = sizeof(QPyQuickWindow##n); \ rt->create = QQmlPrivate::createInto; \ rt->metaObject = mo; \ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc(); \ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject(); \ rt->parserStatusCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueSourceCast = QQmlPrivate::StaticCastSelector::cast(); \ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector::cast(); \ break // The ctor. QPyQuickWindow::QPyQuickWindow(QWindow *parent) : sipQQuickWindow(parent) { } // Add a new Python type and return its number. QQmlPrivate::RegisterType *QPyQuickWindow::addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name) { int type_nr = pyqt_types.size(); // Check we have a spare canned type. if (type_nr >= NrOfQuickWindowTypes) { PyErr_Format(PyExc_TypeError, "a maximum of %d QQuickWindow types may be registered with QML", NrOfQuickWindowTypes); return 0; } pyqt_types.append(type); QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; // Initialise those members that depend on the C++ type. switch (type_nr) { QPYQUICKWINDOW_INIT(0); QPYQUICKWINDOW_INIT(1); QPYQUICKWINDOW_INIT(2); QPYQUICKWINDOW_INIT(3); QPYQUICKWINDOW_INIT(4); QPYQUICKWINDOW_INIT(5); QPYQUICKWINDOW_INIT(6); QPYQUICKWINDOW_INIT(7); QPYQUICKWINDOW_INIT(8); QPYQUICKWINDOW_INIT(9); QPYQUICKWINDOW_INIT(10); QPYQUICKWINDOW_INIT(11); QPYQUICKWINDOW_INIT(12); QPYQUICKWINDOW_INIT(13); QPYQUICKWINDOW_INIT(14); QPYQUICKWINDOW_INIT(15); QPYQUICKWINDOW_INIT(16); QPYQUICKWINDOW_INIT(17); QPYQUICKWINDOW_INIT(18); QPYQUICKWINDOW_INIT(19); } return rt; } // Create the Python instance. void QPyQuickWindow::createPyObject(QWindow *parent) { SIP_BLOCK_THREADS // Assume C++ owns everything. PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), NULL, &sipPySelf, "D", parent, sipType_QWindow, NULL); if (!obj) pyqt6_qtquick_err_print(); SIP_UNBLOCK_THREADS } // The canned type implementations. #define QPYQUICKWINDOW_IMPL(n) \ QPyQuickWindow##n::QPyQuickWindow##n(QWindow *parent) : QPyQuickWindow(parent) \ { \ createPyObject(parent); \ } \ const QMetaObject *QPyQuickWindow##n::metaObject() const \ { \ return qpyquick_pick_metaobject(QPyQuickWindow::metaObject(), &staticMetaObject); \ } \ QMetaObject QPyQuickWindow##n::staticMetaObject QPYQUICKWINDOW_IMPL(0); QPYQUICKWINDOW_IMPL(1); QPYQUICKWINDOW_IMPL(2); QPYQUICKWINDOW_IMPL(3); QPYQUICKWINDOW_IMPL(4); QPYQUICKWINDOW_IMPL(5); QPYQUICKWINDOW_IMPL(6); QPYQUICKWINDOW_IMPL(7); QPYQUICKWINDOW_IMPL(8); QPYQUICKWINDOW_IMPL(9); QPYQUICKWINDOW_IMPL(10); QPYQUICKWINDOW_IMPL(11); QPYQUICKWINDOW_IMPL(12); QPYQUICKWINDOW_IMPL(13); QPYQUICKWINDOW_IMPL(14); QPYQUICKWINDOW_IMPL(15); QPYQUICKWINDOW_IMPL(16); QPYQUICKWINDOW_IMPL(17); QPYQUICKWINDOW_IMPL(18); QPYQUICKWINDOW_IMPL(19); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.261078 PyQt6-6.6.1/qpy/QtQuick/qpyquickwindow.h0000644000076500000240000000453414532160372017040 0ustar00philstaff// This is the definition of the QPyQuickWindow classes. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYQUICKWINDOW_H #define _QPYQUICKWINDOW_H #include #include #include #include #include #include "sipAPIQtQuick.h" class QPyQuickWindow : public sipQQuickWindow { public: QPyQuickWindow(QWindow *parent = 0); virtual int typeNr() const = 0; static QQmlPrivate::RegisterType *addType(PyTypeObject *type, const QMetaObject *mo, const QByteArray &ptr_name, const QByteArray &list_name); void createPyObject(QWindow *parent); private: QPyQuickWindow(const QPyQuickWindow &); }; // The canned type declarations. #define QPYQUICKWINDOW_DECL(n) \ class QPyQuickWindow##n : public QPyQuickWindow \ { \ public: \ QPyQuickWindow##n(QWindow *parent = 0); \ static QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ virtual int typeNr() const {return n##U;} \ private: \ QPyQuickWindow##n(const QPyQuickWindow##n &); \ } QPYQUICKWINDOW_DECL(0); QPYQUICKWINDOW_DECL(1); QPYQUICKWINDOW_DECL(2); QPYQUICKWINDOW_DECL(3); QPYQUICKWINDOW_DECL(4); QPYQUICKWINDOW_DECL(5); QPYQUICKWINDOW_DECL(6); QPYQUICKWINDOW_DECL(7); QPYQUICKWINDOW_DECL(8); QPYQUICKWINDOW_DECL(9); QPYQUICKWINDOW_DECL(10); QPYQUICKWINDOW_DECL(11); QPYQUICKWINDOW_DECL(12); QPYQUICKWINDOW_DECL(13); QPYQUICKWINDOW_DECL(14); QPYQUICKWINDOW_DECL(15); QPYQUICKWINDOW_DECL(16); QPYQUICKWINDOW_DECL(17); QPYQUICKWINDOW_DECL(18); QPYQUICKWINDOW_DECL(19); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3597012 PyQt6-6.6.1/qpy/QtWidgets/0000755000076500000240000000000014532160402014107 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2659028 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_api.h0000644000076500000240000000176014532160372017323 0ustar00philstaff// This defines the API provided by this library. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYWIDGETS_API_H #define _QPYWIDGETS_API_H // Initialisation. void qpywidgets_post_init(); #endif ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2668123 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_chimera_helpers.cpp0000644000076500000240000000341514532160372022236 0ustar00philstaff// This is the implementation of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include #include #include "qpywidgets_chimera_helpers.h" #include "sipAPIQtWidgets.h" // Convert a Python object to a QVariant. bool qpywidgets_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp) { // QGraphicsItem sub-classes aren't known to the meta-object system and, // if we didn't do anything, would be interpreted as QObjects by the // default convertion code. This would cause problems for Python // reimplementations of QGraphicsItem::itemChange(). if (!sipCanConvertToType(obj, sipType_QGraphicsItem, SIP_NO_CONVERTORS)) return false; int iserr = 0; QGraphicsItem *qgi = reinterpret_cast( sipConvertToType(obj, sipType_QGraphicsItem, 0, SIP_NO_CONVERTORS, 0, &iserr)); *okp = !iserr; if (!iserr) var.setValue(qgi); return true; } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2680106 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_chimera_helpers.h0000644000076500000240000000233714532160372021705 0ustar00philstaff// This is the definition of the various Chimera helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYWIDGETS_CHIMERAHELPERS_H #define _QPYWIDGETS_CHIMERAHELPERS_H #include #include // Keep these in sync. with those defined in the public API. typedef bool (*ToQVariantConvertorFn)(PyObject *, QVariant &, bool *); bool qpywidgets_to_qvariant_convertor(PyObject *obj, QVariant &var, bool *okp); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.268864 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_post_init.cpp0000644000076500000240000000324714532160372021117 0ustar00philstaff// This is the initialisation support code for the QtWidgets module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpywidgets_api.h" #include "qpywidgets_chimera_helpers.h" #include "qpywidgets_qaction_helpers.h" #include "sipAPIQtWidgets.h" // Perform any required initialisation. void qpywidgets_post_init() { // Import the Chimera helper registration functions. void (*register_to_qvariant_convertor)(ToQVariantConvertorFn); register_to_qvariant_convertor = (void (*)(ToQVariantConvertorFn))sipImportSymbol("pyqt6_register_to_qvariant_convertor"); Q_ASSERT(register_to_qvariant_convertor); register_to_qvariant_convertor(qpywidgets_to_qvariant_convertor); // Export the QAction helpers. sipExportSymbol("pyqt6_qaction_menu", (void *)qpywidgets_qaction_menu); sipExportSymbol("pyqt6_qaction_set_menu", (void *)qpywidgets_qaction_set_menu); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2663467 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_qaction_helpers.cpp0000644000076500000240000000225314532160372022263 0ustar00philstaff// This is the implementation of the various QAction helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #include "qpywidgets_qaction_helpers.h" // Implement QAction::menu(). QMenu *qpywidgets_qaction_menu(const QAction *action) { return action->menu(); } // Implement QAction::setMenu(). void qpywidgets_qaction_set_menu(QAction *action, QMenu *menu) { action->setMenu(menu); } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2683825 PyQt6-6.6.1/qpy/QtWidgets/qpywidgets_qaction_helpers.h0000644000076500000240000000217314532160372021731 0ustar00philstaff// This is the definition of the various QAction helpers. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. #ifndef _QPYWIDGETS_QACTIONHELPERS_H #define _QPYWIDGETS_QACTIONHELPERS_H #include #include QMenu *qpywidgets_qaction_menu(const QAction *action); void qpywidgets_qaction_set_menu(QAction *action, QMenu *menu); #endif ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.723994 PyQt6-6.6.1/sip/0000755000076500000240000000000014532160403012157 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5260768 PyQt6-6.6.1/sip/QAxContainer/0000755000076500000240000000000014532160403014513 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.314921 PyQt6-6.6.1/sip/QAxContainer/QAxContainermod.sip0000644000076500000240000000371614532160401020271 0ustar00philstaff// This is the SIP interface definition for the QAxContainer module of PyQt6. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QAxContainer, keyword_arguments="Optional", use_limited_api=True) %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qaxbase.sip %Include qaxobject.sip %Include qaxobjectinterface.sip %Include qaxwidget.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.315821 PyQt6-6.6.1/sip/QAxContainer/qaxbase.sip0000644000076500000240000001151214532160401016652 0ustar00philstaff// This is the SIP interface definition for QAxBase. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxBase { %TypeHeaderCode #include %End public: virtual ~QAxBase(); QString control() const; //long queryInterface(const QUuid &, void **) const; // Note that the order of these overloads is significant. QVariant dynamicCall(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = new QVariant(sipCpp->dynamicCall(a0, *a1)); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (Py_ssize_t i = 0; i < PyList_Size(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QVariant dynamicCall(const char *, const QVariant &value1 = QVariant(), const QVariant &value2 = QVariant(), const QVariant &value3 = QVariant(), const QVariant &value4 = QVariant(), const QVariant &value5 = QVariant(), const QVariant &value6 = QVariant(), const QVariant &value7 = QVariant(), const QVariant &value8 = QVariant()); // Note that the order of these overloads is significant. QAxObject *querySubObject(const char *, QList & /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->querySubObject(a0, *a1); Py_END_ALLOW_THREADS // Update the input list with the (possibly) new values. for (Py_ssize_t i = 0; i < PyList_Size(a1Wrapper); ++i) { QVariant *v = new QVariant(a1->at(i)); PyObject *v_obj = sipConvertFromNewType(v, sipType_QVariant, NULL); if (!v_obj) { delete v; sipIsErr = 1; break; } if (PyList_SetItem(a1Wrapper, i, v_obj) < 0) { Py_DECREF(v_obj); sipIsErr = 1; break; } } %End QAxObject *querySubObject(const char *, const QVariant &value1 = QVariant(), const QVariant &value2 = QVariant(), const QVariant &value3 = QVariant(), const QVariant &value4 = QVariant(), const QVariant &value5 = QVariant(), const QVariant &value6 = QVariant(), const QVariant &value7 = QVariant(), const QVariant &value8 = QVariant()); // SIP has a bug triggered by a template definition being the subject of // multiple typedefs. It only really matters when building everything as // one big module (the code that implements the type is duplicated in // other cases). Until it is fixed we just avoid the problematic typedef. //typedef QMap PropertyBag; //PropertyBag propertyBag() const; //void setPropertyBag(const PropertyBag &); QVariantMap propertyBag() const; void setPropertyBag(const QVariantMap &); QString generateDocumentation(); virtual bool propertyWritable(const char *) const; virtual void setPropertyWritable(const char *, bool); bool isNull() const; QStringList verbs() const; QVariant asVariant() const; void clear(); bool setControl(const QString &); void disableMetaObject(); void disableClassInfo(); void disableEventSink(); unsigned long classContext() const; void setClassContext(unsigned long classContext); protected: QAxBase(); //virtual bool initialize(IUnknown** ptr); //bool initializeRemote(IUnknown** ptr); //bool initializeLicensed(IUnknown** ptr); //bool initializeActive(IUnknown** ptr); //bool initializeFromFile(IUnknown** ptr); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3172927 PyQt6-6.6.1/sip/QAxContainer/qaxobject.sip0000644000076500000240000000475414532160401017220 0ustar00philstaff// This is the SIP interface definition for QAxObject. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxBaseObject : QObject, QAxObjectInterface { %TypeHeaderCode #include %End signals: void exception(int code, const QString &source, const QString &desc, const QString &help); void propertyChanged(const QString &name); void signal(const QString &name, int argc, void *argv); }; class QAxObject : QAxBaseObject, QAxBase { %TypeHeaderCode #include %End public: explicit QAxObject(QObject *parent /TransferThis/ = 0); explicit QAxObject(const QString &, QObject *parent /TransferThis/ = 0); //explicit QAxObject(IUnknown *, QObject *parent /TransferThis/ = 0); ~QAxObject(); %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAxBaseObject, &sipType_QAxBaseObject, 2, 1}, {sipName_QAxBaseWidget, &sipType_QAxBaseWidget, 3, -1}, {sipName_QAxObject, &sipType_QAxObject, -1, -1}, {sipName_QAxWidget, &sipType_QAxWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End unsigned long classContext() const; void setClassContext(unsigned long classContext); QString control() const; bool setControl(const QString &c); void resetControl(); void clear(); bool doVerb(const QString &); protected: void connectNotify(const QMetaMethod &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3162026 PyQt6-6.6.1/sip/QAxContainer/qaxobjectinterface.sip0000644000076500000240000000234314532160401021071 0ustar00philstaff// This is the SIP interface definition for QAxObjectInterface. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxObjectInterface { %TypeHeaderCode #include %End public: virtual unsigned long classContext() const = 0; virtual void setClassContext(unsigned long classContext) = 0; virtual QString control() const = 0; virtual bool setControl(const QString &c) = 0; virtual void resetControl() = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3167326 PyQt6-6.6.1/sip/QAxContainer/qaxwidget.sip0000644000076500000240000000445614532160401017234 0ustar00philstaff// This is the SIP interface definition for QAxWidget. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAxBaseWidget : QWidget, QAxObjectInterface { %TypeHeaderCode #include %End signals: void exception(int code, const QString &source, const QString &desc, const QString &help); void propertyChanged(const QString &name); void signal(const QString &name, int argc, void *argv); }; class QAxWidget : QAxBaseWidget, QAxBase { %TypeHeaderCode #include %End public: explicit QAxWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); explicit QAxWidget(const QString &, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); //explicit QAxWidget(IUnknown *, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); ~QAxWidget(); unsigned long classContext() const; void setClassContext(unsigned long classContext); QString control() const; bool setControl(const QString &c); void resetControl(); void clear(); bool doVerb(const QString &); QSize sizeHint() const; QSize minimumSizeHint() const; //virtual QaxAggregated *createAggregate(); protected: //bool initialize(IUnknown **); virtual bool createHostWindow(bool); bool createHostWindow(bool, const QByteArray &); void changeEvent(QEvent *); void resizeEvent(QResizeEvent *); virtual bool translateKeyEvent(int,int) const; void connectNotify(const QMetaMethod &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4919007 PyQt6-6.6.1/sip/QtBluetooth/0000755000076500000240000000000014532160402014430 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2604914 PyQt6-6.6.1/sip/QtBluetooth/QtBluetoothmod.sip0000644000076500000240000000533114532160401020120 0ustar00philstaff// QtBluetoothmod.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtBluetooth, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qbluetooth.sip %Include qbluetoothaddress.sip %Include qbluetoothdevicediscoveryagent.sip %Include qbluetoothdeviceinfo.sip %Include qbluetoothhostinfo.sip %Include qbluetoothlocaldevice.sip %Include qbluetoothserver.sip %Include qbluetoothservicediscoveryagent.sip %Include qbluetoothserviceinfo.sip %Include qbluetoothsocket.sip %Include qbluetoothuuid.sip %Include qlowenergyadvertisingdata.sip %Include qlowenergyadvertisingparameters.sip %Include qlowenergycharacteristic.sip %Include qlowenergycharacteristicdata.sip %Include qlowenergyconnectionparameters.sip %Include qlowenergycontroller.sip %Include qlowenergydescriptor.sip %Include qlowenergydescriptordata.sip %Include qlowenergyservice.sip %Include qlowenergyservicedata.sip %Include qpybluetooth_quint128.sip %Include qpybluetooth_qmultihash.sip %Include qpybluetooth_qlist.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2594023 PyQt6-6.6.1/sip/QtBluetooth/qbluetooth.sip0000644000076500000240000000302714532160401017334 0ustar00philstaff// qbluetooth.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) namespace QBluetooth { %TypeHeaderCode #include %End enum class Security /BaseType=Flag/ { NoSecurity, Authorization, Authentication, Encryption, Secure, }; typedef QFlags SecurityFlags; enum class AttAccessConstraint /BaseType=Flag/ { AttAuthorizationRequired, AttAuthenticationRequired, AttEncryptionRequired, }; typedef QFlags AttAccessConstraints; }; %End %If (Qt_6_2_0 -) typedef quint16 QLowEnergyHandle; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2514274 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothaddress.sip0000644000076500000240000000336214532160401020704 0ustar00philstaff// qbluetoothaddress.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothAddress { %TypeHeaderCode #include %End public: QBluetoothAddress(); explicit QBluetoothAddress(quint64 address); explicit QBluetoothAddress(const QString &address); QBluetoothAddress(const QBluetoothAddress &other); ~QBluetoothAddress(); bool isNull() const; void clear(); quint64 toUInt64() const; QString toString() const; %If (Qt_6_6_0 -) Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; %End %If (Qt_6_2_0 -) bool operator<(const QBluetoothAddress &a, const QBluetoothAddress &b); %End %If (Qt_6_2_0 -) bool operator==(const QBluetoothAddress &a, const QBluetoothAddress &b); %End %If (Qt_6_2_0 -) bool operator!=(const QBluetoothAddress &a, const QBluetoothAddress &b); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.255492 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothdevicediscoveryagent.sip0000644000076500000240000000515614532160401023470 0ustar00philstaff// qbluetoothdevicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothDeviceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, InvalidBluetoothAdapterError, UnsupportedPlatformError, UnsupportedDiscoveryMethod, LocationServiceTurnedOffError, %If (Qt_6_4_0 -) MissingPermissionsError, %End UnknownError, }; explicit QBluetoothDeviceDiscoveryAgent(QObject *parent /TransferThis/ = 0); QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothDeviceDiscoveryAgent(); bool isActive() const; QBluetoothDeviceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredDevices() const; public slots: void start(); void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods method); void stop(); signals: void deviceDiscovered(const QBluetoothDeviceInfo &info); void finished(); void errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error); void canceled(); void deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields); public: enum DiscoveryMethod /BaseType=Flag/ { NoMethod, ClassicMethod, LowEnergyMethod, }; typedef QFlags DiscoveryMethods; void setLowEnergyDiscoveryTimeout(int msTimeout); int lowEnergyDiscoveryTimeout() const; static QBluetoothDeviceDiscoveryAgent::DiscoveryMethods supportedDiscoveryMethods(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2493768 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothdeviceinfo.sip0000644000076500000240000001470614532160401021376 0ustar00philstaff// qbluetoothdeviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothDeviceInfo { %TypeHeaderCode #include %End public: enum MajorDeviceClass { MiscellaneousDevice, ComputerDevice, PhoneDevice, NetworkDevice, AudioVideoDevice, PeripheralDevice, ImagingDevice, WearableDevice, ToyDevice, HealthDevice, UncategorizedDevice, }; enum MinorMiscellaneousClass { UncategorizedMiscellaneous, }; enum MinorComputerClass { UncategorizedComputer, DesktopComputer, ServerComputer, LaptopComputer, HandheldClamShellComputer, HandheldComputer, WearableComputer, }; enum MinorPhoneClass { UncategorizedPhone, CellularPhone, CordlessPhone, SmartPhone, WiredModemOrVoiceGatewayPhone, CommonIsdnAccessPhone, }; enum MinorNetworkClass { NetworkFullService, NetworkLoadFactorOne, NetworkLoadFactorTwo, NetworkLoadFactorThree, NetworkLoadFactorFour, NetworkLoadFactorFive, NetworkLoadFactorSix, NetworkNoService, }; enum MinorAudioVideoClass { UncategorizedAudioVideoDevice, WearableHeadsetDevice, HandsFreeDevice, Microphone, Loudspeaker, Headphones, PortableAudioDevice, CarAudio, SetTopBox, HiFiAudioDevice, Vcr, VideoCamera, Camcorder, VideoMonitor, VideoDisplayAndLoudspeaker, VideoConferencing, GamingDevice, }; enum MinorPeripheralClass { UncategorizedPeripheral, KeyboardPeripheral, PointingDevicePeripheral, KeyboardWithPointingDevicePeripheral, JoystickPeripheral, GamepadPeripheral, RemoteControlPeripheral, SensingDevicePeripheral, DigitizerTabletPeripheral, CardReaderPeripheral, }; enum MinorImagingClass { UncategorizedImagingDevice, ImageDisplay, ImageCamera, ImageScanner, ImagePrinter, }; enum MinorWearableClass { UncategorizedWearableDevice, WearableWristWatch, WearablePager, WearableJacket, WearableHelmet, WearableGlasses, }; enum MinorToyClass { UncategorizedToy, ToyRobot, ToyVehicle, ToyDoll, ToyController, ToyGame, }; enum MinorHealthClass { UncategorizedHealthDevice, HealthBloodPressureMonitor, HealthThermometer, HealthWeightScale, HealthGlucoseMeter, HealthPulseOximeter, HealthDataDisplay, HealthStepCounter, }; enum ServiceClass /BaseType=Flag/ { NoService, PositioningService, NetworkingService, RenderingService, CapturingService, ObjectTransferService, AudioService, TelephonyService, InformationService, AllServices, }; typedef QFlags ServiceClasses; QBluetoothDeviceInfo(); QBluetoothDeviceInfo(const QBluetoothAddress &address, const QString &name, quint32 classOfDevice); QBluetoothDeviceInfo(const QBluetoothUuid &uuid, const QString &name, quint32 classOfDevice); QBluetoothDeviceInfo(const QBluetoothDeviceInfo &other); ~QBluetoothDeviceInfo(); bool isValid() const; bool isCached() const; void setCached(bool cached); QBluetoothAddress address() const; QString name() const; QBluetoothDeviceInfo::ServiceClasses serviceClasses() const; QBluetoothDeviceInfo::MajorDeviceClass majorDeviceClass() const; quint8 minorDeviceClass() const; qint16 rssi() const; void setRssi(qint16 signal); void setServiceUuids(const QList &uuids); QList serviceUuids() const; enum CoreConfiguration /BaseType=Flag/ { UnknownCoreConfiguration, LowEnergyCoreConfiguration, BaseRateCoreConfiguration, BaseRateAndLowEnergyCoreConfiguration, }; typedef QFlags CoreConfigurations; void setCoreConfigurations(QBluetoothDeviceInfo::CoreConfigurations coreConfigs); QBluetoothDeviceInfo::CoreConfigurations coreConfigurations() const; void setDeviceUuid(const QBluetoothUuid &uuid); QBluetoothUuid deviceUuid() const; enum class Field /BaseType=Flag/ { None, RSSI, ManufacturerData, %If (Qt_6_3_0 -) ServiceData, %End All, }; typedef QFlags Fields; QList manufacturerIds() const; QMultiHash manufacturerData() const; QByteArray manufacturerData(quint16 manufacturerId) const; bool setManufacturerData(quint16 manufacturerId, const QByteArray &data); void setName(const QString &name); %If (Qt_6_3_0 -) QList serviceIds() const; %End %If (Qt_6_3_0 -) QMultiHash serviceData() const; %End %If (Qt_6_3_0 -) QByteArray serviceData(const QBluetoothUuid &serviceId) const; %End %If (Qt_6_3_0 -) bool setServiceData(const QBluetoothUuid &serviceId, const QByteArray &data); %End }; %End %If (Qt_6_2_0 -) bool operator==(const QBluetoothDeviceInfo &a, const QBluetoothDeviceInfo &b); %End %If (Qt_6_2_0 -) bool operator!=(const QBluetoothDeviceInfo &a, const QBluetoothDeviceInfo &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2621715 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothhostinfo.sip0000644000076500000240000000300514532160401021102 0ustar00philstaff// qbluetoothhostinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothHostInfo { %TypeHeaderCode #include %End public: QBluetoothHostInfo(); QBluetoothHostInfo(const QBluetoothHostInfo &other); ~QBluetoothHostInfo(); QBluetoothAddress address() const; void setAddress(const QBluetoothAddress &address); QString name() const; void setName(const QString &name); }; %End %If (Qt_6_2_0 -) bool operator==(const QBluetoothHostInfo &a, const QBluetoothHostInfo &b); %End %If (Qt_6_2_0 -) bool operator!=(const QBluetoothHostInfo &a, const QBluetoothHostInfo &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2600327 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothlocaldevice.sip0000644000076500000240000000501214532160401021523 0ustar00philstaff// qbluetoothlocaldevice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothLocalDevice : QObject { %TypeHeaderCode #include %End public: enum Pairing { Unpaired, Paired, AuthorizedPaired, }; enum HostMode { HostPoweredOff, HostConnectable, HostDiscoverable, HostDiscoverableLimitedInquiry, }; enum Error { NoError, PairingError, %If (Qt_6_4_0 -) MissingPermissionsError, %End UnknownError, }; explicit QBluetoothLocalDevice(QObject *parent /TransferThis/ = 0); QBluetoothLocalDevice(const QBluetoothAddress &address, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothLocalDevice(); bool isValid() const; void requestPairing(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); QBluetoothLocalDevice::Pairing pairingStatus(const QBluetoothAddress &address) const; void setHostMode(QBluetoothLocalDevice::HostMode mode); QBluetoothLocalDevice::HostMode hostMode() const; void powerOn(); QString name() const; QBluetoothAddress address() const; static QList allDevices(); QList connectedDevices() const; signals: void hostModeStateChanged(QBluetoothLocalDevice::HostMode state); void pairingFinished(const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing pairing); void errorOccurred(QBluetoothLocalDevice::Error error); void deviceConnected(const QBluetoothAddress &address); void deviceDisconnected(const QBluetoothAddress &address); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2611105 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothserver.sip0000644000076500000240000000644014532160401020565 0ustar00philstaff// qbluetoothserver.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothServer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QBluetoothDeviceDiscoveryAgent, &sipType_QBluetoothDeviceDiscoveryAgent, -1, 1}, {sipName_QBluetoothLocalDevice, &sipType_QBluetoothLocalDevice, -1, 2}, {sipName_QBluetoothServer, &sipType_QBluetoothServer, -1, 3}, {sipName_QBluetoothServiceDiscoveryAgent, &sipType_QBluetoothServiceDiscoveryAgent, -1, 4}, {sipName_QBluetoothSocket, &sipType_QBluetoothSocket, -1, 5}, {sipName_QLowEnergyController, &sipType_QLowEnergyController, -1, 6}, {sipName_QLowEnergyService, &sipType_QLowEnergyService, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, UnknownError, PoweredOffError, InputOutputError, ServiceAlreadyRegisteredError, UnsupportedProtocolError, %If (Qt_6_4_0 -) MissingPermissionsError, %End }; QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServer(); void close() /ReleaseGIL/; bool listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0) /ReleaseGIL/; QBluetoothServiceInfo listen(const QBluetoothUuid &uuid, const QString &serviceName = QString()) /ReleaseGIL/; bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; bool hasPendingConnections() const; QBluetoothSocket *nextPendingConnection() /Factory/; QBluetoothAddress serverAddress() const; quint16 serverPort() const; void setSecurityFlags(QBluetooth::SecurityFlags security); QBluetooth::SecurityFlags securityFlags() const; QBluetoothServiceInfo::Protocol serverType() const; QBluetoothServer::Error error() const; signals: void newConnection(); void errorOccurred(QBluetoothServer::Error error); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2534082 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothservicediscoveryagent.sip0000644000076500000240000000464314532160401023671 0ustar00philstaff// qbluetoothservicediscoveryagent.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothServiceDiscoveryAgent : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InputOutputError, PoweredOffError, InvalidBluetoothAdapterError, %If (Qt_6_4_0 -) MissingPermissionsError, %End UnknownError, }; enum DiscoveryMode { MinimalDiscovery, FullDiscovery, }; explicit QBluetoothServiceDiscoveryAgent(QObject *parent /TransferThis/ = 0); QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent /TransferThis/ = 0); virtual ~QBluetoothServiceDiscoveryAgent(); bool isActive() const; QBluetoothServiceDiscoveryAgent::Error error() const; QString errorString() const; QList discoveredServices() const; void setUuidFilter(const QList &uuids); void setUuidFilter(const QBluetoothUuid &uuid); QList uuidFilter() const; bool setRemoteAddress(const QBluetoothAddress &address); QBluetoothAddress remoteAddress() const; public slots: void start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = QBluetoothServiceDiscoveryAgent::MinimalDiscovery); void stop(); void clear(); signals: void serviceDiscovered(const QBluetoothServiceInfo &info); void finished(); void canceled(); void errorOccurred(QBluetoothServiceDiscoveryAgent::Error error); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.262759 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothserviceinfo.sip0000644000076500000240000000637414532160401021601 0ustar00philstaff// qbluetoothserviceinfo.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothServiceInfo { %TypeHeaderCode #include %End public: enum AttributeId { ServiceRecordHandle, ServiceClassIds, ServiceRecordState, ServiceId, ProtocolDescriptorList, BrowseGroupList, LanguageBaseAttributeIdList, ServiceInfoTimeToLive, ServiceAvailability, BluetoothProfileDescriptorList, DocumentationUrl, ClientExecutableUrl, IconUrl, AdditionalProtocolDescriptorList, PrimaryLanguageBase, ServiceName, ServiceDescription, ServiceProvider, }; enum Protocol { UnknownProtocol, L2capProtocol, RfcommProtocol, }; QBluetoothServiceInfo(); QBluetoothServiceInfo(const QBluetoothServiceInfo &other); ~QBluetoothServiceInfo(); bool isValid() const; bool isComplete() const; void setDevice(const QBluetoothDeviceInfo &info); QBluetoothDeviceInfo device() const; QVariant attribute(quint16 attributeId) const; QList attributes() const; bool contains(quint16 attributeId) const; void removeAttribute(quint16 attributeId); QBluetoothServiceInfo::Protocol socketProtocol() const; int protocolServiceMultiplexer() const; int serverChannel() const; QBluetoothServiceInfo::Sequence protocolDescriptor(QBluetoothUuid::ProtocolUuid protocol) const; bool isRegistered() const; bool registerService(const QBluetoothAddress &localAdapter = QBluetoothAddress()); bool unregisterService(); void setAttribute(quint16 attributeId, const QBluetoothUuid &value); void setAttribute(quint16 attributeId, const QBluetoothServiceInfo::Sequence &value); void setAttribute(quint16 attributeId, const QVariant &value); void setServiceName(const QString &name); QString serviceName() const; void setServiceDescription(const QString &description); QString serviceDescription() const; void setServiceProvider(const QString &provider); QString serviceProvider() const; void setServiceAvailability(quint8 availability); quint8 serviceAvailability() const; void setServiceUuid(const QBluetoothUuid &uuid); QBluetoothUuid serviceUuid() const; QList serviceClassUuids() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2501352 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothsocket.sip0000644000076500000240000001201614532160401020543 0ustar00philstaff// qbluetoothsocket.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothSocket : QIODevice { %TypeHeaderCode #include %End public: enum class SocketState { UnconnectedState, ServiceLookupState, ConnectingState, ConnectedState, BoundState, ClosingState, ListeningState, }; enum class SocketError { NoSocketError, UnknownSocketError, RemoteHostClosedError, HostNotFoundError, ServiceNotFoundError, NetworkError, UnsupportedProtocolError, OperationError, %If (Qt_6_4_0 -) MissingPermissionsError, %End }; QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, QObject *parent /TransferThis/ = 0); explicit QBluetoothSocket(QObject *parent /TransferThis/ = 0); virtual ~QBluetoothSocket(); void abort(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; void connectToService(const QBluetoothAddress &address, QBluetoothUuid::ServiceClassUuid uuid, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, quint16 port, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothAddress &address, const QBluetoothUuid &uuid, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void connectToService(const QBluetoothServiceInfo &service, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void disconnectFromService() /ReleaseGIL/; QString localName() const; QBluetoothAddress localAddress() const; quint16 localPort() const; QString peerName() const; QBluetoothAddress peerAddress() const; quint16 peerPort() const; bool setSocketDescriptor(int socketDescriptor, QBluetoothServiceInfo::Protocol socketType, QBluetoothSocket::SocketState state = QBluetoothSocket::SocketState::ConnectedState, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); int socketDescriptor() const; QBluetoothServiceInfo::Protocol socketType() const; QBluetoothSocket::SocketState state() const; QBluetoothSocket::SocketError error() const; QString errorString() const; signals: void connected(); void disconnected(); void errorOccurred(QBluetoothSocket::SocketError error); void stateChanged(QBluetoothSocket::SocketState state); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBluetoothSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; void setSocketState(QBluetoothSocket::SocketState state); void setSocketError(QBluetoothSocket::SocketError error); void doDeviceDiscovery(const QBluetoothServiceInfo &service, QIODeviceBase::OpenMode openMode); public: void setPreferredSecurityFlags(QBluetooth::SecurityFlags flags); QBluetooth::SecurityFlags preferredSecurityFlags() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2584894 PyQt6-6.6.1/sip/QtBluetooth/qbluetoothuuid.sip0000644000076500000240000002251314532160401020224 0ustar00philstaff// qbluetoothuuid.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QBluetoothUuid : QUuid { %TypeHeaderCode #include %End public: enum class ProtocolUuid { Sdp, Udp, Rfcomm, Tcp, TcsBin, TcsAt, Att, Obex, Ip, Ftp, Http, Wsp, Bnep, Upnp, Hidp, HardcopyControlChannel, HardcopyDataChannel, HardcopyNotification, Avctp, Avdtp, Cmtp, UdiCPlain, McapControlChannel, McapDataChannel, L2cap, }; enum class ServiceClassUuid { ServiceDiscoveryServer, BrowseGroupDescriptor, PublicBrowseGroup, SerialPort, LANAccessUsingPPP, DialupNetworking, IrMCSync, ObexObjectPush, OBEXFileTransfer, IrMCSyncCommand, Headset, AudioSource, AudioSink, AV_RemoteControlTarget, AdvancedAudioDistribution, AV_RemoteControl, AV_RemoteControlController, HeadsetAG, PANU, NAP, GN, DirectPrinting, ReferencePrinting, BasicImage, ImagingResponder, ImagingAutomaticArchive, ImagingReferenceObjects, Handsfree, HandsfreeAudioGateway, DirectPrintingReferenceObjectsService, ReflectedUI, BasicPrinting, PrintingStatus, HumanInterfaceDeviceService, HardcopyCableReplacement, HCRPrint, HCRScan, SIMAccess, PhonebookAccessPCE, PhonebookAccessPSE, PhonebookAccess, HeadsetHS, MessageAccessServer, MessageNotificationServer, MessageAccessProfile, GNSS, GNSSServer, Display3D, Glasses3D, Synchronization3D, MPSProfile, MPSService, PnPInformation, GenericNetworking, GenericFileTransfer, GenericAudio, GenericTelephony, VideoSource, VideoSink, VideoDistribution, HDP, HDPSource, HDPSink, GenericAccess, GenericAttribute, ImmediateAlert, LinkLoss, TxPower, CurrentTimeService, ReferenceTimeUpdateService, NextDSTChangeService, Glucose, HealthThermometer, DeviceInformation, HeartRate, PhoneAlertStatusService, BatteryService, BloodPressure, AlertNotificationService, HumanInterfaceDevice, ScanParameters, RunningSpeedAndCadence, CyclingSpeedAndCadence, CyclingPower, LocationAndNavigation, EnvironmentalSensing, BodyComposition, UserData, WeightScale, BondManagement, ContinuousGlucoseMonitoring, }; enum class CharacteristicType { DeviceName, Appearance, PeripheralPrivacyFlag, ReconnectionAddress, PeripheralPreferredConnectionParameters, ServiceChanged, AlertLevel, TxPowerLevel, DateTime, DayOfWeek, DayDateTime, ExactTime256, DSTOffset, TimeZone, LocalTimeInformation, TimeWithDST, TimeAccuracy, TimeSource, ReferenceTimeInformation, TimeUpdateControlPoint, TimeUpdateState, GlucoseMeasurement, BatteryLevel, TemperatureMeasurement, TemperatureType, IntermediateTemperature, MeasurementInterval, BootKeyboardInputReport, SystemID, ModelNumberString, SerialNumberString, FirmwareRevisionString, HardwareRevisionString, SoftwareRevisionString, ManufacturerNameString, IEEE1107320601RegulatoryCertificationDataList, CurrentTime, MagneticDeclination, ScanRefresh, BootKeyboardOutputReport, BootMouseInputReport, GlucoseMeasurementContext, BloodPressureMeasurement, IntermediateCuffPressure, HeartRateMeasurement, BodySensorLocation, HeartRateControlPoint, AlertStatus, RingerControlPoint, RingerSetting, AlertCategoryIDBitMask, AlertCategoryID, AlertNotificationControlPoint, UnreadAlertStatus, NewAlert, SupportedNewAlertCategory, SupportedUnreadAlertCategory, BloodPressureFeature, HIDInformation, ReportMap, HIDControlPoint, Report, ProtocolMode, ScanIntervalWindow, PnPID, GlucoseFeature, RecordAccessControlPoint, RSCMeasurement, RSCFeature, SCControlPoint, CSCMeasurement, CSCFeature, SensorLocation, CyclingPowerMeasurement, CyclingPowerVector, CyclingPowerFeature, CyclingPowerControlPoint, LocationAndSpeed, Navigation, PositionQuality, LNFeature, LNControlPoint, Elevation, Pressure, Temperature, Humidity, TrueWindSpeed, TrueWindDirection, ApparentWindSpeed, ApparentWindDirection, GustFactor, PollenConcentration, UVIndex, Irradiance, Rainfall, WindChill, HeatIndex, DewPoint, DescriptorValueChanged, AerobicHeartRateLowerLimit, AerobicThreshold, Age, AnaerobicHeartRateLowerLimit, AnaerobicHeartRateUpperLimit, AnaerobicThreshold, AerobicHeartRateUpperLimit, DateOfBirth, DateOfThresholdAssessment, EmailAddress, FatBurnHeartRateLowerLimit, FatBurnHeartRateUpperLimit, FirstName, FiveZoneHeartRateLimits, Gender, HeartRateMax, Height, HipCircumference, LastName, MaximumRecommendedHeartRate, RestingHeartRate, SportTypeForAerobicAnaerobicThresholds, ThreeZoneHeartRateLimits, TwoZoneHeartRateLimits, VO2Max, WaistCircumference, Weight, DatabaseChangeIncrement, UserIndex, BodyCompositionFeature, BodyCompositionMeasurement, WeightMeasurement, WeightScaleFeature, UserControlPoint, MagneticFluxDensity2D, MagneticFluxDensity3D, Language, BarometricPressureTrend, }; enum class DescriptorType { UnknownDescriptorType, CharacteristicExtendedProperties, CharacteristicUserDescription, ClientCharacteristicConfiguration, ServerCharacteristicConfiguration, CharacteristicPresentationFormat, CharacteristicAggregateFormat, ValidRange, ExternalReportReference, ReportReference, EnvironmentalSensingConfiguration, EnvironmentalSensingMeasurement, EnvironmentalSensingTriggerSetting, }; QBluetoothUuid(); QBluetoothUuid(QBluetoothUuid::ProtocolUuid uuid); QBluetoothUuid(QBluetoothUuid::ServiceClassUuid uuid); QBluetoothUuid(QBluetoothUuid::CharacteristicType uuid); QBluetoothUuid(QBluetoothUuid::DescriptorType uuid); explicit QBluetoothUuid(quint32 uuid); %If (Qt_6_6_0 -) QBluetoothUuid(quint128 uuid, QSysInfo::Endian order = QSysInfo::BigEndian); %End %If (- Qt_6_6_0) explicit QBluetoothUuid(quint128 uuid); %End explicit QBluetoothUuid(const QString &uuid); QBluetoothUuid(const QBluetoothUuid &uuid); QBluetoothUuid(const QUuid &uuid); ~QBluetoothUuid(); int minimumSize() const; quint16 toUInt16(bool *ok = 0) const; quint32 toUInt32(bool *ok = 0) const; quint128 toUInt128() const; static QString serviceClassToString(QBluetoothUuid::ServiceClassUuid uuid); static QString protocolToString(QBluetoothUuid::ProtocolUuid uuid); static QString characteristicToString(QBluetoothUuid::CharacteristicType uuid); static QString descriptorToString(QBluetoothUuid::DescriptorType uuid); }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &s, const QBluetoothUuid &uuid) /ReleaseGIL/; %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &s, QBluetoothUuid &uuid /Constrained/) /ReleaseGIL/; %End %If (Qt_6_2_0 -) bool operator==(const QBluetoothUuid &a, const QBluetoothUuid &b); %End %If (Qt_6_2_0 -) bool operator!=(const QBluetoothUuid &a, const QBluetoothUuid &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2482524 PyQt6-6.6.1/sip/QtBluetooth/qlowenergyadvertisingdata.sip0000644000076500000240000000443614532160401022441 0ustar00philstaff// qlowenergyadvertisingdata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyAdvertisingData { %TypeHeaderCode #include %End public: QLowEnergyAdvertisingData(); QLowEnergyAdvertisingData(const QLowEnergyAdvertisingData &other); ~QLowEnergyAdvertisingData(); void setLocalName(const QString &name); QString localName() const; static quint16 invalidManufacturerId(); void setManufacturerData(quint16 id, const QByteArray &data); quint16 manufacturerId() const; QByteArray manufacturerData() const; void setIncludePowerLevel(bool doInclude); bool includePowerLevel() const; enum Discoverability { DiscoverabilityNone, DiscoverabilityLimited, DiscoverabilityGeneral, }; void setDiscoverability(QLowEnergyAdvertisingData::Discoverability mode); QLowEnergyAdvertisingData::Discoverability discoverability() const; void setServices(const QList &services); QList services() const; void setRawData(const QByteArray &data); QByteArray rawData() const; void swap(QLowEnergyAdvertisingData &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyAdvertisingData &data1, const QLowEnergyAdvertisingData &data2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2476094 PyQt6-6.6.1/sip/QtBluetooth/qlowenergyadvertisingparameters.sip0000644000076500000240000000567614532160401023702 0ustar00philstaff// qlowenergyadvertisingparameters.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyAdvertisingParameters { %TypeHeaderCode #include %End public: QLowEnergyAdvertisingParameters(); QLowEnergyAdvertisingParameters(const QLowEnergyAdvertisingParameters &other); ~QLowEnergyAdvertisingParameters(); enum Mode { AdvInd, AdvScanInd, AdvNonConnInd, }; void setMode(QLowEnergyAdvertisingParameters::Mode mode); QLowEnergyAdvertisingParameters::Mode mode() const; class AddressInfo { %TypeHeaderCode #include %End public: AddressInfo(const QBluetoothAddress &addr, QLowEnergyController::RemoteAddressType t); AddressInfo(); QBluetoothAddress address; QLowEnergyController::RemoteAddressType type; }; enum FilterPolicy { IgnoreWhiteList, UseWhiteListForScanning, UseWhiteListForConnecting, UseWhiteListForScanningAndConnecting, }; void setWhiteList(const QList &whiteList, QLowEnergyAdvertisingParameters::FilterPolicy policy); QList whiteList() const; QLowEnergyAdvertisingParameters::FilterPolicy filterPolicy() const; void setInterval(quint16 minimum, quint16 maximum); int minimumInterval() const; int maximumInterval() const; void swap(QLowEnergyAdvertisingParameters &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyAdvertisingParameters &p1, const QLowEnergyAdvertisingParameters &p2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyAdvertisingParameters &p1, const QLowEnergyAdvertisingParameters &p2); %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyAdvertisingParameters::AddressInfo &ai1, const QLowEnergyAdvertisingParameters::AddressInfo &ai2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyAdvertisingParameters::AddressInfo &a, const QLowEnergyAdvertisingParameters::AddressInfo &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2519503 PyQt6-6.6.1/sip/QtBluetooth/qlowenergycharacteristic.sip0000644000076500000240000000432614532160401022256 0ustar00philstaff// qlowenergycharacteristic.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyCharacteristic { %TypeHeaderCode #include %End public: enum PropertyType /BaseType=Flag/ { Unknown, Broadcasting, Read, WriteNoResponse, Write, Notify, Indicate, WriteSigned, ExtendedProperty, }; typedef QFlags PropertyTypes; QLowEnergyCharacteristic(); QLowEnergyCharacteristic(const QLowEnergyCharacteristic &other); ~QLowEnergyCharacteristic(); QString name() const; QBluetoothUuid uuid() const; QByteArray value() const; QLowEnergyCharacteristic::PropertyTypes properties() const; QLowEnergyDescriptor descriptor(const QBluetoothUuid &uuid) const; QList descriptors() const; bool isValid() const; QLowEnergyDescriptor clientCharacteristicConfiguration() const; static const QByteArray CCCDDisable; static const QByteArray CCCDEnableNotification; static const QByteArray CCCDEnableIndication; }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2589548 PyQt6-6.6.1/sip/QtBluetooth/qlowenergycharacteristicdata.sip0000644000076500000240000000465014532160401023110 0ustar00philstaff// qlowenergycharacteristicdata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyCharacteristicData { %TypeHeaderCode #include %End public: QLowEnergyCharacteristicData(); QLowEnergyCharacteristicData(const QLowEnergyCharacteristicData &other); ~QLowEnergyCharacteristicData(); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); QByteArray value() const; void setValue(const QByteArray &value); QLowEnergyCharacteristic::PropertyTypes properties() const; void setProperties(QLowEnergyCharacteristic::PropertyTypes properties); QList descriptors() const; void setDescriptors(const QList &descriptors); void addDescriptor(const QLowEnergyDescriptorData &descriptor); void setReadConstraints(QBluetooth::AttAccessConstraints constraints); QBluetooth::AttAccessConstraints readConstraints() const; void setWriteConstraints(QBluetooth::AttAccessConstraints constraints); QBluetooth::AttAccessConstraints writeConstraints() const; void setValueLength(int minimum, int maximum); int minimumValueLength() const; int maximumValueLength() const; bool isValid() const; void swap(QLowEnergyCharacteristicData &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyCharacteristicData &cd1, const QLowEnergyCharacteristicData &cd2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyCharacteristicData &cd1, const QLowEnergyCharacteristicData &cd2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2615893 PyQt6-6.6.1/sip/QtBluetooth/qlowenergyconnectionparameters.sip0000644000076500000240000000346314532160401023512 0ustar00philstaff// qlowenergyconnectionparameters.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyConnectionParameters { %TypeHeaderCode #include %End public: QLowEnergyConnectionParameters(); QLowEnergyConnectionParameters(const QLowEnergyConnectionParameters &other); ~QLowEnergyConnectionParameters(); void setIntervalRange(double minimum, double maximum); double minimumInterval() const; double maximumInterval() const; void setLatency(int latency); int latency() const; void setSupervisionTimeout(int timeout); int supervisionTimeout() const; void swap(QLowEnergyConnectionParameters &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyConnectionParameters &p1, const QLowEnergyConnectionParameters &p2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyConnectionParameters &p1, const QLowEnergyConnectionParameters &p2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2508378 PyQt6-6.6.1/sip/QtBluetooth/qlowenergycontroller.sip0000644000076500000240000001040314532160401021442 0ustar00philstaff// qlowenergycontroller.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyController : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, ConnectionError, AdvertisingError, RemoteHostClosedError, AuthorizationError, %If (Qt_6_4_0 -) MissingPermissionsError, %End %If (Qt_6_5_0 -) RssiReadError, %End }; enum ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, ClosingState, AdvertisingState, }; enum RemoteAddressType { PublicAddress, RandomAddress, }; virtual ~QLowEnergyController(); QBluetoothAddress localAddress() const; QBluetoothAddress remoteAddress() const; QLowEnergyController::ControllerState state() const; QLowEnergyController::RemoteAddressType remoteAddressType() const; void setRemoteAddressType(QLowEnergyController::RemoteAddressType type); void connectToDevice(); void disconnectFromDevice(); void discoverServices(); QList services() const; QLowEnergyService *createServiceObject(const QBluetoothUuid &service, QObject *parent /TransferThis/ = 0) /Factory/; QLowEnergyController::Error error() const; QString errorString() const; QString remoteName() const; int mtu() const; signals: void connected(); void disconnected(); void stateChanged(QLowEnergyController::ControllerState state); void errorOccurred(QLowEnergyController::Error newError); void serviceDiscovered(const QBluetoothUuid &newService); void discoveryFinished(); void connectionUpdated(const QLowEnergyConnectionParameters ¶meters); void mtuChanged(int mtu); public: enum Role { CentralRole, PeripheralRole, }; static QLowEnergyController *createCentral(const QBluetoothDeviceInfo &remoteDevice, QObject *parent /TransferThis/ = 0) /Factory/; static QLowEnergyController *createCentral(const QBluetoothDeviceInfo &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent /TransferThis/ = 0) /Factory/; static QLowEnergyController *createPeripheral(const QBluetoothAddress &localDevice, QObject *parent /TransferThis/ = 0) /Factory/; static QLowEnergyController *createPeripheral(QObject *parent /TransferThis/ = 0) /Factory/; void startAdvertising(const QLowEnergyAdvertisingParameters ¶meters, const QLowEnergyAdvertisingData &advertisingData, const QLowEnergyAdvertisingData &scanResponseData = QLowEnergyAdvertisingData()); void stopAdvertising(); QLowEnergyService *addService(const QLowEnergyServiceData &service, QObject *parent /TransferThis/ = 0) /Factory/; void requestConnectionUpdate(const QLowEnergyConnectionParameters ¶meters); QLowEnergyController::Role role() const; QBluetoothUuid remoteDeviceUuid() const; %If (Qt_6_5_0 -) void readRssi(); %End signals: %If (Qt_6_5_0 -) void rssiRead(qint16 rssi); %End private: QLowEnergyController(const QBluetoothDeviceInfo &remoteDevice, const QBluetoothAddress &localDevice, QObject *parent = 0); QLowEnergyController(const QBluetoothAddress &localDevice, QObject *parent = 0); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2559133 PyQt6-6.6.1/sip/QtBluetooth/qlowenergydescriptor.sip0000644000076500000240000000304014532160401021434 0ustar00philstaff// qlowenergydescriptor.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyDescriptor { %TypeHeaderCode #include %End public: QLowEnergyDescriptor(); QLowEnergyDescriptor(const QLowEnergyDescriptor &other); ~QLowEnergyDescriptor(); bool isValid() const; QByteArray value() const; QBluetoothUuid uuid() const; QString name() const; QBluetoothUuid::DescriptorType type() const; }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyDescriptor &a, const QLowEnergyDescriptor &b); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyDescriptor &a, const QLowEnergyDescriptor &b); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.256982 PyQt6-6.6.1/sip/QtBluetooth/qlowenergydescriptordata.sip0000644000076500000240000000423114532160401022271 0ustar00philstaff// qlowenergydescriptordata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyDescriptorData { %TypeHeaderCode #include %End public: QLowEnergyDescriptorData(); QLowEnergyDescriptorData(const QBluetoothUuid &uuid, const QByteArray &value); QLowEnergyDescriptorData(const QLowEnergyDescriptorData &other); ~QLowEnergyDescriptorData(); QByteArray value() const; void setValue(const QByteArray &value); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); bool isValid() const; void setReadPermissions(bool readable, QBluetooth::AttAccessConstraints constraints = QBluetooth::AttAccessConstraints()); bool isReadable() const; QBluetooth::AttAccessConstraints readConstraints() const; void setWritePermissions(bool writable, QBluetooth::AttAccessConstraints constraints = QBluetooth::AttAccessConstraints()); bool isWritable() const; QBluetooth::AttAccessConstraints writeConstraints() const; void swap(QLowEnergyDescriptorData &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d12); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2541437 PyQt6-6.6.1/sip/QtBluetooth/qlowenergyservice.sip0000644000076500000240000000711514532160401020725 0ustar00philstaff// qlowenergyservice.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyService : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum DiscoveryMode { FullDiscovery, SkipValueDiscovery, }; enum ServiceType /BaseType=Flag/ { PrimaryService, IncludedService, }; typedef QFlags ServiceTypes; enum ServiceError { NoError, OperationError, CharacteristicWriteError, DescriptorWriteError, CharacteristicReadError, DescriptorReadError, UnknownError, }; enum ServiceState { InvalidService, DiscoveryRequired, ServiceDiscovered, LocalService, RemoteService, RemoteServiceDiscovering, RemoteServiceDiscovered, DiscoveringService, }; enum WriteMode { WriteWithResponse, WriteWithoutResponse, WriteSigned, }; virtual ~QLowEnergyService(); QList includedServices() const; QLowEnergyService::ServiceTypes type() const; QLowEnergyService::ServiceState state() const; QLowEnergyCharacteristic characteristic(const QBluetoothUuid &uuid) const; QList characteristics() const; QBluetoothUuid serviceUuid() const; QString serviceName() const; void discoverDetails(QLowEnergyService::DiscoveryMode mode = QLowEnergyService::FullDiscovery); QLowEnergyService::ServiceError error() const; bool contains(const QLowEnergyCharacteristic &characteristic) const; bool contains(const QLowEnergyDescriptor &descriptor) const; void writeCharacteristic(const QLowEnergyCharacteristic &characteristic, const QByteArray &newValue, QLowEnergyService::WriteMode mode = QLowEnergyService::WriteWithResponse); void writeDescriptor(const QLowEnergyDescriptor &descriptor, const QByteArray &newValue); signals: void stateChanged(QLowEnergyService::ServiceState newState); void characteristicChanged(const QLowEnergyCharacteristic &info, const QByteArray &value); void characteristicWritten(const QLowEnergyCharacteristic &info, const QByteArray &value); void descriptorWritten(const QLowEnergyDescriptor &info, const QByteArray &value); void errorOccurred(QLowEnergyService::ServiceError error); public: void readCharacteristic(const QLowEnergyCharacteristic &characteristic); void readDescriptor(const QLowEnergyDescriptor &descriptor); signals: void characteristicRead(const QLowEnergyCharacteristic &info, const QByteArray &value); void descriptorRead(const QLowEnergyDescriptor &info, const QByteArray &value); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2563875 PyQt6-6.6.1/sip/QtBluetooth/qlowenergyservicedata.sip0000644000076500000240000000423114532160401021553 0ustar00philstaff// qlowenergyservicedata.sip generated by MetaSIP // // This file is part of the QtBluetooth Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLowEnergyServiceData { %TypeHeaderCode #include %End public: QLowEnergyServiceData(); QLowEnergyServiceData(const QLowEnergyServiceData &other); ~QLowEnergyServiceData(); enum ServiceType { ServiceTypePrimary, ServiceTypeSecondary, }; QLowEnergyServiceData::ServiceType type() const; void setType(QLowEnergyServiceData::ServiceType type); QBluetoothUuid uuid() const; void setUuid(const QBluetoothUuid &uuid); QList includedServices() const; void setIncludedServices(const QList &services); void addIncludedService(QLowEnergyService *service); QList characteristics() const; void setCharacteristics(const QList &characteristics); void addCharacteristic(const QLowEnergyCharacteristicData &characteristic); bool isValid() const; void swap(QLowEnergyServiceData &other); }; %End %If (Qt_6_2_0 -) bool operator==(const QLowEnergyServiceData &sd1, const QLowEnergyServiceData &sd2); %End %If (Qt_6_2_0 -) bool operator!=(const QLowEnergyServiceData &sd1, const QLowEnergyServiceData &sd2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2549548 PyQt6-6.6.1/sip/QtBluetooth/qpybluetooth_qlist.sip0000644000076500000240000000643614532160401021130 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtBluetooth module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) // QBluetoothServiceInfo::Sequence is actually a sub-class of QList. // Note that QBluetoothServiceInfo::Alternative is identical and they are both // syntactic sugar. By ignoring methods using the latter then everything works // as expected. %MappedType QBluetoothServiceInfo::Sequence /TypeHintIn="Iterable[QVariant]", TypeHintOut="List[QVariant]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QVariant *t = new QVariant(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QVariant, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QBluetoothServiceInfo::Sequence *ql = new QBluetoothServiceInfo::Sequence; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QVariant *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QVariant, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2528849 PyQt6-6.6.1/sip/QtBluetooth/qpybluetooth_qmultihash.sip0000644000076500000240000000770714532160401022155 0ustar00philstaff// This is the SIP interface definition for the QNultiHash based mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) template %MappedType QMultiHash /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMultiHash::const_iterator it = sipCpp->constBegin(); QMultiHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = PyLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } QList<_TYPE_> values = sipCpp->values(it.key()); PyObject *py_values = PyList_New(values.size()); if (!py_values) { Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, py_values); Py_DECREF(py_values); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < values.size(); ++i) { _TYPE_ *v = new _TYPE_(values.at(i)); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(d); return 0; } PyList_SetItem(py_values, i, vobj); } ++it; } return d; %End }; %End %If (Qt_6_3_0 -) template<_TYPE1_, _TYPE2_> %MappedType QMultiHash<_TYPE1_, _TYPE2_> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMultiHash<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QMultiHash<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } QList<_TYPE2_> values = sipCpp->values(it.key()); PyObject *py_values = PyList_New(values.size()); if (!py_values) { Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, py_values); Py_DECREF(py_values); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < values.size(); ++i) { _TYPE2_ *v = new _TYPE2_(values.at(i)); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(d); return 0; } PyList_SetItem(py_values, i, vobj); } ++it; } return d; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2470288 PyQt6-6.6.1/sip/QtBluetooth/qpybluetooth_quint128.sip0000644000076500000240000000624014532160401021360 0ustar00philstaff// This is the SIP interface definition for the quint128 mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) %MappedType quint128 /TypeHint="Tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *t = PyTuple_New(16); if (!t) return 0; #if defined(QT_SUPPORTS_INT128) // This was added in Qt v6.6.0. quint128 value = *sipCpp; #endif for (Py_ssize_t i = 0; i < 16; ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. #if defined(QT_SUPPORTS_INT128) PyObject *pobj = PyLong_FromUnsignedLong(value & 255); value >>= 8; #else PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->data[i]); #endif if (!pobj) { Py_DECREF(t); return 0; } PyTuple_SetItem(t, i, pobj); } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 16) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 16 elements are expected", len); *sipIsErr = 1; return 0; } quint128 *qv = new quint128; for (Py_ssize_t i = 15; i >= 0; --i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete qv; *sipIsErr = 1; return 0; } PyErr_Clear(); unsigned long val = PyLong_AsUnsignedLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "element %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; *sipIsErr = 1; return 0; } #if defined(QT_SUPPORTS_INT128) // This was added in Qt v6.6.0. (*qv) <<= 8; (*qv) |= (val & 255); #else qv->data[i] = val; #endif Py_DECREF(itm); } *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.720185 PyQt6-6.6.1/sip/QtCore/0000755000076500000240000000000014532160403013354 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6364012 PyQt6-6.6.1/sip/QtCore/QtCoremod.sip0000644000076500000240000001435514532160402015775 0ustar00philstaff// QtCoremod.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt6, keyword_arguments="Optional", use_limited_api=True, py_ssize_t_clean=True) %Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0} %Platforms {Android iOS Linux macOS WebAssembly Windows} %Feature PyQt_Accessibility %Feature PyQt_SessionManager %Feature PyQt_SSL %Feature PyQt_qreal_double %Feature PyQt_PrintDialog %Feature PyQt_Printer %Feature PyQt_PrintPreviewWidget %Feature PyQt_PrintPreviewDialog %Feature PyQt_RawFont %Feature PyQt_OpenGL %Feature PyQt_OpenGL_ES2 %Feature PyQt_Process %Feature PyQt_WebChannel %Feature PyQt_DTLS %Feature PyQt_Permissions %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Plugin PyQt6 %DefaultEncoding "ASCII" %Include(name=pyqt-internal.sip5, optional=True) %Include(name=pyqt-gpl.sip5, optional=True) %Include(name=pyqt-commercial.sip5, optional=True) %DefaultSupertype PyQt6.sip.simplewrapper int PYQT_VERSION; const char *PYQT_VERSION_STR; %ModuleCode static int PYQT_VERSION = 0x060601; static const char *PYQT_VERSION_STR = "6.6.1"; %End %Include qglobal.sip %Include qtenvironmentvariables.sip %Include qtversion.sip %Include qnamespace.sip %Include qabstractanimation.sip %Include qabstracteventdispatcher.sip %Include qabstractitemmodel.sip %Include qabstractnativeeventfilter.sip %Include qabstractproxymodel.sip %Include qanimationgroup.sip %Include qbasictimer.sip %Include qbitarray.sip %Include qbuffer.sip %Include qbytearray.sip %Include qbytearrayalgorithms.sip %Include qbytearraymatcher.sip %Include qcalendar.sip %Include qcborcommon.sip %Include qcborstreamreader.sip %Include qcborstreamwriter.sip %Include qcollator.sip %Include qcommandlineoption.sip %Include qcommandlineparser.sip %Include qconcatenatetablesproxymodel.sip %Include qcoreapplication.sip %Include qcoreevent.sip %Include qcryptographichash.sip %Include qdatastream.sip %Include qdatetime.sip %Include qdeadlinetimer.sip %Include qdir.sip %Include qdiriterator.sip %Include qeasingcurve.sip %Include qelapsedtimer.sip %Include qeventloop.sip %Include qfile.sip %Include qfiledevice.sip %Include qfileinfo.sip %Include qfileselector.sip %Include qfilesystemwatcher.sip %Include qidentityproxymodel.sip %Include qiodevice.sip %Include qiodevicebase.sip %Include qitemselectionmodel.sip %Include qjsondocument.sip %Include qjsonvalue.sip %Include qlibrary.sip %Include qlibraryinfo.sip %Include qline.sip %Include qlocale.sip %Include qlockfile.sip %Include qlogging.sip %Include qloggingcategory.sip %Include qmargins.sip %Include qmessageauthenticationcode.sip %Include qmetaobject.sip %Include qmetatype.sip %Include qmimedata.sip %Include qmimedatabase.sip %Include qmimetype.sip %Include qmutex.sip %Include qnumeric.sip %Include qobject.sip %Include qobjectcleanuphandler.sip %Include qobjectdefs.sip %Include qoperatingsystemversion.sip %Include qparallelanimationgroup.sip %Include qpauseanimation.sip %Include qpermissions.sip %Include qpropertyanimation.sip %Include qpluginloader.sip %Include qpoint.sip %Include qprocess.sip %Include qrandom.sip %Include qreadwritelock.sip %Include qrect.sip %Include qregularexpression.sip %Include qresource.sip %Include qrunnable.sip %Include qsavefile.sip %Include qsemaphore.sip %Include qsequentialanimationgroup.sip %Include qsettings.sip %Include qsharedmemory.sip %Include qsignalmapper.sip %Include qsize.sip %Include qsocketnotifier.sip %Include qsortfilterproxymodel.sip %Include qstandardpaths.sip %Include qstorageinfo.sip %Include qstringconverter_base.sip %Include qstringconverter.sip %Include qstringlistmodel.sip %Include qsysinfo.sip %Include qsystemsemaphore.sip %Include qtemporarydir.sip %Include qtemporaryfile.sip %Include qtextboundaryfinder.sip %Include qtextstream.sip %Include qthread.sip %Include qthreadpool.sip %Include qtimeline.sip %Include qtimer.sip %Include qtimezone.sip %Include qtipccommon.sip %Include qtranslator.sip %Include qtransposeproxymodel.sip %Include qtypes.sip %Include qurl.sip %Include qurlquery.sip %Include quuid.sip %Include qvariant.sip %Include qvariantanimation.sip %Include qversionnumber.sip %Include qwaitcondition.sip %Include qxmlstream.sip %Include qanystringview.sip %Include qflags.sip %Include qstring.sip %Include qbytearraylist.sip %Include qjsonobject.sip %Include qpycore_std_pair.sip %Include qpycore_qset.sip %Include qstringview.sip %Include qchar.sip %Include qpycore_qlist.sip %Include qwineventnotifier.sip %Include qstringlist.sip %Include qjsonarray.sip %Include qpycore_virtual_error_handler.sip %Include qpycore_qmap.sip %Include qbytearrayview.sip %Include qpycore_qhash.sip %Include qmutexlocker.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7122984 PyQt6-6.6.1/sip/QtCore/qabstractanimation.sip0000644000076500000240000000477514532160402017771 0ustar00philstaff// qabstractanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractAnimation : QObject { %TypeHeaderCode #include %End public: enum Direction { Forward, Backward, }; enum State { Stopped, Paused, Running, }; enum DeletionPolicy { KeepWhenStopped, DeleteWhenStopped, }; QAbstractAnimation(QObject *parent /TransferThis/ = 0); virtual ~QAbstractAnimation(); QAbstractAnimation::State state() const; QAnimationGroup *group() const; QAbstractAnimation::Direction direction() const; void setDirection(QAbstractAnimation::Direction direction); int currentTime() const; int currentLoopTime() const; int loopCount() const; void setLoopCount(int loopCount); int currentLoop() const; virtual int duration() const = 0; int totalDuration() const; signals: void finished(); void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); void currentLoopChanged(int currentLoop); void directionChanged(QAbstractAnimation::Direction); public slots: void start(QAbstractAnimation::DeletionPolicy policy = QAbstractAnimation::KeepWhenStopped); void pause(); void resume(); void setPaused(bool); void stop(); void setCurrentTime(int msecs); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime) = 0; virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6894562 PyQt6-6.6.1/sip/QtCore/qabstracteventdispatcher.sip0000644000076500000240000000462114532160402021170 0ustar00philstaff// qabstracteventdispatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractEventDispatcher : QObject /Abstract/ { %TypeHeaderCode #include %End public: struct TimerInfo { %TypeHeaderCode #include %End int timerId; int interval; Qt::TimerType timerType; TimerInfo(int id, int i, Qt::TimerType t); }; explicit QAbstractEventDispatcher(QObject *parent /TransferThis/ = 0); virtual ~QAbstractEventDispatcher(); static QAbstractEventDispatcher *instance(QThread *thread = 0); virtual bool processEvents(QEventLoop::ProcessEventsFlags flags) = 0 /ReleaseGIL/; int registerTimer(qint64 interval, Qt::TimerType timerType, QObject *object); virtual void registerTimer(int timerId, qint64 interval, Qt::TimerType timerType, QObject *object) = 0; virtual bool unregisterTimer(int timerId) = 0; virtual bool unregisterTimers(QObject *object) = 0; virtual QList registeredTimers(QObject *object) const = 0; virtual void wakeUp() = 0; virtual void interrupt() = 0; virtual void startingUp(); virtual void closingDown(); virtual int remainingTime(int timerId) = 0; void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); bool filterNativeEvent(const QByteArray &eventType, void *message, qintptr *result /Out/); signals: void aboutToBlock(); void awake(); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.604042 PyQt6-6.6.1/sip/QtCore/qabstractitemmodel.sip0000644000076500000240000003544614532160402017770 0ustar00philstaff// qabstractitemmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QModelIndex { %TypeHeaderCode #include %End public: QModelIndex(); int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; SIP_PYOBJECT internalPointer() const; %MethodCode sipRes = reinterpret_cast(sipCpp->internalPointer()); if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End SIP_PYOBJECT internalId() const /TypeHint="int"/; %MethodCode // Python needs to treat the result as an unsigned value (which may not happen // on 64 bit systems). Instead we get the real value as it is stored (as a // void *) and let Python convert that. sipRes = PyLong_FromVoidPtr(sipCpp->internalPointer()); %End const QAbstractItemModel *model() const; bool isValid() const; QModelIndex parent() const; QModelIndex sibling(int arow, int acolumn) const; QModelIndex siblingAtColumn(int column) const; QModelIndex siblingAtRow(int row) const; bool operator==(const QModelIndex &other) const; bool operator<(const QModelIndex &other) const; bool operator!=(const QModelIndex &other) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; class QPersistentModelIndex { %TypeHeaderCode #include %End public: QPersistentModelIndex(); QPersistentModelIndex(const QModelIndex &index); QPersistentModelIndex(const QPersistentModelIndex &other); ~QPersistentModelIndex(); int row() const; int column() const; QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; QModelIndex parent() const; QModelIndex sibling(int row, int column) const; const QAbstractItemModel *model() const; bool isValid() const; void swap(QPersistentModelIndex &other /Constrained/); operator QModelIndex() const; bool operator<(const QPersistentModelIndex &other) const; bool operator==(const QPersistentModelIndex &other) const; bool operator==(const QModelIndex &other) const; bool operator!=(const QPersistentModelIndex &other) const; bool operator!=(const QModelIndex &other) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; typedef QList QModelIndexList; class QAbstractItemModel : QObject { %TypeHeaderCode #include %End public: enum LayoutChangeHint { NoLayoutChangeHint, VerticalSortHint, HorizontalSortHint, }; explicit QAbstractItemModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemModel(); bool hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0; virtual QModelIndex parent(const QModelIndex &child) const = 0; QObject *parent() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QModelIndex buddy(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith | Qt::MatchWrap)) const; virtual QSize span(const QModelIndex &index) const; signals: void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList &roles = QList()); void headerDataChanged(Qt::Orientation orientation, int first, int last); void layoutAboutToBeChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void layoutChanged(const QList &parents = QList(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint); void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last); void rowsInserted(const QModelIndex &parent, int first, int last); void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void rowsRemoved(const QModelIndex &parent, int first, int last); void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last); void columnsInserted(const QModelIndex &parent, int first, int last); void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last); void columnsRemoved(const QModelIndex &parent, int first, int last); void modelAboutToBeReset(); void modelReset(); public slots: virtual bool submit(); virtual void revert(); protected: void encodeData(const QModelIndexList &indexes, QDataStream &stream) const; bool decodeData(int row, int column, const QModelIndex &parent, QDataStream &stream); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); QModelIndexList persistentIndexList() const; void changePersistentIndex(const QModelIndex &from, const QModelIndex &to); void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to); public: bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); bool removeRow(int row, const QModelIndex &parent = QModelIndex()); bool removeColumn(int column, const QModelIndex &parent = QModelIndex()); virtual Qt::DropActions supportedDragActions() const; virtual QHash roleNames() const; protected: QModelIndex createIndex(int row, int column, SIP_PYOBJECT object = 0) const [QModelIndex (int row, int column, const void *object = 0)]; %MethodCode // The Qt API is broken (and won't be fixed as it would break binary // compatibility) regarding the internal id of a model index on different // architectures (32 vs 64 bits). We choose to work around the breakage as it // is fairly subtle and continues to catch people out. Instead of letting Qt // convert betweed an integer id and a pointer id (the internal format used by // Qt) we let Python do it. void *ptr; if (a2) { // Try and convert it to a Python long and fallback to the object's // address if it fails. ptr = PyLong_AsVoidPtr(a2); if (PyErr_Occurred()) { PyErr_Clear(); ptr = a2; } } else { ptr = 0; } #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = new QModelIndex(sipCpp->createIndex(a0, a1, ptr)); #else sipRes = new QModelIndex(sipCpp->sipProtect_createIndex(a0, a1, ptr)); #endif %End signals: void rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow); void rowsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row); void columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn); void columnsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column); protected: bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow); void endMoveRows(); bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn); void endMoveColumns(); void beginResetModel() /ReleaseGIL/; void endResetModel() /ReleaseGIL/; protected slots: virtual void resetInternalData(); public: virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); bool moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild); bool moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild); enum class CheckIndexOption /BaseType=Flag/ { NoOption, IndexIsValid, DoNotUseParent, ParentIsInvalid, }; typedef QFlags CheckIndexOptions; bool checkIndex(const QModelIndex &index, QAbstractItemModel::CheckIndexOptions options = QAbstractItemModel::CheckIndexOption::NoOption) const; virtual bool clearItemData(const QModelIndex &index); virtual void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const; }; class QAbstractTableModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractTableModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractTableModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::ItemFlags flags(const QModelIndex &index) const; QObject *parent() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: virtual bool hasChildren(const QModelIndex &parent) const; virtual QModelIndex parent(const QModelIndex &child) const; }; class QAbstractListModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractListModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractListModel(); virtual QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::ItemFlags flags(const QModelIndex &index) const; QObject *parent() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; private: virtual int columnCount(const QModelIndex &parent) const; virtual bool hasChildren(const QModelIndex &parent) const; virtual QModelIndex parent(const QModelIndex &child) const; }; class QModelRoleData { %TypeHeaderCode #include %End public: explicit QModelRoleData(int role); int role() const; const QVariant &data() const; void setData(const QVariant &data); void clearData(); }; class QModelRoleDataSpan { %TypeHeaderCode // The capsule destructor for a QModelRoleData array. static void qpycore_gc_modelroledata(PyObject *mrd_obj); %End %TypeCode // The capsule destructor for a QModelRoleData array. static void qpycore_gc_modelroledata(PyObject *mrd_obj) { delete[] reinterpret_cast* >(PyCapsule_GetPointer(mrd_obj, NULL)); } %End public: QModelRoleDataSpan(); QModelRoleDataSpan(QModelRoleData &modelRoleData); QModelRoleDataSpan(QList modelRoleData); %MethodCode PyObject *a0cap = PyCapsule_New(a0, NULL, qpycore_gc_modelroledata); if (a0cap) { sipSetUserObject((sipSimpleWrapper *)sipSelf, a0cap); sipCpp = new QModelRoleDataSpan(*a0); } %End qsizetype size() const; qsizetype length() const /__len__/; QModelRoleData *data() const; QModelRoleData *begin() const; QModelRoleData *end() const; QModelRoleData &operator[](qsizetype index) const; QVariant *dataForRole(int role) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7108037 PyQt6-6.6.1/sip/QtCore/qabstractnativeeventfilter.sip0000644000076500000240000000246714532160402021544 0ustar00philstaff// qabstractnativeeventfilter.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractNativeEventFilter { %TypeHeaderCode #include %End public: QAbstractNativeEventFilter(); virtual ~QAbstractNativeEventFilter(); virtual bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result /Out/) = 0; private: QAbstractNativeEventFilter(const QAbstractNativeEventFilter &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6948974 PyQt6-6.6.1/sip/QtCore/qabstractproxymodel.sip0000644000076500000240000000664514532160402020212 0ustar00philstaff// qabstractproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractProxyModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QAbstractProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QAbstractProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); QAbstractItemModel *sourceModel() const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const = 0; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const = 0; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual bool submit(); virtual void revert(); virtual QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &index) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QModelIndex buddy(const QModelIndex &index) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QSize span(const QModelIndex &index) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; signals: void sourceModelChanged(); public: virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDragActions() const; virtual bool clearItemData(const QModelIndex &index); virtual QHash roleNames() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6145027 PyQt6-6.6.1/sip/QtCore/qanimationgroup.sip0000644000076500000240000000316114532160402017306 0ustar00philstaff// qanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAnimationGroup : QAbstractAnimation { %TypeHeaderCode #include %End public: QAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QAnimationGroup(); QAbstractAnimation *animationAt(int index) const; int animationCount() const; int indexOfAnimation(QAbstractAnimation *animation) const; void addAnimation(QAbstractAnimation *animation /Transfer/); void insertAnimation(int index, QAbstractAnimation *animation /Transfer/); void removeAnimation(QAbstractAnimation *animation /TransferBack/); QAbstractAnimation *takeAnimation(int index) /TransferBack/; void clear(); protected: virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5932016 PyQt6-6.6.1/sip/QtCore/qanystringview.sip0000644000076500000240000000523614532160402017170 0ustar00philstaff// This is the SIP interface definition for the QAnyStringView mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_4_0 -) %MappedType QAnyStringView /AllowNone, TypeHint="Union[QByteArray, QString]",TypeHintValue="''"/ { %TypeHeaderCode #include %End %TypeCode struct PyQtAnyStringState { const sipTypeDef *instance_type; // The instance's generated type. void *instance; // Either the QByteArray or QString. int instance_state; // The state of the instance conversion. }; %End %ConvertToTypeCode if (sipIsErr == NULL) return sipCanConvertToType(sipPy, sipType_QString, 0) || sipCanConvertToType(sipPy, sipType_QByteArray, SIP_NOT_NONE); PyQtAnyStringState *state = new PyQtAnyStringState; if (sipCanConvertToType(sipPy, sipType_QString, 0)) { QString *qs = reinterpret_cast( sipConvertToType(sipPy, sipType_QString, sipTransferObj, 0, &state->instance_state, sipIsErr)); if (*sipIsErr) return 0; *sipCppPtr = new QAnyStringView(*qs); state->instance_type = sipType_QString; state->instance = qs; } else { QByteArray *qba = reinterpret_cast( sipConvertToType(sipPy, sipType_QByteArray, sipTransferObj, SIP_NOT_NONE, &state->instance_state, sipIsErr)); if (*sipIsErr) return 0; *sipCppPtr = new QAnyStringView(*qba); state->instance_type = sipType_QByteArray; state->instance = qba; } *sipUserStatePtr = state; return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(sipCpp->toString()); %End %ReleaseCode delete sipCpp; PyQtAnyStringState *state = reinterpret_cast(sipUserState); sipReleaseType(state->instance, state->instance_type, state->instance_state); delete state; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6167545 PyQt6-6.6.1/sip/QtCore/qbasictimer.sip0000644000076500000240000000247214532160402016400 0ustar00philstaff// qbasictimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBasicTimer { %TypeHeaderCode #include %End public: QBasicTimer(); ~QBasicTimer(); bool isActive() const; int timerId() const; void start(int msec, Qt::TimerType timerType, QObject *obj); void start(int msec, QObject *obj); void stop(); void swap(QBasicTimer &other /Constrained/); private: QBasicTimer(const QBasicTimer &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6926289 PyQt6-6.6.1/sip/QtCore/qbitarray.sip0000644000076500000240000000553514532160402016076 0ustar00philstaff// qbitarray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitArray { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include %End public: QBitArray(); QBitArray(qsizetype size, bool value = false); QBitArray(const QBitArray &other); qsizetype size() const; qsizetype count() const /__len__/; qsizetype count(bool on) const; bool isEmpty() const; bool isNull() const; void resize(qsizetype size); void detach(); bool isDetached() const; void clear(); QBitArray &operator&=(const QBitArray &); QBitArray &operator|=(const QBitArray &); QBitArray &operator^=(const QBitArray &); QBitArray operator~() const; bool operator==(const QBitArray &a) const; bool operator!=(const QBitArray &a) const; void fill(bool val, qsizetype first, qsizetype last); bool fill(bool val, qsizetype size = -1); void truncate(qsizetype pos); bool testBit(qsizetype i) const; void setBit(qsizetype i); void setBit(qsizetype i, bool val); void clearBit(qsizetype i); bool toggleBit(qsizetype i); bool operator[](qsizetype i) const; bool at(qsizetype i) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End void swap(QBitArray &other /Constrained/); SIP_PYOBJECT bits() const /TypeHint="bytes"/; %MethodCode return PyBytes_FromStringAndSize(sipCpp->bits(), (sipCpp->size() + 7) / 8); %End static QBitArray fromBits(const char *data /Encoding="None"/, Py_ssize_t len) [QBitArray (const char *data, qsizetype len)]; quint32 toUInt32(QSysInfo::Endian endianness, bool *ok = 0) const; }; QBitArray operator&(const QBitArray &, const QBitArray &); QBitArray operator|(const QBitArray &, const QBitArray &); QBitArray operator^(const QBitArray &, const QBitArray &); QDataStream &operator<<(QDataStream &, const QBitArray &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QBitArray & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5974813 PyQt6-6.6.1/sip/QtCore/qbuffer.sip0000644000076500000240000000723714532160402015533 0ustar00philstaff// qbuffer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBuffer : QIODevice { %TypeHeaderCode #include %End public: explicit QBuffer(QObject *parent /TransferThis/ = 0); QBuffer(QByteArray *byteArray /Constrained/, QObject *parent /TransferThis/ = 0); virtual ~QBuffer(); QByteArray &buffer(); const QByteArray &data() const; void setBuffer(QByteArray *a /Constrained/); void setData(const QByteArray &data); %If (- Qt_6_5_0) void setData(const char *adata /Array/, int alen /ArraySize/); %End %If (Qt_6_5_0 -) void setData(const char *data /Array/, qsizetype len /ArraySize/); %End virtual bool open(QIODeviceBase::OpenMode openMode); virtual void close(); virtual qint64 size() const; virtual qint64 pos() const; virtual bool seek(qint64 off); virtual bool atEnd() const; virtual bool canReadLine() const; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QBuffer::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QBuffer::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6840982 PyQt6-6.6.1/sip/QtCore/qbytearray.sip0000644000076500000240000003434314532160402016262 0ustar00philstaff// qbytearray.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QByteArray /TypeHintIn="Union[QByteArray, bytes, bytearray, memoryview]"/ { %TypeHeaderCode #include %End %TypeCode // This is needed by __hash__(). #include // Convenience function for converting a QByteArray to a Python str object. static PyObject *QByteArrayToPyStr(QByteArray *ba) { char *data = ba->data(); if (data) // QByteArrays may have embedded '\0's so set the size explicitly. return PyBytes_FromStringAndSize(data, ba->size()); return PyBytes_FromString(""); } %End %ConvertToTypeCode // Accept anything that implements the buffer protocol (including QByteArray // itself). if (sipIsErr == NULL) return sipGetBufferInfo(sipPy, NULL); // If it is already a QByteArray then use it rather than make an unnecessary // copy of the data. if (sipCanConvertToType(sipPy, sipType_QByteArray, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast( sipConvertToType(sipPy, sipType_QByteArray, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } // Create a QByteArray from the data. sipBufferInfoDef buffer_info; if (sipGetBufferInfo(sipPy, &buffer_info) > 0) { // Check that the buffer is compatible with one defined by // PyBuffer_FillInfo() as used by QByteArray and the standard Python byte // objects. if (buffer_info.bi_format == NULL || buffer_info.bi_format[0] == 'B') { *sipCppPtr = new QByteArray( reinterpret_cast(buffer_info.bi_buf), (qsizetype)buffer_info.bi_len); sipReleaseBufferInfo(&buffer_info); // We don't support transfer of ownership. return SIP_TEMPORARY; } PyErr_Format(PyExc_TypeError, "unsupported buffer format '%s'", buffer_info.bi_format); sipReleaseBufferInfo(&buffer_info); } *sipIsErr = 1; return 0; %End %BIGetBufferCode // We may be building against a debug Python build. #if defined(Py_LIMITED_API) Q_UNUSED(sipSelf); sipBuffer->bd_buffer = sipCpp->data(); sipBuffer->bd_length = sipCpp->size(); sipBuffer->bd_readonly = 0; sipRes = 0; #else sipRes = PyBuffer_FillInfo(sipBuffer, sipSelf, sipCpp->data(), sipCpp->size(), 0, sipFlags); #endif %End %PickleCode sipRes = Py_BuildValue("(y#)", sipCpp->data(), static_cast(sipCpp->size())); %End public: QByteArray(); QByteArray(qsizetype size, char c /Encoding="None"/); QByteArray(const QByteArray &a); ~QByteArray(); void resize(qsizetype size); %If (Qt_6_4_0 -) void resize(qsizetype size, char c); %End QByteArray &fill(char c /Encoding="None"/, qsizetype size = -1); void clear(); qsizetype indexOf(QByteArrayView bv, qsizetype from = 0) const; qsizetype lastIndexOf(QByteArrayView bv, qsizetype from = -1) const; qsizetype count(QByteArrayView bv) const; QByteArray left(qsizetype len) const; QByteArray right(qsizetype len) const; QByteArray mid(qsizetype index, qsizetype length = -1) const; QByteArray first(qsizetype n) const; QByteArray last(qsizetype n) const; bool startsWith(QByteArrayView bv) const; bool endsWith(QByteArrayView bv) const; void truncate(qsizetype pos); void chop(qsizetype n); QByteArray toLower() const; QByteArray toUpper() const; QByteArray trimmed() const; QByteArray simplified() const; QByteArray leftJustified(qsizetype width, char fill /Encoding="None"/ = ' ', bool truncate = false) const; QByteArray rightJustified(qsizetype width, char fill /Encoding="None"/ = ' ', bool truncate = false) const; QByteArray &prepend(QByteArrayView a); QByteArray &prepend(qsizetype count, char c /Encoding="None"/); QByteArray &append(QByteArrayView a); QByteArray &append(qsizetype count, char c /Encoding="None"/); QByteArray &insert(qsizetype i, QByteArrayView data); QByteArray &insert(qsizetype i, qsizetype count, char c /Encoding="None"/); QByteArray &remove(qsizetype index, qsizetype len); QByteArray &replace(QByteArrayView before, QByteArrayView after); QByteArray &replace(qsizetype index, qsizetype len, QByteArrayView s); QList split(char sep /Encoding="None"/) const; QByteArray &operator+=(QByteArrayView a); bool operator==(const QString &s2) const; bool operator!=(const QString &s2) const; bool operator<(const QString &s2) const; bool operator>(const QString &s2) const; bool operator<=(const QString &s2) const; bool operator>=(const QString &s2) const; short toShort(bool *ok = 0, int base = 10) const; ushort toUShort(bool *ok = 0, int base = 10) const; int toInt(bool *ok = 0, int base = 10) const; uint toUInt(bool *ok = 0, int base = 10) const; long toLong(bool *ok = 0, int base = 10) const; ulong toULong(bool *ok = 0, int base = 10) const; qlonglong toLongLong(bool *ok = 0, int base = 10) const; qulonglong toULongLong(bool *ok = 0, int base = 10) const; float toFloat(bool *ok = 0) const; double toDouble(bool *ok = 0) const; QByteArray toBase64(QByteArray::Base64Options options = QByteArray::Base64Encoding) const; QByteArray &setNum(double n /Constrained/, char format = 'g', int precision = 6); QByteArray &setNum(SIP_PYOBJECT n /TypeHint="int"/, int base = 10); %MethodCode qlonglong val = sipLong_AsLongLong(a0); if (!PyErr_Occurred()) { sipRes = &sipCpp->setNum(val, a1); } else { // If it is positive then it might fit an unsigned long long. qulonglong uval = sipLong_AsUnsignedLongLong(a0); if (!PyErr_Occurred()) { sipRes = &sipCpp->setNum(uval, a1); } else { sipError = (PyErr_ExceptionMatches(PyExc_OverflowError) ? sipErrorFail : sipErrorContinue); } } %End static QByteArray number(double n /Constrained/, char format = 'g', int precision = 6); static QByteArray number(SIP_PYOBJECT n /TypeHint="int"/, int base = 10); %MethodCode qlonglong val = sipLong_AsLongLong(a0); if (!PyErr_Occurred()) { sipRes = new QByteArray(QByteArray::number(val, a1)); } else { // If it is positive then it might fit an unsigned long long. qulonglong uval = sipLong_AsUnsignedLongLong(a0); if (!PyErr_Occurred()) { sipRes = new QByteArray(QByteArray::number(uval, a1)); } else { sipError = (PyErr_ExceptionMatches(PyExc_OverflowError) ? sipErrorFail : sipErrorContinue); } } %End static QByteArray fromBase64(const QByteArray &base64, QByteArray::Base64Options options = QByteArray::Base64Encoding); static QByteArray fromHex(const QByteArray &hexEncoded); qsizetype count() const; qsizetype length() const; bool isNull() const; qsizetype size() const /__len__/; char at(qsizetype i) const /Encoding="None"/; char operator[](qsizetype i) const /Encoding="None"/; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->size()); if (idx < 0) sipIsErr = 1; else sipRes = sipCpp->operator[]((qsizetype)idx); %End QByteArray operator[](SIP_PYSLICE slice) const; %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->size(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QByteArray(); for (Py_ssize_t i = 0; i < slicelength; ++i) { sipRes->append(sipCpp->at((qsizetype)start)); start += step; } } %End int __contains__(const QByteArrayView bv) const; %MethodCode sipRes = sipCpp->contains(*a0); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __str__() const /TypeHint="str"/; %MethodCode sipRes = QByteArrayToPyStr(sipCpp); PyObject *repr = PyObject_Repr(sipRes); if (repr) { Py_DECREF(sipRes); sipRes = repr; } %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QByteArray()"); } else { PyObject *str = QByteArrayToPyStr(sipCpp); if (str) { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QByteArray(%R)", str); Py_DECREF(str); } } %End QByteArray operator*(int m) const; %MethodCode sipRes = new QByteArray(); while (a0-- > 0) *sipRes += *sipCpp; %End QByteArray &operator*=(int m); %MethodCode QByteArray orig(*sipCpp); sipCpp->clear(); while (a0-- > 0) *sipCpp += orig; %End bool isEmpty() const; SIP_PYOBJECT data() /TypeHint="bytes"/; %MethodCode // QByteArrays may contain embedded '\0's so set the size explicitly. char *res = sipCpp->data(); qsizetype len = sipCpp->size(); if (res) { if ((sipRes = PyBytes_FromStringAndSize(res, (Py_ssize_t)len)) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End qsizetype capacity() const; void reserve(qsizetype size); void squeeze(); void push_back(QByteArrayView a); void push_front(QByteArrayView a); bool contains(QByteArrayView bv) const; QByteArray toHex(char separator /Encoding="None"/ = '\x00') const; QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray(), char percent = '%') const; static QByteArray fromPercentEncoding(const QByteArray &input, char percent = '%'); QByteArray repeated(qsizetype times) const; void swap(QByteArray &other /Constrained/); enum Base64Option /BaseType=Flag/ { Base64Encoding, Base64UrlEncoding, KeepTrailingEquals, OmitTrailingEquals, IgnoreBase64DecodingErrors, AbortOnBase64DecodingErrors, }; typedef QFlags Base64Options; QByteArray chopped(qsizetype len) const; int compare(QByteArrayView a, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool isUpper() const; bool isLower() const; enum class Base64DecodingStatus { Ok, IllegalInputLength, IllegalCharacter, IllegalPadding, }; static QByteArray::FromBase64Result fromBase64Encoding(const QByteArray &base64, QByteArray::Base64Options options = QByteArray::Base64Encoding); class FromBase64Result { %TypeHeaderCode #include %End public: QByteArray decoded; QByteArray::Base64DecodingStatus decodingStatus; void swap(QByteArray::FromBase64Result &other /Constrained/); operator bool() const; %MethodCode // This is required because SIP doesn't handle operator bool() properly. sipRes = sipCpp->operator bool(); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; QByteArray sliced(qsizetype pos) const; QByteArray sliced(qsizetype pos, qsizetype n) const; %If (Qt_6_3_0 -) bool isValidUtf8() const; %End %If (Qt_6_4_0 -) QByteArray percentDecoded(char percent = '%') const; %End %If (Qt_6_5_0 -) QByteArray &removeAt(qsizetype pos); %End %If (Qt_6_5_0 -) QByteArray &removeFirst(); %End %If (Qt_6_5_0 -) QByteArray &removeLast(); %End %If (Qt_6_6_0 -) QByteArray &assign(QByteArrayView v); %End }; bool operator==(const QByteArray &a1, const QByteArray &a2); bool operator!=(const QByteArray &a1, const QByteArray &a2); bool operator<(const QByteArray &a1, const QByteArray &a2); bool operator<=(const QByteArray &a1, const QByteArray &a2); bool operator>(const QByteArray &a1, const QByteArray &a2); bool operator>=(const QByteArray &a1, const QByteArray &a2); %If (Qt_6_5_0 -) QByteArray operator+(const QByteArray &a1, const QByteArray &a2); %End %If (- Qt_6_5_0) const QByteArray operator+(const QByteArray &a1, const QByteArray &a2); %End QDataStream &operator<<(QDataStream &, const QByteArray & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QByteArray & /Constrained/) /ReleaseGIL/; QByteArray qCompress(const uchar *data /Array/, qsizetype nbytes /ArraySize/, int compressionLevel = -1); QByteArray qCompress(const QByteArray &data, int compressionLevel = -1); QByteArray qUncompress(const uchar *data /Array/, qsizetype nbytes /ArraySize/); QByteArray qUncompress(const QByteArray &data); %If (- Qt_6_2_0) quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard = Qt::ChecksumIso3309); %End bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs); bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.614887 PyQt6-6.6.1/sip/QtCore/qbytearrayalgorithms.sip0000644000076500000240000000217014532160402020345 0ustar00philstaff// qbytearrayalgorithms.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) %ModuleCode #include %End %End %If (Qt_6_2_0 -) quint16 qChecksum(QByteArrayView data, Qt::ChecksumType standard = Qt::ChecksumIso3309); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6048536 PyQt6-6.6.1/sip/QtCore/qbytearraylist.sip0000644000076500000240000000564014532160402017154 0ustar00philstaff// This is the SIP interface definition for the QByteArrayList mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QByteArrayList /TypeHintIn="Iterable[QByteArray]", TypeHintOut="List[QByteArray]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QByteArray *t = new QByteArray(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QByteArray, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QByteArrayList *ql = new QByteArrayList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QByteArray *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QByteArray, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'str' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QByteArray, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6994581 PyQt6-6.6.1/sip/QtCore/qbytearraymatcher.sip0000644000076500000240000000356214532160402017625 0ustar00philstaff// qbytearraymatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QByteArrayMatcher { %TypeHeaderCode #include %End public: %If (Qt_6_3_0 -) QByteArrayMatcher(const char *pattern /Encoding="None"/, qsizetype length = -1); %End %If (- Qt_6_3_0) QByteArrayMatcher(const char *pattern /Encoding="None"/, qsizetype length); %End %If (Qt_6_3_0 -) explicit QByteArrayMatcher(QByteArrayView pattern); %End %If (- Qt_6_3_0) %If (Qt_6_4_0 -) explicit QByteArrayMatcher(const QByteArray &pattern); %End %End QByteArrayMatcher(); QByteArrayMatcher(const QByteArrayMatcher &other); ~QByteArrayMatcher(); void setPattern(const QByteArray &pattern); %If (Qt_6_3_0 -) qsizetype indexIn(QByteArrayView data, qsizetype from = 0) const; %End %If (- Qt_6_3_0) qsizetype indexIn(const QByteArray &ba, qsizetype from = 0) const; %End qsizetype indexIn(const char *str /Encoding="None"/, qsizetype len, qsizetype from = 0) const; QByteArray pattern() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7049224 PyQt6-6.6.1/sip/QtCore/qbytearrayview.sip0000644000076500000240000000453714532160402017157 0ustar00philstaff// This is the SIP interface definition for the QByteArrayView mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QByteArrayView /TypeHint="QByteArray"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) { // Note that we choose to use QByteArray's implementation of the buffer // protocol. return sipGetBufferInfo(sipPy, NULL); } sipBufferInfoDef *buffer_info = (sipBufferInfoDef *)sipMalloc( sizeof (sipBufferInfoDef)); if (buffer_info) { if (sipGetBufferInfo(sipPy, buffer_info) > 0) { // Check that the buffer is compatible with one defined by // PyBuffer_FillInfo() as used by QByteArray and the standard Python // byte objects. if (buffer_info->bi_format == NULL || buffer_info->bi_format[0] == 'B') { *sipCppPtr = new QByteArrayView( reinterpret_cast( buffer_info->bi_buf), (qsizetype)buffer_info->bi_len); *sipUserStatePtr = buffer_info; // We don't support transfer of ownership. return SIP_TEMPORARY; } PyErr_Format(PyExc_TypeError, "unsupported buffer format '%s'", buffer_info->bi_format); sipReleaseBufferInfo(buffer_info); } sipFree(buffer_info); } *sipIsErr = 1; return 0; %End %ReleaseCode delete sipCpp; sipBufferInfoDef *buffer_info = reinterpret_cast(sipUserState); sipReleaseBufferInfo(buffer_info); sipFree(buffer_info); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5943782 PyQt6-6.6.1/sip/QtCore/qcalendar.sip0000644000076500000240000000641014532160402016023 0ustar00philstaff// qcalendar.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCalendar { %TypeHeaderCode #include %End public: enum { Unspecified, }; struct YearMonthDay { %TypeHeaderCode #include %End YearMonthDay(); YearMonthDay(int year, int month = 1, int day = 1); bool isValid() const; int year; int month; int day; }; enum class System { Gregorian, Julian, Milankovic, Jalali, IslamicCivil, }; QCalendar(); explicit QCalendar(QCalendar::System system); %If (Qt_6_4_0 -) explicit QCalendar(QAnyStringView name); %End %If (- Qt_6_4_0) explicit QCalendar(const char *name /Encoding="Latin-1"/) [(QLatin1String name)]; %MethodCode // This is currently the only occurence of a QLatin1String argument. sipCpp = new QCalendar(QLatin1String(a0)); %End %End int daysInMonth(int month, int year = QCalendar::Unspecified) const; int daysInYear(int year) const; int monthsInYear(int year) const; bool isDateValid(int year, int month, int day) const; bool isLeapYear(int year) const; bool isGregorian() const; bool isLunar() const; bool isLuniSolar() const; bool isSolar() const; bool isProleptic() const; bool hasYearZero() const; int maximumDaysInMonth() const; int minimumDaysInMonth() const; int maximumMonthsInYear() const; QString name() const; QDate dateFromParts(int year, int month, int day) const; QDate dateFromParts(const QCalendar::YearMonthDay &parts) const; QCalendar::YearMonthDay partsFromDate(QDate date) const; int dayOfWeek(QDate date) const; QString monthName(const QLocale &locale, int month, int year = QCalendar::Unspecified, QLocale::FormatType format = QLocale::LongFormat) const; QString standaloneMonthName(const QLocale &locale, int month, int year = QCalendar::Unspecified, QLocale::FormatType format = QLocale::LongFormat) const; QString weekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const; QString standaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const; QString dateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const; static QStringList availableCalendars(); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.656335 PyQt6-6.6.1/sip/QtCore/qcborcommon.sip0000644000076500000240000000462414532160402016415 0ustar00philstaff// qcborcommon.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End // // Handwritten implementation of QCborSimpleType. // Cast-XML has a bug which means that it places this definition in qmetatype.h // (where it is first declared). enum class QCborSimpleType { False /PyName=False_/, True /PyName=True_/, Null, Undefined }; struct QCborError { %TypeHeaderCode #include %End enum Code { UnknownError, AdvancePastEnd, InputOutputError, GarbageAtEnd, EndOfFile, UnexpectedBreak, UnknownType, IllegalType, IllegalNumber, IllegalSimpleType, InvalidUtf8String, DataTooLarge, NestingTooDeep, UnsupportedType, NoError, }; // Error code access // This class is currently undocumented. Access to the error code is via a // cast (which SIP doesn't support) or a badly named instance variable. To be // safe we implement a more Qt-typical solution. QCborError::Code code() const; %MethodCode sipRes = sipCpp->c; %End QString toString() const; }; enum class QCborKnownTags { DateTimeString, UnixTime_t, PositiveBignum, NegativeBignum, Decimal, Bigfloat, COSE_Encrypt0, COSE_Mac0, COSE_Sign1, ExpectedBase64url, ExpectedBase64, ExpectedBase16, EncodedCbor, Url, Base64url, Base64, RegularExpression, MimeMessage, Uuid, COSE_Encrypt, COSE_Mac, COSE_Sign, Signature, }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7001848 PyQt6-6.6.1/sip/QtCore/qcborstreamreader.sip0000644000076500000240000000746614532160402017612 0ustar00philstaff// qcborstreamreader.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCborStreamReader { %TypeHeaderCode #include %End public: enum Type { UnsignedInteger, NegativeInteger, ByteString, ByteArray, TextString, String, Array, Map, Tag, SimpleType, HalfFloat, Float16, Float, Double, Invalid, }; enum StringResultCode { EndOfString, Ok, Error, }; QCborStreamReader(); explicit QCborStreamReader(const QByteArray &data); explicit QCborStreamReader(QIODevice *device); ~QCborStreamReader(); void setDevice(QIODevice *device); QIODevice *device() const; void addData(const QByteArray &data); void reparse(); void clear(); void reset(); QCborError lastError(); qint64 currentOffset() const; bool isValid() const; int containerDepth() const; QCborStreamReader::Type parentContainerType() const; bool hasNext() const; bool next(int maxRecursion = 10000); QCborStreamReader::Type type() const; bool isUnsignedInteger() const; bool isNegativeInteger() const; bool isInteger() const; bool isByteArray() const; bool isString() const; bool isArray() const; bool isMap() const; bool isTag() const; bool isSimpleType() const; bool isFloat16() const; bool isFloat() const; bool isDouble() const; bool isInvalid() const; bool isSimpleType(QCborSimpleType st) const; bool isFalse() const; bool isTrue() const; bool isBool() const; bool isNull() const; bool isUndefined() const; bool isLengthKnown() const; quint64 length() const /__len__/; bool isContainer() const; bool enterContainer(); bool leaveContainer(); SIP_PYTUPLE readString() /TypeHint="Tuple[str, QCborStreamReader.StringResultCode]"/; %MethodCode QCborStreamReader::StringResult res = sipCpp->readString(); QString *qs = new QString; if (res.status != QCborStreamReader::Error) *qs = res.data; sipRes = sipBuildResult(NULL, "NF", qs, sipType_QString, NULL, res.status, sipType_QCborStreamReader_StringResultCode); %End SIP_PYTUPLE readByteArray() /TypeHint="Tuple[QByteArray, QCborStreamReader.StringResultCode]"/; %MethodCode QCborStreamReader::StringResult res = sipCpp->readByteArray(); QByteArray *qba = new QByteArray; if (res.status != QCborStreamReader::Error) *qba = res.data; sipRes = sipBuildResult(NULL, "NF", qba, sipType_QByteArray, NULL, res.status, sipType_QCborStreamReader_StringResultCode); %End bool toBool() const; quint64 toUnsignedInteger() const; QCborSimpleType toSimpleType() const; double toDouble() const; qint64 toInteger() const; private: QCborStreamReader(const QCborStreamReader &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6813416 PyQt6-6.6.1/sip/QtCore/qcborstreamwriter.sip0000644000076500000240000000465314532160402017657 0ustar00philstaff// qcborstreamwriter.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCborStreamWriter { %TypeHeaderCode #include %End public: explicit QCborStreamWriter(QIODevice *device); explicit QCborStreamWriter(QByteArray *data /Constrained/); ~QCborStreamWriter(); void setDevice(QIODevice *device); QIODevice *device() const; void append(const QByteArray &ba); void append(QStringView str); void append(QCborKnownTags tag); void append(QCborSimpleType st); void append(bool b /Constrained/); void append(double d /Constrained/); void append(SIP_PYOBJECT /TypeHint="int"/); %MethodCode static PyObject *zero = 0; if (!zero) zero = PyLong_FromLong(0); if (PyObject_RichCompareBool(a0, zero, Py_LT) > 0) { PyErr_Clear(); qint64 val = sipLong_AsLongLong(a0); if (PyErr_Occurred()) sipError = sipErrorFail; else sipCpp->append(val); } else { PyErr_Clear(); quint64 val = sipLong_AsUnsignedLongLong(a0); if (PyErr_Occurred()) sipError = sipErrorFail; else sipCpp->append(val); } %End void appendNull(); void appendUndefined(); void startArray(); void startArray(quint64 count); bool endArray(); void startMap(); void startMap(quint64 count); bool endMap(); private: QCborStreamWriter(const QCborStreamWriter &); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.640753 PyQt6-6.6.1/sip/QtCore/qchar.sip0000644000076500000240000000306714532160402015174 0ustar00philstaff// This is the SIP interface definition for the QChar mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QChar /TypeHint="str",TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) return PyUnicode_Check(sipPy); // TODO: review replacing with something more efficient. QString qs = qpycore_PyObject_AsQString(sipPy); if (qs.size() != 1) { PyErr_SetString(PyExc_ValueError, "string of length 1 expected"); *sipIsErr = 1; return 0; } *sipCppPtr = new QChar(qs.at(0)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode // TODO: replace with... // return PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, sipCpp, 1); return qpycore_PyObject_FromQString(QString(*sipCpp)); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6134984 PyQt6-6.6.1/sip/QtCore/qcollator.sip0000644000076500000240000000416114532160402016072 0ustar00philstaff// qcollator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCollatorSortKey { %TypeHeaderCode #include %End public: QCollatorSortKey(const QCollatorSortKey &other); ~QCollatorSortKey(); void swap(QCollatorSortKey &other /Constrained/); int compare(const QCollatorSortKey &key) const; private: QCollatorSortKey(); }; bool operator<(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs); class QCollator { %TypeHeaderCode #include %End public: QCollator(); explicit QCollator(const QLocale &locale); QCollator(const QCollator &); ~QCollator(); void swap(QCollator &other /Constrained/); void setLocale(const QLocale &locale); QLocale locale() const; Qt::CaseSensitivity caseSensitivity() const; void setCaseSensitivity(Qt::CaseSensitivity cs); void setNumericMode(bool on); bool numericMode() const; void setIgnorePunctuation(bool on); bool ignorePunctuation() const; int compare(const QString &s1, const QString &s2) const; QCollatorSortKey sortKey(const QString &string) const; %If (Qt_6_3_0 -) static int defaultCompare(QStringView s1, QStringView s2); %End %If (Qt_6_3_0 -) static QCollatorSortKey defaultSortKey(QStringView key); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6845999 PyQt6-6.6.1/sip/QtCore/qcommandlineoption.sip0000644000076500000240000000423314532160402017772 0ustar00philstaff// qcommandlineoption.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommandLineOption { %TypeHeaderCode #include %End public: explicit QCommandLineOption(const QString &name); explicit QCommandLineOption(const QStringList &names); QCommandLineOption(const QString &name, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); QCommandLineOption(const QStringList &names, const QString &description, const QString &valueName = QString(), const QString &defaultValue = QString()); QCommandLineOption(const QCommandLineOption &other); ~QCommandLineOption(); void swap(QCommandLineOption &other /Constrained/); QStringList names() const; void setValueName(const QString &name); QString valueName() const; void setDescription(const QString &description); QString description() const; void setDefaultValue(const QString &defaultValue); void setDefaultValues(const QStringList &defaultValues); QStringList defaultValues() const; enum Flag /BaseType=Flag/ { HiddenFromHelp, ShortOptionStyle, }; typedef QFlags Flags; QCommandLineOption::Flags flags() const; void setFlags(QCommandLineOption::Flags aflags); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6931574 PyQt6-6.6.1/sip/QtCore/qcommandlineparser.sip0000644000076500000240000000541114532160402017755 0ustar00philstaff// qcommandlineparser.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommandLineParser { %TypeHeaderCode #include %End public: QCommandLineParser(); ~QCommandLineParser(); enum SingleDashWordOptionMode { ParseAsCompactedShortOptions, ParseAsLongOptions, }; void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode parsingMode); bool addOption(const QCommandLineOption &commandLineOption); QCommandLineOption addVersionOption(); QCommandLineOption addHelpOption(); void setApplicationDescription(const QString &description); QString applicationDescription() const; void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()); void clearPositionalArguments(); void process(const QStringList &arguments) /ReleaseGIL/; void process(const QCoreApplication &app) /ReleaseGIL/; bool parse(const QStringList &arguments); QString errorText() const; bool isSet(const QString &name) const; QString value(const QString &name) const; QStringList values(const QString &name) const; bool isSet(const QCommandLineOption &option) const; QString value(const QCommandLineOption &option) const; QStringList values(const QCommandLineOption &option) const; QStringList positionalArguments() const; QStringList optionNames() const; QStringList unknownOptionNames() const; void showHelp(int exitCode = 0) /ReleaseGIL/; QString helpText() const; bool addOptions(const QList &options); void showVersion(); enum OptionsAfterPositionalArgumentsMode { ParseAsOptions, ParseAsPositionalArguments, }; void setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode mode); private: QCommandLineParser(const QCommandLineParser &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6920638 PyQt6-6.6.1/sip/QtCore/qconcatenatetablesproxymodel.sip0000644000076500000240000000776614532160402022073 0ustar00philstaff// qconcatenatetablesproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QConcatenateTablesProxyModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QConcatenateTablesProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QConcatenateTablesProxyModel(); void addSourceModel(QAbstractItemModel *sourceModel /GetWrapper/); %MethodCode // We want to keep a reference to the model but this is in addition to the // existing ones and does not replace them - so we can't use /KeepReference/. sipCpp->addSourceModel(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (!user) { user = PyList_New(0); sipSetUserObject((sipSimpleWrapper *)sipSelf, user); } if (user) PyList_Append(user, a0Wrapper); %End void removeSourceModel(QAbstractItemModel *sourceModel /GetWrapper/); %MethodCode // Discard the extra model reference that we took in addSourceModel(). sipCpp->removeSourceModel(a0); // Use the user object as a list of the references. PyObject *user = sipGetUserObject((sipSimpleWrapper *)sipSelf); if (user) { Py_ssize_t i = 0; // Note that we deal with an object appearing in the list more than once. while (i < PyList_Size(user)) if (PyList_GetItem(user, i) == a0Wrapper) PyList_SetSlice(user, i, i + 1, NULL); else ++i; } %End QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QMap itemData(const QModelIndex &proxyIndex) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QSize span(const QModelIndex &index) const; QList sourceModels() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6226616 PyQt6-6.6.1/sip/QtCore/qcoreapplication.sip0000644000076500000240000002756314532160402017442 0ustar00philstaff// qcoreapplication.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QCoreApplication : QObject { %TypeHeaderCode #include %End public: QCoreApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = QCoreApplication::ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt6_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQCoreApplication(nargc, argv, QT_VERSION); Py_END_ALLOW_THREADS // Now modify the original list. pyqt6_update_argv_list(a0, argc, argv); } %End virtual ~QCoreApplication() /ReleaseGIL/; %MethodCode pyqt6_cleanup_qobjects(); %End static void setOrganizationDomain(const QString &orgDomain); static QString organizationDomain(); static void setOrganizationName(const QString &orgName); static QString organizationName(); static void setApplicationName(const QString &application); static QString applicationName(); static QStringList arguments(); static QCoreApplication *instance(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; static void processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) /ReleaseGIL/; static void processEvents(QEventLoop::ProcessEventsFlags flags, int maxtime) /ReleaseGIL/; static bool sendEvent(QObject *receiver, QEvent *event) /ReleaseGIL/; static void postEvent(QObject *receiver, QEvent *event /Transfer/, int priority = Qt::NormalEventPriority); static void sendPostedEvents(QObject *receiver = 0, int eventType = 0) /ReleaseGIL/; static void removePostedEvents(QObject *receiver, int eventType = 0); virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; static bool startingUp(); static bool closingDown(); static QString applicationDirPath(); static QString applicationFilePath(); static void setLibraryPaths(const QStringList &); static QStringList libraryPaths(); static void addLibraryPath(const QString &); static void removeLibraryPath(const QString &); static bool installTranslator(QTranslator *messageFile); static bool removeTranslator(QTranslator *messageFile); static QString translate(const char *context, const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1); static void setAttribute(Qt::ApplicationAttribute attribute, bool on = true); static bool testAttribute(Qt::ApplicationAttribute attribute); public slots: static void quit(); %If (Qt_6_1_0 -) static void exit(int returnCode = 0); %End public: %If (- Qt_6_1_0) static void exit(int returnCode = 0); %End signals: void aboutToQuit(); protected: virtual bool event(QEvent *); public: static void setApplicationVersion(const QString &version); static QString applicationVersion(); static qint64 applicationPid(); static QAbstractEventDispatcher *eventDispatcher(); static void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); static bool isQuitLockEnabled(); static void setQuitLockEnabled(bool enabled); void installNativeEventFilter(QAbstractNativeEventFilter *filterObj); void removeNativeEventFilter(QAbstractNativeEventFilter *filterObj); static void setSetuidAllowed(bool allow); static bool isSetuidAllowed(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode // Make sure the QCoreApplication is destroyed. delete sipCpp; %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) Qt::PermissionStatus checkPermission(const QPermission &permission); %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) void requestPermission(const QPermission &permission, SIP_PYCALLABLE handler /TypeHint="Callable[[QPermission], None]"/) /ReleaseGIL/; %MethodCode // Make sure the callable doesn't get garbage collected until it is invoked. Py_INCREF(a1); Py_BEGIN_ALLOW_THREADS sipCpp->requestPermission(*a0, [a1](const QPermission &arg0) { SIP_BLOCK_THREADS PyObject *res; res = sipCallMethod(NULL, a1, "N", new QPermission(arg0), sipType_QPermission, NULL); Py_DECREF(a1); if (!res) pyqt6_err_print(); else Py_DECREF(res); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End %End %End }; void qAddPostRoutine(SIP_PYCALLABLE); %MethodCode // Add it to the list of post routines if it already exists. if (qtcore_PostRoutines != NULL) { // See if there is an empty slot. bool app = true; for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) if (PyList_GetItem(qtcore_PostRoutines, i) == Py_None) { Py_INCREF(a0); PyList_SetItem(qtcore_PostRoutines, i, a0); app = false; break; } if (app && PyList_Append(qtcore_PostRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PostRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SetItem(qtcore_PostRoutines, 0, a0); qAddPostRoutine(qtcore_CallPostRoutines); } else { sipIsErr = 1; } %End void qRemovePostRoutine(SIP_PYCALLABLE); %MethodCode // Remove it from the list of post routines if it exists. if (qtcore_PostRoutines != NULL) for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) if (PyList_GetItem(qtcore_PostRoutines, i) == a0) { Py_INCREF(Py_None); PyList_SetItem(qtcore_PostRoutines, i, Py_None); break; } %End void qAddPreRoutine(SIP_PYCALLABLE routine /TypeHint="Callable[[], None]"/); %MethodCode // Add it to the list of pre routines if it already exists. if (qtcore_PreRoutines != NULL) { if (PyList_Append(qtcore_PreRoutines, a0) < 0) sipIsErr = 1; } else if ((qtcore_PreRoutines = PyList_New(1)) != NULL) { Py_INCREF(a0); PyList_SetItem(qtcore_PreRoutines, 0, a0); qAddPreRoutine(qtcore_CallPreRoutines); } else { sipIsErr = 1; } %End // Module code needed by qAddPreRoutine, qAddPostRoutine() and qRemovePostRoutine(). %ModuleCode // The list of Python pre routines. static PyObject *qtcore_PreRoutines = NULL; // Call all of the registered Python pre routines. static void qtcore_CallPreRoutines() { for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PreRoutines); ++i) { PyObject *pr = PyList_GetItem(qtcore_PreRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } // The list of Python post routines. static PyObject *qtcore_PostRoutines = NULL; // Call all of the registered Python post routines. static void qtcore_CallPostRoutines() { for (Py_ssize_t i = 0; i < PyList_Size(qtcore_PostRoutines); ++i) { PyObject *pr = PyList_GetItem(qtcore_PostRoutines, i); if (pr != Py_None) { PyObject *res = PyObject_CallObject(pr, NULL); Py_XDECREF(res); } } } %End void pyqtRemoveInputHook(); %MethodCode // Clear the Python input hook installed when the module was initialised. PyOS_InputHook = 0; %End void pyqtRestoreInputHook(); %MethodCode // Restore the input hook. PyOS_InputHook = qtcore_input_hook; %End %ModuleCode #include #include #include #if defined(Q_OS_WIN) #include #include #else #include #endif // This is the input hook that will process events while the interpreter is // waiting for interactive input. extern "C" {static int qtcore_input_hook();} static int qtcore_input_hook() { QCoreApplication *app = QCoreApplication::instance(); if (app && app->thread() == QThread::currentThread()) { QEventLoop loop; #if defined(Q_OS_WIN) QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); while (!_kbhit()) { // The delay is based on feedback from users. timer.start(35); loop.exec(); timer.stop(); } QObject::disconnect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); #else QSocketNotifier notifier(0, QSocketNotifier::Read, 0); QObject::connect(¬ifier, SIGNAL(activated(int)), &loop, SLOT(quit())); loop.exec(); QObject::disconnect(¬ifier, SIGNAL(activated(int)), &loop, SLOT(quit())); #endif } return 0; } %End %PostInitialisationCode // Process events from the input hook. PyOS_InputHook = qtcore_input_hook; %End %ExportedTypeHintCode # Support for QDate, QDateTime and QTime. import datetime # Convenient type aliases. PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal] PYQT_SLOT = typing.Union[typing.Callable[..., Any], QtCore.pyqtBoundSignal] %End %TypeHintCode # Support for QDate, QDateTime and QTime. import datetime # Support for new-style signals and slots. class pyqtSignal: signatures = ... # type: typing.Tuple[str, ...] def __init__(self, *types: typing.Any, name: str = ...) -> None: ... @typing.overload def __get__(self, instance: None, owner: typing.Type['QObject']) -> 'pyqtSignal': ... @typing.overload def __get__(self, instance: 'QObject', owner: typing.Type['QObject']) -> 'pyqtBoundSignal': ... class pyqtBoundSignal: signal = ... # type: str def __getitem__(self, key: object) -> 'pyqtBoundSignal': ... def connect(self, slot: 'PYQT_SLOT') -> 'QMetaObject.Connection': ... @typing.overload def disconnect(self) -> None: ... @typing.overload def disconnect(self, slot: typing.Union['PYQT_SLOT', 'QMetaObject.Connection']) -> None: ... def emit(self, *args: typing.Any) -> None: ... FuncT = typing.TypeVar('FuncT', bound=typing.Callable) def pyqtSlot(*types, name: typing.Optional[str] = ..., result: typing.Optional[str] = ...) -> typing.Callable[[FuncT], FuncT]: ... # For QObject.findChild() and QObject.findChildren(). QObjectT = typing.TypeVar('QObjectT', bound=QObject) # Convenient type aliases. PYQT_SIGNAL = typing.Union[pyqtSignal, pyqtBoundSignal] PYQT_SLOT = typing.Union[typing.Callable[..., Any], pyqtBoundSignal] %End ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.63098 PyQt6-6.6.1/sip/QtCore/qcoreevent.sip0000644000076500000240000001574114532160402016253 0ustar00philstaff// qcoreevent.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEvent /NoDefaultCtors,Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::Timer: sipType = sipType_QTimerEvent; break; case QEvent::ChildAdded: case QEvent::ChildPolished: case QEvent::ChildRemoved: sipType = sipType_QChildEvent; break; case QEvent::DynamicPropertyChange: sipType = sipType_QDynamicPropertyChangeEvent; break; default: sipType = 0; } %End public: enum Type /BaseType=IntEnum/ { None, Timer, MouseButtonPress, MouseButtonRelease, MouseButtonDblClick, MouseMove, KeyPress, KeyRelease, FocusIn, FocusOut, Enter, Leave, Paint, Move, Resize, Show, Hide, Close, Quit, ParentChange, ParentAboutToChange, ThreadChange, WindowActivate, WindowDeactivate, ShowToParent, HideToParent, Wheel, WindowTitleChange, WindowIconChange, ApplicationWindowIconChange, ApplicationFontChange, ApplicationLayoutDirectionChange, ApplicationPaletteChange, PaletteChange, Clipboard, MetaCall, SockAct, WinEventAct, DeferredDelete, DragEnter, DragMove, DragLeave, Drop, ChildAdded, ChildPolished, ChildRemoved, PolishRequest, Polish, LayoutRequest, UpdateRequest, UpdateLater, ContextMenu, InputMethod, TabletMove, LocaleChange, LanguageChange, LayoutDirectionChange, TabletPress, TabletRelease, OkRequest, IconDrag, FontChange, EnabledChange, ActivationChange, StyleChange, IconTextChange, ModifiedChange, MouseTrackingChange, WindowBlocked, WindowUnblocked, WindowStateChange, ToolTip, WhatsThis, StatusTip, ActionChanged, ActionAdded, ActionRemoved, FileOpen, Shortcut, ShortcutOverride, WhatsThisClicked, ToolBarChange, ApplicationActivate, ApplicationActivated, ApplicationDeactivate, ApplicationDeactivated, QueryWhatsThis, EnterWhatsThisMode, LeaveWhatsThisMode, ZOrderChange, HoverEnter, HoverLeave, HoverMove, GraphicsSceneMouseMove, GraphicsSceneMousePress, GraphicsSceneMouseRelease, GraphicsSceneMouseDoubleClick, GraphicsSceneContextMenu, GraphicsSceneHoverEnter, GraphicsSceneHoverMove, GraphicsSceneHoverLeave, GraphicsSceneHelp, GraphicsSceneDragEnter, GraphicsSceneDragMove, GraphicsSceneDragLeave, GraphicsSceneDrop, GraphicsSceneWheel, GraphicsSceneResize, GraphicsSceneMove, KeyboardLayoutChange, DynamicPropertyChange, TabletEnterProximity, TabletLeaveProximity, NonClientAreaMouseMove, NonClientAreaMouseButtonPress, NonClientAreaMouseButtonRelease, NonClientAreaMouseButtonDblClick, MacSizeChange, ContentsRectChange, CursorChange, ToolTipChange, GrabMouse, UngrabMouse, GrabKeyboard, UngrabKeyboard, StateMachineSignal, StateMachineWrapped, TouchBegin, TouchUpdate, TouchEnd, NativeGesture, RequestSoftwareInputPanel, CloseSoftwareInputPanel, WinIdChange, Gesture, GestureOverride, FocusAboutToChange, ScrollPrepare, Scroll, Expose, InputMethodQuery, OrientationChange, TouchCancel, PlatformPanel, ApplicationStateChange, ReadOnlyChange, PlatformSurface, TabletTrackingChange, GraphicsSceneLeave, EnterEditFocus, LeaveEditFocus, %If (Qt_6_6_0 -) DevicePixelRatioChange, %End User, MaxUser, }; explicit QEvent(QEvent::Type type); QEvent(int type) /Deprecated, NoDerived/; %MethodCode // This overload allows an int to be passed as is rather than being wrapped in // a QEvent.Type. This was usefull before enums supported missing members and // is now deprecated. sipCpp = new sipQEvent(static_cast(a0)); %End virtual ~QEvent(); QEvent::Type type() const; bool spontaneous() const; virtual void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); static int registerEventType(int hint = -1); bool isInputEvent() const; bool isPointerEvent() const; bool isSinglePointEvent() const; virtual QEvent *clone() const /Factory/; }; class QTimerEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QTimerEvent(int timerId); virtual ~QTimerEvent(); int timerId() const; virtual QTimerEvent *clone() const /Factory/; }; class QChildEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QChildEvent(QEvent::Type type, QObject *child); QChildEvent(int type, QObject *child) /NoDerived/; %MethodCode sipCpp = new sipQChildEvent(static_cast(a0), a1); %End virtual ~QChildEvent(); QObject *child() const; bool added() const; bool polished() const; bool removed() const; virtual QChildEvent *clone() const /Factory/; }; class QDynamicPropertyChangeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QDynamicPropertyChangeEvent(const QByteArray &name); virtual ~QDynamicPropertyChangeEvent(); QByteArray propertyName() const; virtual QDynamicPropertyChangeEvent *clone() const /Factory/; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.629139 PyQt6-6.6.1/sip/QtCore/qcryptographichash.sip0000644000076500000240000000476214532160402020004 0ustar00philstaff// qcryptographichash.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCryptographicHash { %TypeHeaderCode #include %End public: enum Algorithm { Md4, Md5, Sha1, Sha224, Sha256, Sha384, Sha512, Sha3_224, Sha3_256, Sha3_384, Sha3_512, Keccak_224, Keccak_256, Keccak_384, Keccak_512, Blake2b_160, Blake2b_256, Blake2b_384, Blake2b_512, Blake2s_128, Blake2s_160, Blake2s_224, Blake2s_256, }; explicit QCryptographicHash(QCryptographicHash::Algorithm method); ~QCryptographicHash(); void reset(); %If (Qt_6_3_0 -) void addData(QByteArrayView data); %End %If (- Qt_6_3_0) void addData(const QByteArray &data); %End void addData(const char *data /Array/, qsizetype length /ArraySize/); bool addData(QIODevice *device); QByteArray result() const; %If (Qt_6_3_0 -) QByteArrayView resultView() const; %End %If (Qt_6_3_0 -) static QByteArray hash(QByteArrayView data, QCryptographicHash::Algorithm method); %End %If (- Qt_6_3_0) static QByteArray hash(const QByteArray &data, QCryptographicHash::Algorithm method); %End static int hashLength(QCryptographicHash::Algorithm method); %If (Qt_6_5_0 -) void swap(QCryptographicHash &other /Constrained/); %End %If (Qt_6_5_0 -) QCryptographicHash::Algorithm algorithm() const; %End %If (Qt_6_5_0 -) static bool supportsAlgorithm(QCryptographicHash::Algorithm method); %End private: QCryptographicHash(const QCryptographicHash &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6353111 PyQt6-6.6.1/sip/QtCore/qdatastream.sip0000644000076500000240000002544314532160402016406 0ustar00philstaff// qdatastream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataStream : QIODeviceBase { %TypeHeaderCode #include %End public: enum Version /BaseType=IntEnum/ { Qt_1_0, Qt_2_0, Qt_2_1, Qt_3_0, Qt_3_1, Qt_3_3, Qt_4_0, Qt_4_1, Qt_4_2, Qt_4_3, Qt_4_4, Qt_4_5, Qt_4_6, Qt_4_7, Qt_4_8, Qt_4_9, Qt_5_0, Qt_5_1, Qt_5_2, Qt_5_3, Qt_5_4, Qt_5_5, Qt_5_6, Qt_5_7, Qt_5_8, Qt_5_9, Qt_5_10, Qt_5_11, Qt_5_12, Qt_5_13, Qt_5_14, Qt_5_15, Qt_6_0, %If (Qt_6_1_0 -) Qt_6_1, %End %If (Qt_6_2_0 -) Qt_6_2, %End %If (Qt_6_3_0 -) Qt_6_3, %End %If (Qt_6_4_0 -) Qt_6_4, %End %If (Qt_6_5_0 -) Qt_6_5, %End %If (Qt_6_6_0 -) Qt_6_6, %End }; enum ByteOrder { BigEndian, LittleEndian, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; enum FloatingPointPrecision { SinglePrecision, DoublePrecision, }; QDataStream(); explicit QDataStream(QIODevice *); QDataStream(QByteArray * /Constrained/, QIODeviceBase::OpenMode flags); QDataStream(const QByteArray &); ~QDataStream(); QIODevice *device() const; void setDevice(QIODevice *); bool atEnd() const; QDataStream::Status status() const; void setStatus(QDataStream::Status status); void resetStatus(); QDataStream::FloatingPointPrecision floatingPointPrecision() const; void setFloatingPointPrecision(QDataStream::FloatingPointPrecision precision); QDataStream::ByteOrder byteOrder() const; void setByteOrder(QDataStream::ByteOrder); int version() const; void setVersion(int); SIP_PYOBJECT readBytes() /ReleaseGIL,TypeHint="bytes"/; %MethodCode char *s; uint l; Py_BEGIN_ALLOW_THREADS sipCpp->readBytes(s, l); Py_END_ALLOW_THREADS if ((sipRes = PyBytes_FromStringAndSize(s, l)) == NULL) sipIsErr = 1; if (s) delete[] s; %End SIP_PYOBJECT readRawData(int len) /Encoding="None",ReleaseGIL,TypeHint="bytes"/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; int len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readRawData(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End QDataStream &writeBytes(SIP_PYBUFFER) /ReleaseGIL/; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS sipRes = &sipCpp->writeBytes(reinterpret_cast(bi.bi_buf), bi.bi_len); Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End int writeRawData(SIP_PYBUFFER) /ReleaseGIL/; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->writeRawData(reinterpret_cast(bi.bi_buf), bi.bi_len); Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End int skipRawData(int len) /ReleaseGIL/; void startTransaction(); bool commitTransaction(); void rollbackTransaction(); void abortTransaction(); // Extra methods to give explicit control over the simple data types being read and written. int readInt() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint8 readInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint8 readUInt8() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint16 readInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint16 readUInt16() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint32 readInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint32 readUInt32() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End qint64 readInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End quint64 readUInt64() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End bool readBool() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End float readFloat() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End double readDouble() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp >> sipRes; Py_END_ALLOW_THREADS %End SIP_PYOBJECT readString() /ReleaseGIL,TypeHint="bytes"/; %MethodCode // Note that this should really be called readCString(). char *s; Py_BEGIN_ALLOW_THREADS *sipCpp >> s; Py_END_ALLOW_THREADS if (s) { sipRes = PyBytes_FromString(s); delete[] s; } else { sipRes = Py_None; Py_INCREF(Py_None); } %End void writeInt(int i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt8(qint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt8(quint8 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt16(qint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt16(quint16 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt32(qint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt32(quint32 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeInt64(qint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeUInt64(quint64 i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeBool(bool i) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeFloat(float f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeDouble(double f) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End void writeString(const char *str /Encoding="None"/) /ReleaseGIL/; %MethodCode // Note that this should really be called writeCString(). Py_BEGIN_ALLOW_THREADS *sipCpp << a0; Py_END_ALLOW_THREADS %End QString readQString() /ReleaseGIL/; %MethodCode sipRes = new QString; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQString(const QString &qstr) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QStringList readQStringList() /ReleaseGIL/; %MethodCode sipRes = new QStringList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQStringList(const QStringList &qstrlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariant readQVariant() /ReleaseGIL/; %MethodCode sipRes = new QVariant; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariant(const QVariant &qvar) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantList readQVariantList() /ReleaseGIL/; %MethodCode sipRes = new QVariantList; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantList(const QVariantList &qvarlst) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantMap readQVariantMap() /ReleaseGIL/; %MethodCode sipRes = new QVariantMap; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantMap(const QVariantMap &qvarmap) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End QVariantHash readQVariantHash() /ReleaseGIL/; %MethodCode sipRes = new QVariantHash; Py_BEGIN_ALLOW_THREADS *sipCpp >> *sipRes; Py_END_ALLOW_THREADS %End void writeQVariantHash(const QVariantHash &qvarhash) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS *sipCpp << *a0; Py_END_ALLOW_THREADS %End private: QDataStream(const QDataStream &); }; QDataStream &operator>>(QDataStream &s, QKeyCombination &combination /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, QKeyCombination combination) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6771982 PyQt6-6.6.1/sip/QtCore/qdatetime.sip0000644000076500000240000003603114532160402016050 0ustar00philstaff// qdatetime.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDate /TypeHintIn="Union[QDate, datetime.date]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python date object whenever a QDate is expected. if (sipIsErr == NULL) return (sipGetDate(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QDate, SIP_NO_CONVERTORS)); sipDateDef py_date; if (sipGetDate(sipPy, &py_date)) { *sipCppPtr = new QDate(py_date.pd_year, py_date.pd_month, py_date.pd_day); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDate, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue("iii", sipCpp->year(), sipCpp->month(), sipCpp->day()); %End public: QDate(); QDate(int y, int m, int d); QDate(int y, int m, int d, QCalendar cal); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QDate()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QDate(%i, %i, %i)", sipCpp->year(), sipCpp->month(), sipCpp->day()); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDate() const /TypeHint="datetime.date"/; %MethodCode // Convert to a Python date object. sipDateDef py_date; py_date.pd_year = sipCpp->year(); py_date.pd_month = sipCpp->month(); py_date.pd_day = sipCpp->day(); sipRes = sipFromDate(&py_date); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int year() const; int year(QCalendar cal) const; int month() const; int month(QCalendar cal) const; int day() const; int day(QCalendar cal) const; int dayOfWeek() const; int dayOfWeek(QCalendar cal) const; int dayOfYear() const; int dayOfYear(QCalendar cal) const; int daysInMonth() const; int daysInMonth(QCalendar cal) const; int daysInYear() const; int daysInYear(QCalendar cal) const; int weekNumber(int *yearNumber = 0) const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QDate addDays(qint64 days) const; QDate addMonths(int months) const; QDate addMonths(int months, QCalendar cal) const; QDate addYears(int years) const; QDate addYears(int years, QCalendar cal) const; static QDate currentDate(); static QDate fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static bool isValid(int y, int m, int d); static bool isLeapYear(int year); static QDate fromJulianDay(qint64 jd); qint64 toJulianDay() const; bool setDate(int year, int month, int date); void getDate(int *year, int *month, int *day) const; QDateTime startOfDay(Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0) const; QDateTime startOfDay(const QTimeZone &zone) const; QDateTime endOfDay(Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0) const; QDateTime endOfDay(const QTimeZone &zone) const; bool setDate(int year, int month, int day, QCalendar cal); QString toString(const QString &format, QCalendar cal = QCalendar()) const; qint64 daysTo(QDate d) const; static QDate fromString(const QString &string, const QString &format, QCalendar cal = QCalendar()); }; class QTime /TypeHintIn="Union[QTime, datetime.time]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python time object whenever a QTime is expected. if (sipIsErr == NULL) return (sipGetTime(sipPy, 0) || sipCanConvertToType(sipPy, sipType_QTime, SIP_NO_CONVERTORS)); sipTimeDef py_time; if (sipGetTime(sipPy, &py_time)) { *sipCppPtr = new QTime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->hour(), sipCpp->minute(), sipCpp->second(), sipCpp->msec()); %End public: QTime(); QTime(int h, int m, int second = 0, int msec = 0); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QTime()"); } else { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QTime(%i, %i", sipCpp->hour(), sipCpp->minute()); if (sipCpp->second() || sipCpp->msec()) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->second())); if (sipCpp->msec()) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", sipCpp->msec())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyTime() const /TypeHint="datetime.time"/; %MethodCode // Convert to a Python time object. sipTimeDef py_time; py_time.pt_hour = sipCpp->hour(); py_time.pt_minute = sipCpp->minute(); py_time.pt_second = sipCpp->second(); py_time.pt_microsecond = sipCpp->msec() * 1000; sipRes = sipFromTime(&py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; int hour() const; int minute() const; int second() const; int msec() const; QString toString(Qt::DateFormat format = Qt::TextDate) const; QString toString(const QString &format) const; bool setHMS(int h, int m, int s, int msec = 0); QTime addSecs(int secs) const; QTime addMSecs(int ms) const; static QTime currentTime(); static QTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); static QTime fromString(const QString &s, const QString &format); static bool isValid(int h, int m, int s, int msec = 0); static QTime fromMSecsSinceStartOfDay(int msecs); int msecsSinceStartOfDay() const; int secsTo(QTime t) const; int msecsTo(QTime t) const; }; class QDateTime /TypeHintIn="Union[QDateTime, datetime.datetime]"/ { %TypeHeaderCode #include %End %TypeCode #include %End %ConvertToTypeCode // Allow a Python datetime object whenever a QDateTime is expected. if (sipIsErr == NULL) return (sipGetDateTime(sipPy, 0, 0) || sipCanConvertToType(sipPy, sipType_QDateTime, SIP_NO_CONVERTORS)); sipDateDef py_date; sipTimeDef py_time; if (sipGetDateTime(sipPy, &py_date, &py_time)) { QDate qdate(py_date.pd_year, py_date.pd_month, py_date.pd_day); QTime qtime(py_time.pt_hour, py_time.pt_minute, py_time.pt_second, py_time.pt_microsecond / 1000); QDateTime *qdt = new QDateTime(qdate, qtime); *sipCppPtr = qdt; return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QDateTime, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = Py_BuildValue("iiiiiiii", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute(), qt.second(), qt.msec(), (int)sipCpp->timeSpec()); %End public: QDateTime(); QDateTime(const QDateTime &other); QDateTime(int year, int month, int day, int hour, int minute, int second = 0, int msec = 0, int timeSpec = 0) /NoDerived/; %MethodCode // This ctor is mainly supplied to allow pickling. QDate qd(a0, a1, a2); QTime qt(a3, a4, a5, a6); sipCpp = new QDateTime(qd, qt, (Qt::TimeSpec)a7); %End QDateTime(QDate date, QTime time, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); QDateTime(QDate date, QTime time, const QTimeZone &timeZone); ~QDateTime(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QDateTime()"); } else { QDate qd = sipCpp->date(); QTime qt = sipCpp->time(); sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QDateTime(%i, %i, %i, %i, %i", qd.year(), qd.month(), qd.day(), qt.hour(), qt.minute()); if (qt.second() || qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.second())); if (qt.msec() || sipCpp->timeSpec() != Qt::LocalTime) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", %i", qt.msec())); if (sipCpp->timeSpec() != Qt::LocalTime) qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat(", PyQt6.QtCore.Qt.TimeSpec(%i)", (int)sipCpp->timeSpec())); } } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); } %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(sipCpp->toString(Qt::ISODate)); %End SIP_PYOBJECT toPyDateTime() const /TypeHint="datetime.datetime"/; %MethodCode // Convert to a Python datetime object. sipDateDef py_date; QDate qd = sipCpp->date(); py_date.pd_year = qd.year(); py_date.pd_month = qd.month(); py_date.pd_day = qd.day(); sipTimeDef py_time; QTime qt = sipCpp->time(); py_time.pt_hour = qt.hour(); py_time.pt_minute = qt.minute(); py_time.pt_second = qt.second(); py_time.pt_microsecond = qt.msec() * 1000; sipRes = sipFromDateTime(&py_date, &py_time); %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End bool isValid() const; QDate date() const; QTime time() const; Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); QString toString(Qt::DateFormat format = Qt::TextDate) const; QDateTime addDays(qint64 days) const; QDateTime addMonths(int months) const; QDateTime addYears(int years) const; QDateTime addSecs(qint64 secs) const; QDateTime addMSecs(qint64 msecs) const; QDateTime toTimeSpec(Qt::TimeSpec spec) const; QDateTime toLocalTime() const; QDateTime toUTC() const; qint64 daysTo(const QDateTime &) const; qint64 secsTo(const QDateTime &) const; static QDateTime currentDateTime(); %If (Qt_6_5_0 -) static QDateTime currentDateTime(const QTimeZone &zone); %End static QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate); qint64 toMSecsSinceEpoch() const; void setMSecsSinceEpoch(qint64 msecs); qint64 msecsTo(const QDateTime &) const; static QDateTime currentDateTimeUtc(); static qint64 currentMSecsSinceEpoch(); void swap(QDateTime &other /Constrained/); int offsetFromUtc() const; QTimeZone timeZone() const; QString timeZoneAbbreviation() const; bool isDaylightTime() const; void setOffsetFromUtc(int offsetSeconds); void setTimeZone(const QTimeZone &toZone); QDateTime toOffsetFromUtc(int offsetSeconds) const; QDateTime toTimeZone(const QTimeZone &toZone) const; static QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone); static QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); qint64 toSecsSinceEpoch() const; void setSecsSinceEpoch(qint64 secs); static QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0); static QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone); static qint64 currentSecsSinceEpoch(); enum class YearRange { First, Last, }; void setDate(QDate date); void setTime(QTime time); QString toString(const QString &format, QCalendar cal = QCalendar()) const; static QDateTime fromString(const QString &string, const QString &format, QCalendar cal = QCalendar()); %If (Qt_6_5_0 -) QTimeZone timeRepresentation() const; %End }; QDataStream &operator<<(QDataStream &, QDate) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDate & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, QTime) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTime & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QDateTime &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QDateTime & /Constrained/) /ReleaseGIL/; bool operator==(const QDateTime &lhs, const QDateTime &rhs); bool operator==(QTime lhs, QTime rhs); bool operator==(QDate lhs, QDate rhs); bool operator!=(const QDateTime &lhs, const QDateTime &rhs); bool operator!=(QTime lhs, QTime rhs); bool operator!=(QDate lhs, QDate rhs); bool operator<(const QDateTime &lhs, const QDateTime &rhs); bool operator<(QTime lhs, QTime rhs); bool operator<(QDate lhs, QDate rhs); bool operator<=(const QDateTime &lhs, const QDateTime &rhs); bool operator<=(QTime lhs, QTime rhs); bool operator<=(QDate lhs, QDate rhs); bool operator>(const QDateTime &lhs, const QDateTime &rhs); bool operator>(QTime lhs, QTime rhs); bool operator>(QDate lhs, QDate rhs); bool operator>=(const QDateTime &lhs, const QDateTime &rhs); bool operator>=(QTime lhs, QTime rhs); bool operator>=(QDate lhs, QDate rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6807795 PyQt6-6.6.1/sip/QtCore/qdeadlinetimer.sip0000644000076500000240000000552314532160402017064 0ustar00philstaff// qdeadlinetimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDeadlineTimer { %TypeHeaderCode #include %End public: %If (- Qt_6_6_0) enum ForeverConstant { Forever, }; %End %If (Qt_6_6_0 -) enum class ForeverConstant { Forever, }; %End QDeadlineTimer(Qt::TimerType type = Qt::CoarseTimer); QDeadlineTimer(QDeadlineTimer::ForeverConstant, Qt::TimerType type = Qt::CoarseTimer); QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer); void swap(QDeadlineTimer &other /Constrained/); bool isForever() const; bool hasExpired() const; Qt::TimerType timerType() const; void setTimerType(Qt::TimerType type); qint64 remainingTime() const; qint64 remainingTimeNSecs() const; void setRemainingTime(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer); void setPreciseRemainingTime(qint64 secs, qint64 nsecs = 0, Qt::TimerType type = Qt::CoarseTimer); qint64 deadline() const; qint64 deadlineNSecs() const; void setDeadline(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer); void setPreciseDeadline(qint64 secs, qint64 nsecs = 0, Qt::TimerType type = Qt::CoarseTimer); static QDeadlineTimer addNSecs(QDeadlineTimer dt, qint64 nsecs); static QDeadlineTimer current(Qt::TimerType type = Qt::CoarseTimer); QDeadlineTimer &operator+=(qint64 msecs); QDeadlineTimer &operator-=(qint64 msecs); }; bool operator==(QDeadlineTimer d1, QDeadlineTimer d2); bool operator!=(QDeadlineTimer d1, QDeadlineTimer d2); bool operator<(QDeadlineTimer d1, QDeadlineTimer d2); bool operator<=(QDeadlineTimer d1, QDeadlineTimer d2); bool operator>(QDeadlineTimer d1, QDeadlineTimer d2); bool operator>=(QDeadlineTimer d1, QDeadlineTimer d2); QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs); QDeadlineTimer operator+(qint64 msecs, QDeadlineTimer dt); QDeadlineTimer operator-(QDeadlineTimer dt, qint64 msecs); qint64 operator-(QDeadlineTimer dt1, QDeadlineTimer dt2); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6380944 PyQt6-6.6.1/sip/QtCore/qdir.sip0000644000076500000240000001465314532160402015040 0ustar00philstaff// qdir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDir { %TypeHeaderCode #include %End public: enum Filter /BaseType=Flag/ { Dirs, Files, Drives, NoSymLinks, AllEntries, TypeMask, Readable, Writable, Executable, PermissionMask, Modified, Hidden, System, AccessMask, AllDirs, CaseSensitive, NoDotAndDotDot, NoFilter, NoDot, NoDotDot, }; typedef QFlags Filters; enum SortFlag /BaseType=Flag/ { Name, Time, Size, Unsorted, SortByMask, DirsFirst, Reversed, IgnoreCase, DirsLast, LocaleAware, Type, NoSort, }; typedef QFlags SortFlags; QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = QDir::SortFlags(QDir::Name | QDir::IgnoreCase), QDir::Filters filters = QDir::AllEntries); QDir(const QDir &); QDir(const QString &path = QString()); ~QDir(); void setPath(const QString &path); QString path() const; QString absolutePath() const; QString canonicalPath() const; QString dirName() const; QString filePath(const QString &fileName) const; QString absoluteFilePath(const QString &fileName) const; QString relativeFilePath(const QString &fileName) const; bool cd(const QString &dirName); bool cdUp(); QStringList nameFilters() const; void setNameFilters(const QStringList &nameFilters); QDir::Filters filter() const; void setFilter(QDir::Filters filter); QDir::SortFlags sorting() const; void setSorting(QDir::SortFlags sort); %If (Qt_6_5_0 -) qsizetype count() const /__len__/; %MethodCode sipRes = sipCpp->count(Qt::Disambiguated); %End %End %If (- Qt_6_5_0) uint count() const /__len__/; %End %If (Qt_6_5_0 -) QString operator[](qsizetype) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QString(sipCpp->operator[]((qsizetype)idx)); %End %End %If (- Qt_6_5_0) QString operator[](int) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QString(sipCpp->operator[]((int)idx)); %End %End QStringList operator[](SIP_PYSLICE) const; %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QStringList(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QString &) const; %MethodCode sipRes = bool(sipCpp->entryList().contains(*a0)); %End static QStringList nameFiltersFromString(const QString &nameFilter); QStringList entryList(QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QFileInfoList entryInfoList(QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort) const; %If (Qt_6_3_0 -) bool mkdir(const QString &dirName, QFileDevice::Permissions permissions) const; %End bool mkdir(const QString &dirName) const; bool rmdir(const QString &dirName) const; bool mkpath(const QString &dirPath) const; bool rmpath(const QString &dirPath) const; bool isReadable() const; bool exists() const; bool isRoot() const; static bool isRelativePath(const QString &path); static bool isAbsolutePath(const QString &path); bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool operator==(const QDir &dir) const; bool operator!=(const QDir &dir) const; bool remove(const QString &fileName); bool rename(const QString &oldName, const QString &newName); bool exists(const QString &name) const; void refresh() const; static QFileInfoList drives(); static QChar separator(); static bool setCurrent(const QString &path); static QDir current(); static QString currentPath(); static QDir home(); static QString homePath(); static QDir root(); static QString rootPath(); static QDir temp(); static QString tempPath(); static bool match(const QStringList &filters, const QString &fileName); static bool match(const QString &filter, const QString &fileName); static QString cleanPath(const QString &path); static QString toNativeSeparators(const QString &pathName); static QString fromNativeSeparators(const QString &pathName); static void setSearchPaths(const QString &prefix, const QStringList &searchPaths); static void addSearchPath(const QString &prefix, const QString &path); static QStringList searchPaths(const QString &prefix); bool removeRecursively(); void swap(QDir &other /Constrained/); static QChar listSeparator(); bool isEmpty(QDir::Filters filters = QDir::Filters(QDir::AllEntries | QDir::NoDotAndDotDot)) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5962398 PyQt6-6.6.1/sip/QtCore/qdiriterator.sip0000644000076500000240000000374314532160402016610 0ustar00philstaff// qdiriterator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDirIterator { %TypeHeaderCode #include %End public: enum IteratorFlag /BaseType=Flag/ { NoIteratorFlags, FollowSymlinks, Subdirectories, }; typedef QFlags IteratorFlags; QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags); QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags); QDirIterator(const QString &path, QDir::Filters filter, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags); QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags); ~QDirIterator(); QString next(); %If (Qt_6_3_0 -) QFileInfo nextFileInfo(); %End bool hasNext() const; QString fileName() const; QString filePath() const; QFileInfo fileInfo() const; QString path() const; private: QDirIterator(const QDirIterator &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6019547 PyQt6-6.6.1/sip/QtCore/qeasingcurve.sip0000644000076500000240000001501714532160402016570 0ustar00philstaff// qeasingcurve.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEasingCurve /TypeHintIn="Union[QEasingCurve, QEasingCurve.Type]"/ { %TypeHeaderCode #include %End %TypeCode // The EasingFunction callback doesn't provide a context so we support a fixed // number of different functions. const int ec_nr_custom_types = 10; struct ec_custom_type { PyObject *py_func; QEasingCurve::EasingFunction func; }; static qreal ec_call(int ec, qreal v); static qreal ec_func_0(qreal v) { return ec_call(0, v); } static qreal ec_func_1(qreal v) { return ec_call(1, v); } static qreal ec_func_2(qreal v) { return ec_call(2, v); } static qreal ec_func_3(qreal v) { return ec_call(3, v); } static qreal ec_func_4(qreal v) { return ec_call(4, v); } static qreal ec_func_5(qreal v) { return ec_call(5, v); } static qreal ec_func_6(qreal v) { return ec_call(6, v); } static qreal ec_func_7(qreal v) { return ec_call(7, v); } static qreal ec_func_8(qreal v) { return ec_call(8, v); } static qreal ec_func_9(qreal v) { return ec_call(9, v); } static ec_custom_type ec_custom_types[ec_nr_custom_types] = { {0, ec_func_0}, {0, ec_func_1}, {0, ec_func_2}, {0, ec_func_3}, {0, ec_func_4}, {0, ec_func_5}, {0, ec_func_6}, {0, ec_func_7}, {0, ec_func_8}, {0, ec_func_9}, }; static qreal ec_call(int ec, qreal v) { PyObject *res_obj; qreal res = 0.0; SIP_BLOCK_THREADS res_obj = PyObject_CallFunction(ec_custom_types[ec].py_func, (char *)"(d)", (double)v); if (res_obj) { PyErr_Clear(); res = PyFloat_AsDouble(res_obj); Py_DECREF(res_obj); if (PyErr_Occurred()) res_obj = 0; } if (!res_obj) pyqt6_err_print(); SIP_UNBLOCK_THREADS return res; } %End %ConvertToTypeCode // Allow a QEasingCurve::Type whenever a QEasingCurve is expected. bool is_ec_type = true; int ec_type = sipConvertToEnum(sipPy, sipType_QEasingCurve_Type); if (PyErr_Occurred()) { PyErr_Clear(); is_ec_type = false; } if (sipIsErr == NULL) return (is_ec_type || sipCanConvertToType(sipPy, sipType_QEasingCurve, SIP_NO_CONVERTORS)); if (is_ec_type) { *sipCppPtr = new QEasingCurve(static_cast(ec_type)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QEasingCurve, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: enum Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, InCubic, OutCubic, InOutCubic, OutInCubic, InQuart, OutQuart, InOutQuart, OutInQuart, InQuint, OutQuint, InOutQuint, OutInQuint, InSine, OutSine, InOutSine, OutInSine, InExpo, OutExpo, InOutExpo, OutInExpo, InCirc, OutCirc, InOutCirc, OutInCirc, InElastic, OutElastic, InOutElastic, OutInElastic, InBack, OutBack, InOutBack, OutInBack, InBounce, OutBounce, InOutBounce, OutInBounce, InCurve, OutCurve, SineCurve, CosineCurve, BezierSpline, TCBSpline, Custom, }; QEasingCurve(QEasingCurve::Type type = QEasingCurve::Linear); QEasingCurve(const QEasingCurve &other); ~QEasingCurve(); bool operator==(const QEasingCurve &other) const; bool operator!=(const QEasingCurve &other) const; qreal amplitude() const; void setAmplitude(qreal amplitude); qreal period() const; void setPeriod(qreal period); qreal overshoot() const; void setOvershoot(qreal overshoot); QEasingCurve::Type type() const; void setType(QEasingCurve::Type type); void setCustomType(SIP_PYCALLABLE func /TypeHint="Callable[[float], float]"/); %MethodCode int i; ec_custom_type *ct; for (i = 0; i < ec_nr_custom_types; ++i) { ct = &ec_custom_types[i]; if (!ct->py_func || ct->py_func == a0) break; } if (i == ec_nr_custom_types) { PyErr_Format(PyExc_ValueError, "a maximum of %d different easing functions are supported", ec_nr_custom_types); sipError = sipErrorFail; } else { if (!ct->py_func) { ct->py_func = a0; Py_INCREF(a0); } sipCpp->setCustomType(ct->func); } %End SIP_PYCALLABLE customType() const /TypeHint="Callable[[float], float]"/; %MethodCode QEasingCurve::EasingFunction func = sipCpp->customType(); sipRes = Py_None; if (func) { for (int i = 0; i < ec_nr_custom_types; ++i) { if (ec_custom_types[i].func == func) { sipRes = ec_custom_types[i].py_func; break; } } } Py_INCREF(sipRes); %End qreal valueForProgress(qreal progress) const; void swap(QEasingCurve &other /Constrained/); void addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint); void addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b); QList toCubicSpline() const; }; QDataStream &operator<<(QDataStream &, const QEasingCurve & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QEasingCurve & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6332011 PyQt6-6.6.1/sip/QtCore/qelapsedtimer.sip0000644000076500000240000000345114532160402016732 0ustar00philstaff// qelapsedtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QElapsedTimer { %TypeHeaderCode #include %End public: QElapsedTimer(); enum ClockType { SystemTime, MonotonicClock, TickCounter, MachAbsoluteTime, PerformanceCounter, }; static QElapsedTimer::ClockType clockType(); static bool isMonotonic(); void start(); qint64 restart(); void invalidate(); bool isValid() const; qint64 elapsed() const; bool hasExpired(qint64 timeout) const; qint64 msecsSinceReference() const; qint64 msecsTo(const QElapsedTimer &other) const; qint64 secsTo(const QElapsedTimer &other) const; qint64 nsecsElapsed() const; }; bool operator<(const QElapsedTimer &v1, const QElapsedTimer &v2); bool operator==(const QElapsedTimer &lhs, const QElapsedTimer &rhs); bool operator!=(const QElapsedTimer &lhs, const QElapsedTimer &rhs); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.691067 PyQt6-6.6.1/sip/QtCore/qeventloop.sip0000644000076500000240000000422514532160402016267 0ustar00philstaff// qeventloop.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventLoop : QObject { %TypeHeaderCode #include %End public: explicit QEventLoop(QObject *parent /TransferThis/ = 0); virtual ~QEventLoop(); enum ProcessEventsFlag /BaseType=Flag/ { AllEvents, ExcludeUserInputEvents, ExcludeSocketNotifiers, WaitForMoreEvents, }; typedef QFlags ProcessEventsFlags; bool processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) /ReleaseGIL/; void processEvents(QEventLoop::ProcessEventsFlags flags, int maximumTime) /ReleaseGIL/; int exec(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; void exit(int returnCode = 0); bool isRunning() const; void wakeUp(); public slots: void quit(); public: virtual bool event(QEvent *event); }; class QEventLoopLocker { %TypeHeaderCode #include %End public: QEventLoopLocker() /ReleaseGIL/; explicit QEventLoopLocker(QEventLoop *loop) /ReleaseGIL/; explicit QEventLoopLocker(QThread *thread) /ReleaseGIL/; ~QEventLoopLocker(); private: QEventLoopLocker(const QEventLoopLocker &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7022977 PyQt6-6.6.1/sip/QtCore/qfile.sip0000644000076500000240000000572714532160402015203 0ustar00philstaff// qfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFile : QFileDevice { %TypeHeaderCode #include %End public: QFile(); QFile(const QString &name); explicit QFile(QObject *parent /TransferThis/); QFile(const QString &name, QObject *parent /TransferThis/); virtual ~QFile(); virtual QString fileName() const; void setFileName(const QString &name); static QByteArray encodeName(const QString &fileName); static QString decodeName(const QByteArray &localFileName); static QString decodeName(const char *localFileName /Encoding="ASCII"/); bool exists() const; static bool exists(const QString &fileName); QString symLinkTarget() const; static QString symLinkTarget(const QString &fileName); bool remove() /ReleaseGIL/; static bool remove(const QString &fileName) /ReleaseGIL/; bool rename(const QString &newName) /ReleaseGIL/; static bool rename(const QString &oldName, const QString &newName) /ReleaseGIL/; bool link(const QString &newName) /ReleaseGIL/; static bool link(const QString &oldname, const QString &newName) /ReleaseGIL/; bool copy(const QString &newName) /ReleaseGIL/; static bool copy(const QString &fileName, const QString &newName) /ReleaseGIL/; %If (Qt_6_3_0 -) bool open(QIODeviceBase::OpenMode flags, QFileDevice::Permissions permissions) /ReleaseGIL/; %End virtual bool open(QIODeviceBase::OpenMode flags) /ReleaseGIL/; bool open(int fd, QIODeviceBase::OpenMode ioFlags, QFileDevice::FileHandleFlags handleFlags = QFileDevice::DontCloseHandle) /ReleaseGIL/; virtual qint64 size() const; virtual bool resize(qint64 sz); static bool resize(const QString &filename, qint64 sz); virtual QFileDevice::Permissions permissions() const; static QFileDevice::Permissions permissions(const QString &filename); virtual bool setPermissions(QFileDevice::Permissions permissionSpec); static bool setPermissions(const QString &filename, QFileDevice::Permissions permissionSpec); bool moveToTrash(); static bool moveToTrash(const QString &fileName, QString *pathInTrash /Out/ = 0); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6802204 PyQt6-6.6.1/sip/QtCore/qfiledevice.sip0000644000076500000240000001425414532160402016356 0ustar00philstaff// qfiledevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDevice : QIODevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum FileError { NoError, ReadError, WriteError, FatalError, ResourceError, OpenError, AbortError, TimeOutError, UnspecifiedError, RemoveError, RenameError, PositionError, ResizeError, PermissionsError, CopyError, }; enum Permission /BaseType=Flag/ { ReadOwner, WriteOwner, ExeOwner, ReadUser, WriteUser, ExeUser, ReadGroup, WriteGroup, ExeGroup, ReadOther, WriteOther, ExeOther, }; typedef QFlags Permissions; enum FileHandleFlag /BaseType=Flag/ { AutoCloseHandle, DontCloseHandle, }; typedef QFlags FileHandleFlags; virtual ~QFileDevice(); QFileDevice::FileError error() const; void unsetError(); virtual void close() /ReleaseGIL/; virtual bool isSequential() const; int handle() const; virtual QString fileName() const; virtual qint64 pos() const; virtual bool seek(qint64 offset) /ReleaseGIL/; virtual bool atEnd() const; bool flush() /ReleaseGIL/; virtual qint64 size() const; virtual bool resize(qint64 sz); virtual QFileDevice::Permissions permissions() const; virtual bool setPermissions(QFileDevice::Permissions permissionSpec); void *map(qint64 offset, qint64 size /ResultSize/, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions) [uchar * (qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = QFileDevice::NoOptions)]; bool unmap(void *address) [bool (uchar *address)]; protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QFileDevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QFileDevice::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End public: enum FileTime { FileAccessTime, FileBirthTime, FileMetadataChangeTime, FileModificationTime, }; QDateTime fileTime(QFileDevice::FileTime time) const; bool setFileTime(const QDateTime &newDate, QFileDevice::FileTime fileTime); enum MemoryMapFlag /BaseType=Flag/ { NoOptions, MapPrivateOption, }; typedef QFlags MemoryMapFlags; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.639647 PyQt6-6.6.1/sip/QtCore/qfileinfo.sip0000644000076500000240000000737214532160402016055 0ustar00philstaff// qfileinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileInfo { %TypeHeaderCode #include %End public: QFileInfo(); explicit QFileInfo(const QFileDevice &file); explicit QFileInfo(const QString &file); QFileInfo(const QDir &dir, const QString &file); QFileInfo(const QFileInfo &fileinfo); ~QFileInfo(); bool operator==(const QFileInfo &fileinfo) const; bool operator!=(const QFileInfo &fileinfo) const; void setFile(const QString &file); void setFile(const QFileDevice &file); void setFile(const QDir &dir, const QString &file); bool exists() const; void refresh(); QString filePath() const; SIP_PYOBJECT __fspath__(); %MethodCode sipRes = qpycore_PyObject_FromQString(QDir::toNativeSeparators(sipCpp->filePath())); %End QString absoluteFilePath() const; QString canonicalFilePath() const; QString fileName() const; QString baseName() const; QString completeBaseName() const; QString suffix() const; QString completeSuffix() const; QString path() const; QString absolutePath() const; QString canonicalPath() const; QDir dir() const; QDir absoluteDir() const; bool isReadable() const; bool isWritable() const; bool isExecutable() const; bool isHidden() const; bool isRelative() const; bool isAbsolute() const; bool makeAbsolute(); bool isFile() const; bool isDir() const; bool isSymLink() const; bool isRoot() const; QString owner() const; uint ownerId() const; QString group() const; uint groupId() const; bool permission(QFileDevice::Permissions permissions) const; QFileDevice::Permissions permissions() const; qint64 size() const; QDateTime lastModified() const; %If (Qt_6_6_0 -) QDateTime lastModified(const QTimeZone &tz) const; %End QDateTime lastRead() const; %If (Qt_6_6_0 -) QDateTime lastRead(const QTimeZone &tz) const; %End bool caching() const; void setCaching(bool on); QString symLinkTarget() const; QString bundleName() const; bool isBundle() const; bool isNativePath() const; void swap(QFileInfo &other /Constrained/); static bool exists(const QString &file); QDateTime birthTime() const; %If (Qt_6_6_0 -) QDateTime birthTime(const QTimeZone &tz) const; %End QDateTime metadataChangeTime() const; %If (Qt_6_6_0 -) QDateTime metadataChangeTime(const QTimeZone &tz) const; %End QDateTime fileTime(QFileDevice::FileTime time) const; %If (Qt_6_6_0 -) QDateTime fileTime(QFileDevice::FileTime time, const QTimeZone &tz) const; %End bool isSymbolicLink() const; bool isShortcut() const; bool isJunction() const; void stat(); %If (Qt_6_2_0 -) QString junctionTarget() const; %End %If (Qt_6_4_0 -) bool isAlias() const; %End %If (Qt_6_6_0 -) QString readSymLink() const; %End }; typedef QList QFileInfoList; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6689525 PyQt6-6.6.1/sip/QtCore/qfileselector.sip0000644000076500000240000000252514532160402016735 0ustar00philstaff// qfileselector.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSelector : QObject { %TypeHeaderCode #include %End public: explicit QFileSelector(QObject *parent /TransferThis/ = 0); virtual ~QFileSelector(); QString select(const QString &filePath) const; QUrl select(const QUrl &filePath) const; QStringList extraSelectors() const; void setExtraSelectors(const QStringList &list); QStringList allSelectors() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6693802 PyQt6-6.6.1/sip/QtCore/qfilesystemwatcher.sip0000644000076500000240000000307514532160402020020 0ustar00philstaff// qfilesystemwatcher.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemWatcher : QObject { %TypeHeaderCode #include %End public: QFileSystemWatcher(QObject *parent /TransferThis/ = 0); QFileSystemWatcher(const QStringList &paths, QObject *parent /TransferThis/ = 0); virtual ~QFileSystemWatcher(); bool addPath(const QString &file); QStringList addPaths(const QStringList &files); QStringList directories() const; QStringList files() const; bool removePath(const QString &file); QStringList removePaths(const QStringList &files); signals: void directoryChanged(const QString &path); void fileChanged(const QString &path); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5979693 PyQt6-6.6.1/sip/QtCore/qflags.sip0000644000076500000240000000266114532160402015352 0ustar00philstaff// This is the SIP interface definition for the QFlags based mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template %MappedType QFlags /PyQtFlags=1, TypeHint="ENUM"/ { %TypeHeaderCode #include %End %ConvertToTypeCode bool is_enm = true; unsigned enm = (unsigned)sipConvertToEnum(sipPy, sipType_ENUM); if (PyErr_Occurred()) { PyErr_Clear(); is_enm = false; } if (sipIsErr == NULL) return is_enm; *sipCppPtr = new QFlags(static_cast(enm)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return sipConvertFromEnum(sipCpp->operator::QFlags::Int(), sipType_ENUM); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6783092 PyQt6-6.6.1/sip/QtCore/qglobal.sip0000644000076500000240000001165414532160402015520 0ustar00philstaff// qglobal.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End const int QT_VERSION; const char *QT_VERSION_STR; %If (- Qt_6_5_0) const char *qVersion(); %End %If (- Qt_6_5_0) typedef signed char qint8 /PyInt/; %End %If (- Qt_6_5_0) typedef unsigned char quint8 /PyInt/; %End %If (- Qt_6_5_0) typedef short qint16; %End %If (- Qt_6_5_0) typedef unsigned short quint16; %End %If (- Qt_6_5_0) typedef int qint32; %End %If (- Qt_6_5_0) typedef unsigned int quint32; %End %If (- Qt_6_5_0) typedef long long qint64; %End %If (- Qt_6_5_0) typedef unsigned long long quint64; %End %If (- Qt_6_5_0) typedef qint64 qlonglong; %End %If (- Qt_6_5_0) typedef quint64 qulonglong; %End %If (- Qt_6_5_0) %If (PyQt_qreal_double) typedef double qreal; %End %End %If (- Qt_6_5_0) %If (!PyQt_qreal_double) typedef float qreal; %End %End %If (- Qt_6_5_0) typedef unsigned char uchar; %End %If (- Qt_6_5_0) typedef unsigned short ushort; %End %If (- Qt_6_5_0) typedef unsigned int uint; %End %If (- Qt_6_5_0) typedef unsigned long ulong; %End %If (- Qt_6_5_0) typedef long long qsizetype; %End %If (- Qt_6_5_0) double qAbs(const double &t); %End %If (- Qt_6_5_0) int qRound(qreal d); %End %If (- Qt_6_5_0) qint64 qRound64(qreal d); %End %If (- Qt_6_5_0) bool qFuzzyCompare(double p1, double p2); %End typedef void *QFunctionPointer; // Minimal support for the Qt resource system to help porting from PyQt5. %ModuleCode 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 %End bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); // Mapped type for qintptr. // Map qintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType qintptr /TypeHint="PyQt6.sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode qintptr ptr = (qintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. qintptr *heap = new qintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Mapped type for quintptr. // Map quintptr onto sip.voidptr. This means either an address (on Windows) or // an integer file descriptor (on everything else) can be used. %MappedType quintptr /TypeHint="PyQt6.sip.voidptr"/ { %TypeHeaderCode #include %End %ConvertToTypeCode quintptr ptr = (quintptr)sipConvertToVoidPtr(sipPy); if (!sipIsErr) return !PyErr_Occurred(); // Mapped types deal with pointers, so create one on the heap. quintptr *heap = new quintptr; *heap = ptr; *sipCppPtr = heap; // Make sure the pointer doesn't leak. return SIP_TEMPORARY; %End %ConvertFromTypeCode return sipConvertFromVoidPtr((void *)*sipCpp); %End }; // Implementations of pyqt[Set]PickleProtocol(). void pyqtSetPickleProtocol(SIP_PYOBJECT /TypeHint="Optional[int]"/); %MethodCode Py_XDECREF(qpycore_pickle_protocol); qpycore_pickle_protocol = a0; Py_INCREF(qpycore_pickle_protocol); %End SIP_PYOBJECT pyqtPickleProtocol() /TypeHint="Optional[int]"/; %MethodCode sipRes = qpycore_pickle_protocol; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End %If (- Qt_6_5_0) bool qEnvironmentVariableIsEmpty(const char *varName); %End %If (- Qt_6_5_0) bool qEnvironmentVariableIsSet(const char *varName); %End %If (- Qt_6_5_0) QString qEnvironmentVariable(const char *varName); %End %If (- Qt_6_5_0) QString qEnvironmentVariable(const char *varName, const QString &defaultValue); %End %If (- Qt_6_5_0) int qEnvironmentVariableIntValue(const char *varName, bool *ok = 0); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7072582 PyQt6-6.6.1/sip/QtCore/qidentityproxymodel.sip0000644000076500000240000000602714532160402020232 0ustar00philstaff// qidentityproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIdentityProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QIdentityProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QIdentityProxyModel(); virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith | Qt::MatchWrap)) const; virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6556954 PyQt6-6.6.1/sip/QtCore/qiodevice.sip0000644000076500000240000003033614532160402016045 0ustar00philstaff// qiodevice.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIODevice : QObject, QIODeviceBase { %TypeHeaderCode #include %End public: QIODevice(); explicit QIODevice(QObject *parent /TransferThis/); virtual ~QIODevice(); QIODeviceBase::OpenMode openMode() const; void setTextModeEnabled(bool enabled); bool isTextModeEnabled() const; bool isOpen() const; bool isReadable() const; bool isWritable() const; virtual bool isSequential() const; int readChannelCount() const; int writeChannelCount() const; int currentReadChannel() const; void setCurrentReadChannel(int channel); int currentWriteChannel() const; void setCurrentWriteChannel(int channel); virtual bool open(QIODeviceBase::OpenMode mode) /ReleaseGIL/; virtual void close() /ReleaseGIL/; virtual qint64 pos() const; virtual qint64 size() const; virtual bool seek(qint64 pos) /ReleaseGIL/; virtual bool atEnd() const; virtual bool reset(); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; SIP_PYOBJECT read(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->read(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End SIP_PYOBJECT readLine(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/; %MethodCode // Return a bytes object or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readLine(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End QByteArray readLine() /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = new QByteArray(sipCpp->readLine()); Py_END_ALLOW_THREADS %End QByteArray readAll() /ReleaseGIL/; virtual bool canReadLine() const; void startTransaction(); void commitTransaction(); void rollbackTransaction(); bool isTransactionStarted() const; qint64 write(SIP_PYBUFFER) /ReleaseGIL/; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->write(reinterpret_cast(bi.bi_buf), bi.bi_len); Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End SIP_PYOBJECT peek(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->peek(s, a0); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End qint64 skip(qint64 maxSize) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs) /ReleaseGIL/; void ungetChar(char c /Encoding="None"/); bool putChar(char c /Encoding="None"/) /ReleaseGIL/; bool getChar(char *c /Encoding="None",Out/) /ReleaseGIL/; QString errorString() const; signals: void aboutToClose(); void bytesWritten(qint64 bytes); void channelBytesWritten(int channel, qint64 bytes); void channelReadyRead(int channel); void readChannelFinished(); void readyRead(); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) = 0 /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipCpp->readData(s, a0); #else len = sipCpp->sipProtect_readData(s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result) { PyObject *buf; if (sipParseResult(&sipIsErr, sipMethod, result, "$", &buf) == 0) { if (buf == Py_None) { sipRes = -1L; } else { sipBufferInfoDef bi; if (sipGetBufferInfo(buf, &bi) < 0) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { sipRes = (a1 < bi.bi_len) ? a1 : bi.bi_len; memcpy(a0, bi.bi_buf, sipRes); sipReleaseBufferInfo(&bi); } } Py_DECREF(buf); } Py_DECREF(result); } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QIODevice::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result) { PyObject *buf; if (sipParseResult(&sipIsErr, sipMethod, result, "$", &buf) == 0) { if (buf == Py_None) { sipRes = -1L; } else { sipBufferInfoDef bi; if (sipGetBufferInfo(buf, &bi) < 0) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { sipRes = (a1 < bi.bi_len) ? a1 : bi.bi_len; memcpy(a0, bi.bi_buf, sipRes); sipReleaseBufferInfo(&bi); } } Py_DECREF(buf); } Py_DECREF(result); } %End virtual qint64 writeData(SIP_PYBUFFER) = 0 /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtect_writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End %VirtualCatcherCode PyObject *result = sipCallMethod(&sipIsErr, sipMethod, "n", a1); if (result) { PyObject *buf; if (sipParseResult(&sipIsErr, sipMethod, result, "$", &buf) == 0) { if (buf == Py_None) { sipRes = -1L; } else { sipBufferInfoDef bi; if (sipGetBufferInfo(buf, &bi) < 0) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { if (bi.bi_readonly) { sipBadCatcherResult(sipMethod); sipIsErr = 1; } else { sipRes = (a1 < bi.bi_len) ? a1 : bi.bi_len; memcpy(bi.bi_buf, a0, sipRes); } sipReleaseBufferInfo(&bi); } } Py_DECREF(buf); } Py_DECREF(result); } %End virtual qint64 skipData(qint64 maxSize) /ReleaseGIL/; void setOpenMode(QIODeviceBase::OpenMode openMode); void setErrorString(const QString &errorString); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6864352 PyQt6-6.6.1/sip/QtCore/qiodevicebase.sip0000644000076500000240000000254414532160402016700 0ustar00philstaff// qiodevicebase.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIODeviceBase { %TypeHeaderCode #include %End public: enum OpenModeFlag /BaseType=Flag/ { NotOpen, ReadOnly, WriteOnly, ReadWrite, Append, Truncate, Text, Unbuffered, NewOnly, ExistingOnly, }; typedef QFlags OpenMode; protected: %If (Qt_6_3_0 -) ~QIODeviceBase(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7067955 PyQt6-6.6.1/sip/QtCore/qitemselectionmodel.sip0000644000076500000240000002117514532160402020144 0ustar00philstaff// qitemselectionmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemSelectionRange { %TypeHeaderCode #include %End public: QItemSelectionRange(); QItemSelectionRange(const QModelIndex &atopLeft, const QModelIndex &abottomRight); explicit QItemSelectionRange(const QModelIndex &index); int top() const; int left() const; int bottom() const; int right() const; int width() const; int height() const; const QPersistentModelIndex &topLeft() const; const QPersistentModelIndex &bottomRight() const; QModelIndex parent() const; const QAbstractItemModel *model() const; bool contains(const QModelIndex &index) const; bool contains(int row, int column, const QModelIndex &parentIndex) const; bool intersects(const QItemSelectionRange &other) const; bool operator==(const QItemSelectionRange &other) const; bool operator!=(const QItemSelectionRange &other) const; bool isValid() const; QModelIndexList indexes() const; QItemSelectionRange intersected(const QItemSelectionRange &other) const; bool isEmpty() const; void swap(QItemSelectionRange &other /Constrained/); }; class QItemSelectionModel : QObject { %TypeHeaderCode #include %End public: enum SelectionFlag /BaseType=Flag/ { NoUpdate, Clear, Select, Deselect, Toggle, Current, Rows, Columns, SelectCurrent, ToggleCurrent, ClearAndSelect, }; typedef QFlags SelectionFlags; explicit QItemSelectionModel(QAbstractItemModel *model /TransferThis/ = 0); QItemSelectionModel(QAbstractItemModel *model, QObject *parent /TransferThis/); virtual ~QItemSelectionModel(); QModelIndex currentIndex() const; bool isSelected(const QModelIndex &index) const; bool isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const; bool isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const; bool rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const; bool columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const; QModelIndexList selectedIndexes() const; const QItemSelection selection() const; QAbstractItemModel *model(); public slots: virtual void clear(); void clearSelection(); virtual void reset(); virtual void select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); virtual void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command); virtual void setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command); virtual void clearCurrentIndex(); signals: void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous); void currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous); protected: void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection); public: bool hasSelection() const; QModelIndexList selectedRows(int column = 0) const; QModelIndexList selectedColumns(int row = 0) const; void setModel(QAbstractItemModel *model); signals: void modelChanged(QAbstractItemModel *model); }; class QItemSelection { %TypeHeaderCode #include %End public: QItemSelection(); QItemSelection(const QModelIndex &topLeft, const QModelIndex &bottomRight); void select(const QModelIndex &topLeft, const QModelIndex &bottomRight); bool contains(const QModelIndex &index) const; int __contains__(const QModelIndex &index); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End QModelIndexList indexes() const; void merge(const QItemSelection &other, QItemSelectionModel::SelectionFlags command); static void split(const QItemSelectionRange &range, const QItemSelectionRange &other, QItemSelection *result); void __setitem__(int i, const QItemSelectionRange &range); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QItemSelection &list); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QItemSelection::const_iterator it = a1->begin(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { for (Py_ssize_t i = 0; i < slicelength; ++i) { sipCpp->removeAt(start); start += step - 1; } } %End QItemSelectionRange operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QItemSelectionRange(sipCpp->operator[]((int)idx)); %End QItemSelection operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QItemSelection(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End // Methods inherited from QList. bool operator!=(const QItemSelection &other) const; bool operator==(const QItemSelection &other) const; // Keep the following in sync with QStringList (except for mid()). void clear(); bool isEmpty() const; void append(const QItemSelectionRange &range); void prepend(const QItemSelectionRange &range); void insert(int i, const QItemSelectionRange &range); void replace(int i, const QItemSelectionRange &range); void removeAt(int i); int removeAll(const QItemSelectionRange &range); QItemSelectionRange takeAt(int i); QItemSelectionRange takeFirst(); QItemSelectionRange takeLast(); void move(int from, int to); int count(const QItemSelectionRange &range) const; int count() const /__len__/; QItemSelectionRange &first(); QItemSelectionRange &last(); int indexOf(const QItemSelectionRange &value, int from = 0) const; int lastIndexOf(const QItemSelectionRange &value, int from = -1) const; QItemSelection &operator+=(const QItemSelection &other); QItemSelection &operator+=(const QItemSelectionRange &value); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6821976 PyQt6-6.6.1/sip/QtCore/qjsonarray.sip0000644000076500000240000000627714532160402016275 0ustar00philstaff// This is the SIP interface definition for the QJsonArray mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Note that we assume any iterable can be converted to a QJsonArray. However, // because QJsonValue is an iterable and QJsonObject is implemented as a dict // (which is also an iterable), then any overloads that handle one or more of // them must be ordered so that QJsonArray is checked last. %MappedType QJsonArray /TypeHintIn="Iterable[QJsonValue]", TypeHintOut="List[QJsonValue]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QJsonValue *t = new QJsonValue(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QJsonValue, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QJsonArray *ql = new QJsonArray; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QJsonValue *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QJsonValue' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QJsonValue, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6524248 PyQt6-6.6.1/sip/QtCore/qjsondocument.sip0000644000076500000240000000545614532160402016773 0ustar00philstaff// qjsondocument.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QJsonParseError { %TypeHeaderCode #include %End enum ParseError { NoError, UnterminatedObject, MissingNameSeparator, UnterminatedArray, MissingValueSeparator, IllegalValue, TerminationByNumber, IllegalNumber, IllegalEscapeSequence, IllegalUTF8String, UnterminatedString, MissingObject, DeepNesting, DocumentTooLarge, GarbageAtEnd, }; QString errorString() const; int offset; QJsonParseError::ParseError error; }; class QJsonDocument { %TypeHeaderCode #include %End public: QJsonDocument(); explicit QJsonDocument(const QJsonObject &object); explicit QJsonDocument(const QJsonArray &array); QJsonDocument(const QJsonDocument &other); ~QJsonDocument(); static QJsonDocument fromVariant(const QVariant &variant); QVariant toVariant() const; enum JsonFormat { Indented, Compact, }; static QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error = 0); QByteArray toJson(QJsonDocument::JsonFormat format = QJsonDocument::Indented) const; bool isEmpty() const; bool isArray() const; bool isObject() const; QJsonObject object() const; QJsonArray array() const; void setObject(const QJsonObject &object); void setArray(const QJsonArray &array); bool operator==(const QJsonDocument &other) const; bool operator!=(const QJsonDocument &other) const; bool isNull() const; void swap(QJsonDocument &other /Constrained/); const QJsonValue operator[](qsizetype i) const; const QJsonValue operator[](const QString &key) const; }; QDataStream &operator<<(QDataStream &, const QJsonDocument & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QJsonDocument & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6089027 PyQt6-6.6.1/sip/QtCore/qjsonobject.sip0000644000076500000240000000665414532160402016424 0ustar00philstaff// This is the SIP interface definition for the QJsonObject mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QJsonObject /TypeHint="Dict[QString, QJsonValue]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QJsonObject::const_iterator it = sipCpp->constBegin(); QJsonObject::const_iterator end = sipCpp->constEnd(); while (it != end) { QString *k = new QString(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType_QString, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } QJsonValue *v = new QJsonValue(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QJsonValue, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QJsonObject *jo = new QJsonObject; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; QString *k = reinterpret_cast( sipForceConvertToType(kobj, sipType_QString, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'str' is expected", sipPyTypeName(Py_TYPE(kobj))); delete jo; return 0; } int vstate; QJsonValue *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QJsonValue, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a value has type '%s' but 'QJsonValue' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType_QString, kstate); delete jo; return 0; } jo->insert(*k, *v); sipReleaseType(v, sipType_QJsonValue, vstate); sipReleaseType(k, sipType_QString, kstate); } *sipCppPtr = jo; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.672243 PyQt6-6.6.1/sip/QtCore/qjsonvalue.sip0000644000076500000240000000551414532160402016264 0ustar00philstaff// qjsonvalue.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJsonValue /AllowNone,TypeHintIn="Union[QJsonValue, QJsonValue.Type, QJsonArray, QJsonObject, bool, int, float, None, QString]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpycore_canConvertTo_QJsonValue(sipPy); return qpycore_convertTo_QJsonValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum Type { Null, Bool, Double, String, Array, Object, Undefined, }; QJsonValue(QJsonValue::Type type /Constrained/ = QJsonValue::Null); QJsonValue(const QJsonValue &other); ~QJsonValue(); static QJsonValue fromVariant(const QVariant &variant); QVariant toVariant() const; QJsonValue::Type type() const; bool isNull() const; bool isBool() const; bool isDouble() const; bool isString() const; bool isArray() const; bool isObject() const; bool isUndefined() const; bool toBool(bool defaultValue = false) const; int toInt(int defaultValue = 0) const; qint64 toInteger(qint64 defaultValue = 0) const; double toDouble(double defaultValue = 0) const; QJsonArray toArray() const; QJsonArray toArray(const QJsonArray &defaultValue) const; QJsonObject toObject() const; QJsonObject toObject(const QJsonObject &defaultValue) const; bool operator==(const QJsonValue &other) const; bool operator!=(const QJsonValue &other) const; QString toString() const; QString toString(const QString &defaultValue) const; void swap(QJsonValue &other /Constrained/); const QJsonValue operator[](qsizetype i) const; const QJsonValue operator[](const QString &key) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; QDataStream &operator<<(QDataStream &, const QJsonValue & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QJsonValue & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6513636 PyQt6-6.6.1/sip/QtCore/qlibrary.sip0000644000076500000240000000456214532160402015724 0ustar00philstaff// qlibrary.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibrary : QObject { %TypeHeaderCode #include %End public: enum LoadHint /BaseType=Flag/ { ResolveAllSymbolsHint, ExportExternalSymbolsHint, LoadArchiveMemberHint, PreventUnloadHint, DeepBindHint, }; typedef QFlags LoadHints; explicit QLibrary(QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, int verNum, QObject *parent /TransferThis/ = 0); QLibrary(const QString &fileName, const QString &version, QObject *parent /TransferThis/ = 0); virtual ~QLibrary(); QString errorString() const; QString fileName() const; bool isLoaded() const; bool load(); QLibrary::LoadHints loadHints() const; QFunctionPointer resolve(const char *symbol); static QFunctionPointer resolve(const QString &fileName, const char *symbol); static QFunctionPointer resolve(const QString &fileName, int verNum, const char *symbol); static QFunctionPointer resolve(const QString &fileName, const QString &version, const char *symbol); bool unload(); static bool isLibrary(const QString &fileName); void setFileName(const QString &fileName); void setFileNameAndVersion(const QString &fileName, int verNum); void setFileNameAndVersion(const QString &fileName, const QString &version); void setLoadHints(QLibrary::LoadHints hints); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.653888 PyQt6-6.6.1/sip/QtCore/qlibraryinfo.sip0000644000076500000240000000317514532160402016577 0ustar00philstaff// qlibraryinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLibraryInfo { %TypeHeaderCode #include %End public: static bool isDebugBuild(); %If (Qt_6_5_0 -) static bool isSharedBuild(); %End static QString path(QLibraryInfo::LibraryPath p) /ReleaseGIL/; static QVersionNumber version(); private: QLibraryInfo(); public: enum LibraryPath { PrefixPath, DocumentationPath, HeadersPath, LibrariesPath, LibraryExecutablesPath, BinariesPath, PluginsPath, Qml2ImportsPath, ArchDataPath, DataPath, TranslationsPath, ExamplesPath, TestsPath, SettingsPath, %If (Qt_6_2_0 -) QmlImportsPath, %End }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6533942 PyQt6-6.6.1/sip/QtCore/qline.sip0000644000076500000240000001211614532160402015201 0ustar00philstaff// qline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLine { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: bool operator!=(const QLine &d) const; QLine(); QLine(const QPoint &pt1_, const QPoint &pt2_); QLine(int x1pos, int y1pos, int x2pos, int y2pos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QLine()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QLine(%i, %i, %i, %i)", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End int x1() const; int y1() const; int x2() const; int y2() const; QPoint p1() const; QPoint p2() const; int dx() const; int dy() const; void translate(const QPoint &point); void translate(int adx, int ady); bool operator==(const QLine &d) const; QLine translated(const QPoint &p) const; QLine translated(int adx, int ady) const; void setP1(const QPoint &aP1); void setP2(const QPoint &aP2); void setPoints(const QPoint &aP1, const QPoint &aP2); void setLine(int aX1, int aY1, int aX2, int aY2); QPoint center() const; %If (Qt_6_4_0 -) QLineF toLineF() const; %End }; QDataStream &operator<<(QDataStream &, const QLine &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLine & /Constrained/) /ReleaseGIL/; class QLineF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("dddd", sipCpp->x1(), sipCpp->y1(), sipCpp->x2(), sipCpp->y2()); %End public: enum IntersectionType { NoIntersection, BoundedIntersection, UnboundedIntersection, }; QLineF(const QLine &line); bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal length() const; QLineF unitVector() const; QLineF::IntersectionType intersects(const QLineF &l, QPointF *intersectionPoint /Out/ = 0) const; bool operator!=(const QLineF &d) const; QLineF(); QLineF(const QPointF &apt1, const QPointF &apt2); QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QLineF()"); } else { PyObject *x1 = PyFloat_FromDouble(sipCpp->x1()); PyObject *y1 = PyFloat_FromDouble(sipCpp->y1()); PyObject *x2 = PyFloat_FromDouble(sipCpp->x2()); PyObject *y2 = PyFloat_FromDouble(sipCpp->y2()); if (x1 && y1 && x2 && y2) { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QLineF(%R, %R, %R, %R)", x1, y1, x2, y2); } Py_XDECREF(x1); Py_XDECREF(y1); Py_XDECREF(x2); Py_XDECREF(y2); } %End qreal x1() const; qreal y1() const; qreal x2() const; qreal y2() const; QPointF p1() const; QPointF p2() const; qreal dx() const; qreal dy() const; QLineF normalVector() const; void translate(const QPointF &point); void translate(qreal adx, qreal ady); void setLength(qreal len); QPointF pointAt(qreal t) const; QLine toLine() const; bool operator==(const QLineF &d) const; static QLineF fromPolar(qreal length, qreal angle); qreal angle() const; void setAngle(qreal angle); qreal angleTo(const QLineF &l) const; QLineF translated(const QPointF &p) const; QLineF translated(qreal adx, qreal ady) const; void setP1(const QPointF &aP1); void setP2(const QPointF &aP2); void setPoints(const QPointF &aP1, const QPointF &aP2); void setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2); QPointF center() const; }; QDataStream &operator<<(QDataStream &, const QLineF & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLineF & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6284385 PyQt6-6.6.1/sip/QtCore/qlocale.sip0000644000076500000240000006730514532160402015523 0ustar00philstaff// qlocale.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocale { %TypeHeaderCode #include %End public: enum Language { C, Abkhazian, Afan, Afar, Afrikaans, Albanian, Amharic, Arabic, Armenian, Assamese, Aymara, Azerbaijani, Bashkir, Basque, Bengali, Bhutani, Bislama, Breton, Bulgarian, Burmese, Byelorussian, Cambodian, Catalan, Chinese, Corsican, Croatian, Czech, Danish, Dutch, English, Esperanto, Estonian, Faroese, Finnish, French, Frisian, Gaelic, Galician, Georgian, German, Greek, Greenlandic, Guarani, Gujarati, Hausa, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Interlingua, Interlingue, Inuktitut, Inupiak, Irish, Italian, Japanese, Javanese, Kannada, Kashmiri, Kazakh, Kinyarwanda, Kirghiz, Korean, Kurdish, Kurundi, Latin, Latvian, Lingala, Lithuanian, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, NauruLanguage, Nepali, Occitan, Oriya, Pashto, Persian, Polish, Portuguese, Punjabi, Quechua, RhaetoRomance, Romanian, Russian, Samoan, Sanskrit, Serbian, Shona, Sindhi, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Tatar, Telugu, Thai, Tibetan, Tigrinya, Tsonga, Turkish, Turkmen, Uigur, Ukrainian, Urdu, Uzbek, Vietnamese, Volapuk, Welsh, Wolof, Xhosa, Yiddish, Yoruba, Zhuang, Zulu, Bosnian, Divehi, Manx, Cornish, LastLanguage, NorwegianBokmal, NorwegianNynorsk, Akan, Konkani, Ga, Igbo, Kamba, Syriac, Blin, Geez, Koro, Sidamo, Atsam, Tigre, Jju, Friulian, Venda, Ewe, Walamo, Hawaiian, Tyap, Chewa, Filipino, SwissGerman, SichuanYi, Kpelle, LowGerman, SouthNdebele, NorthernSotho, NorthernSami, Taroko, Gusii, Taita, Fulah, Kikuyu, Samburu, Sena, NorthNdebele, Rombo, Tachelhit, Kabyle, Nyankole, Bena, Vunjo, Bambara, Embu, Cherokee, Morisyen, Makonde, Langi, Ganda, Bemba, Kabuverdianu, Meru, Kalenjin, Nama, Machame, Colognian, Masai, Soga, Luyia, Asu, Teso, Saho, KoyraChiini, Rwa, Luo, Chiga, CentralMoroccoTamazight, KoyraboroSenni, Shambala, AnyLanguage, Rundi, Bodo, Aghem, Basaa, Zarma, Duala, JolaFonyi, Ewondo, Bafia, LubaKatanga, MakhuwaMeetto, Mundang, Kwasio, Nuer, Sakha, Sangu, Tasawaq, Vai, Walser, Yangben, Oromo, Dzongkha, Belarusian, Khmer, Fijian, WesternFrisian, Lao, Marshallese, Romansh, Sango, Ossetic, SouthernSotho, Tswana, Sinhala, Swati, Sardinian, Tongan, Tahitian, Nyanja, Avaric, Chamorro, Chechen, Church, Chuvash, Cree, Haitian, Herero, HiriMotu, Kanuri, Komi, Kongo, Kwanyama, Limburgish, Luxembourgish, Navaho, Ndonga, Ojibwa, Pali, Walloon, Avestan, Asturian, Ngomba, Kako, Meta, Ngiemboon, Uighur, Aragonese, Akkadian, AncientEgyptian, AncientGreek, Aramaic, Balinese, Bamun, BatakToba, Buginese, Chakma, Coptic, Dogri, Gothic, Ingush, Mandingo, Manipuri, OldIrish, OldNorse, OldPersian, Pahlavi, Phoenician, Santali, Saurashtra, TaiDam, Ugaritic, Akoose, Lakota, StandardMoroccanTamazight, Mapuche, CentralKurdish, LowerSorbian, UpperSorbian, Kenyang, Mohawk, Nko, Prussian, Kiche, SouthernSami, LuleSami, InariSami, SkoltSami, Warlpiri, Mende, Lezghian, Maithili, AmericanSignLanguage, Bhojpuri, LiteraryChinese, Mazanderani, Newari, NorthernLuri, Palauan, Papiamento, TokelauLanguage, TokPisin, TuvaluLanguage, Cantonese, Osage, Ido, Lojban, Sicilian, SouthernKurdish, WesternBalochi, Cebuano, Erzya, Chickasaw, Muscogee, Silesian, NigerianPidgin, Bangla, CentralAtlasTamazight, Inupiaq, Kalaallisut, Kuanyama, Kyrgyz, Navajo, Odia, Uyghur, Wolaytta, %If (Qt_6_3_0 -) Kaingang, %End %If (Qt_6_3_0 -) Nheengatu, %End %If (Qt_6_5_0 -) Haryanvi, %End %If (Qt_6_5_0 -) NorthernFrisian, %End %If (Qt_6_5_0 -) Rajasthani, %End %If (Qt_6_5_0 -) Moksha, %End %If (Qt_6_5_0 -) TokiPona, %End %If (Qt_6_5_0 -) Pijin, %End %If (Qt_6_5_0 -) Obolo, %End %If (Qt_6_6_0 -) Baluchi, %End %If (Qt_6_6_0 -) Ligurian, %End %If (Qt_6_6_0 -) Rohingya, %End %If (Qt_6_6_0 -) Torwali, %End }; enum Country { AnyCountry, %If (Qt_6_2_0 -) AnyTerritory, %End Afghanistan, Albania, Algeria, AmericanSamoa, Andorra, Angola, Anguilla, Antarctica, AntiguaAndBarbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, BosniaAndHerzegowina, Botswana, BouvetIsland, Brazil, BritishIndianOceanTerritory, Bulgaria, BurkinaFaso, Burundi, Cambodia, Cameroon, Canada, CapeVerde, CaymanIslands, CentralAfricanRepublic, Chad, Chile, China, ChristmasIsland, CocosIslands, Colombia, Comoros, DemocraticRepublicOfCongo, PeoplesRepublicOfCongo, CookIslands, CostaRica, IvoryCoast, Croatia, Cuba, Cyprus, CzechRepublic, Denmark, Djibouti, Dominica, DominicanRepublic, EastTimor, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Ethiopia, FalklandIslands, FaroeIslands, Finland, France, FrenchGuiana, FrenchPolynesia, FrenchSouthernTerritories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, HeardAndMcDonaldIslands, Honduras, HongKong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, DemocraticRepublicOfKorea, RepublicOfKorea, Kuwait, Kyrgyzstan, Latvia, Lebanon, Lesotho, Liberia, Liechtenstein, Lithuania, Luxembourg, Macau, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar, Namibia, NauruCountry, Nepal, Netherlands, NewCaledonia, NewZealand, Nicaragua, Niger, Nigeria, Niue, NorfolkIsland, NorthernMarianaIslands, Norway, Oman, Pakistan, Palau, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, PuertoRico, Qatar, Reunion, Romania, RussianFederation, Rwanda, SaintKittsAndNevis, Samoa, SanMarino, SaoTomeAndPrincipe, SaudiArabia, Senegal, Seychelles, SierraLeone, Singapore, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthGeorgiaAndTheSouthSandwichIslands, Spain, SriLanka, Sudan, Suriname, SvalbardAndJanMayenIslands, Swaziland, Sweden, Switzerland, SyrianArabRepublic, Taiwan, Tajikistan, Tanzania, Thailand, Togo, TrinidadAndTobago, Tunisia, Turkey, Turkmenistan, TurksAndCaicosIslands, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdom, UnitedStates, UnitedStatesMinorOutlyingIslands, Uruguay, Uzbekistan, Vanuatu, VaticanCityState, Venezuela, BritishVirginIslands, WallisAndFutunaIslands, WesternSahara, Yemen, Zambia, Zimbabwe, Montenegro, Serbia, SaintBarthelemy, SaintMartin, LatinAmericaAndTheCaribbean, LastCountry, Brunei, CongoKinshasa, CongoBrazzaville, Fiji, Guernsey, NorthKorea, SouthKorea, Laos, Libya, CuraSao, PalestinianTerritories, Russia, SaintLucia, SaintVincentAndTheGrenadines, SaintHelena, SaintPierreAndMiquelon, Syria, Tonga, Vietnam, UnitedStatesVirginIslands, CanaryIslands, ClippertonIsland, AscensionIsland, AlandIslands, DiegoGarcia, CeutaAndMelilla, IsleOfMan, Jersey, TristanDaCunha, SouthSudan, Bonaire, SintMaarten, Kosovo, TokelauCountry, TuvaluCountry, EuropeanUnion, OutlyingOceania, LatinAmerica, World, Europe, BosniaAndHerzegovina, CaribbeanNetherlands, Curacao, Czechia, Eswatini, Macao, SaintVincentAndGrenadines, SouthGeorgiaAndSouthSandwichIslands, SvalbardAndJanMayen, TimorLeste, UnitedStatesOutlyingIslands, VaticanCity, WallisAndFutuna, %If (Qt_6_2_0 -) NauruTerritory, %End %If (Qt_6_2_0 -) TokelauTerritory, %End %If (Qt_6_2_0 -) TuvaluTerritory, %End }; enum NumberOption /BaseType=Flag/ { OmitGroupSeparator, RejectGroupSeparator, DefaultNumberOptions, OmitLeadingZeroInExponent, RejectLeadingZeroInExponent, IncludeTrailingZeroesAfterDot, RejectTrailingZeroesAfterDot, }; typedef QFlags NumberOptions; QLocale(); explicit QLocale(const QString &name); QLocale(QLocale::Language language, QLocale::Country country = QLocale::AnyCountry); QLocale(QLocale::Language language, QLocale::Script script, QLocale::Country country); QLocale(const QLocale &other); ~QLocale(); QLocale::Language language() const; QLocale::Country country() const; QString name() const; short toShort(const QString &s, bool *ok = 0) const; ushort toUShort(const QString &s, bool *ok = 0) const; int toInt(const QString &s, bool *ok = 0) const; uint toUInt(const QString &s, bool *ok = 0) const; qlonglong toLongLong(const QString &s, bool *ok = 0) const; qulonglong toULongLong(const QString &s, bool *ok = 0) const; float toFloat(const QString &s, bool *ok = 0) const; double toDouble(const QString &s, bool *ok = 0) const; QString toString(QDate date, QLocale::FormatType format, QCalendar cal) const; QString toString(QDate date, QStringView formatStr, QCalendar cal) const; QString toString(QDate date, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(QDate date, QStringView formatStr) const; QString toString(QTime time, QLocale::FormatType format = QLocale::LongFormat) const; QString toString(QTime time, QStringView formatStr) const; QString toString(double i /Constrained/, char format = 'g', int precision = 6) const; static QString languageToString(QLocale::Language language); static QString countryToString(QLocale::Country country); static void setDefault(const QLocale &locale); static QLocale c(); static QLocale system(); enum FormatType { LongFormat, ShortFormat, NarrowFormat, }; QString toString(const QDateTime &dateTime, QLocale::FormatType format, QCalendar cal) const; QString toString(const QDateTime &dateTime, const QString &format) const; QString toString(const QDateTime &dateTime, const QString &formatStr, QCalendar cal) const; %MethodCode // QStringView has issues being implemented as a mapped type. sipRes = new QString(sipCpp->toString(*a0, QStringView(*a1), *a2)); %End QString toString(const QDateTime &dateTime, QLocale::FormatType format = QLocale::LongFormat) const; QString dateFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString timeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QString dateTimeFormat(QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDate toDate(const QString &string, const QString &format) const; QTime toTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QTime toTime(const QString &string, const QString &format) const; QDateTime toDateTime(const QString &string, QLocale::FormatType format = QLocale::LongFormat) const; QDateTime toDateTime(const QString &string, const QString &format) const; QString decimalPoint() const; QString groupSeparator() const; QString percent() const; QString zeroDigit() const; QString negativeSign() const; QString exponential() const; QString monthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString dayName(int, QLocale::FormatType format = QLocale::LongFormat) const; void setNumberOptions(QLocale::NumberOptions options); QLocale::NumberOptions numberOptions() const; enum MeasurementSystem { MetricSystem, ImperialSystem, ImperialUSSystem, ImperialUKSystem, }; QLocale::MeasurementSystem measurementSystem() const; QString positiveSign() const; QString standaloneMonthName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString standaloneDayName(int, QLocale::FormatType format = QLocale::LongFormat) const; QString amText() const; QString pmText() const; Qt::LayoutDirection textDirection() const; enum Script { AnyScript, ArabicScript, CyrillicScript, DeseretScript, GurmukhiScript, SimplifiedHanScript, TraditionalHanScript, LatinScript, MongolianScript, TifinaghScript, SimplifiedChineseScript, TraditionalChineseScript, ArmenianScript, BengaliScript, CherokeeScript, DevanagariScript, EthiopicScript, GeorgianScript, GreekScript, GujaratiScript, HebrewScript, JapaneseScript, KhmerScript, KannadaScript, KoreanScript, LaoScript, MalayalamScript, MyanmarScript, OriyaScript, TamilScript, TeluguScript, ThaanaScript, ThaiScript, TibetanScript, SinhalaScript, SyriacScript, YiScript, VaiScript, AvestanScript, BalineseScript, BamumScript, BatakScript, BopomofoScript, BrahmiScript, BugineseScript, BuhidScript, CanadianAboriginalScript, CarianScript, ChakmaScript, ChamScript, CopticScript, CypriotScript, EgyptianHieroglyphsScript, FraserScript, GlagoliticScript, GothicScript, HanScript, HangulScript, HanunooScript, ImperialAramaicScript, InscriptionalPahlaviScript, InscriptionalParthianScript, JavaneseScript, KaithiScript, KatakanaScript, KayahLiScript, KharoshthiScript, LannaScript, LepchaScript, LimbuScript, LinearBScript, LycianScript, LydianScript, MandaeanScript, MeiteiMayekScript, MeroiticScript, MeroiticCursiveScript, NkoScript, NewTaiLueScript, OghamScript, OlChikiScript, OldItalicScript, OldPersianScript, OldSouthArabianScript, OrkhonScript, OsmanyaScript, PhagsPaScript, PhoenicianScript, PollardPhoneticScript, RejangScript, RunicScript, SamaritanScript, SaurashtraScript, SharadaScript, ShavianScript, SoraSompengScript, CuneiformScript, SundaneseScript, SylotiNagriScript, TagalogScript, TagbanwaScript, TaiLeScript, TaiVietScript, TakriScript, UgariticScript, BrailleScript, HiraganaScript, CaucasianAlbanianScript, BassaVahScript, DuployanScript, ElbasanScript, GranthaScript, PahawhHmongScript, KhojkiScript, LinearAScript, MahajaniScript, ManichaeanScript, MendeKikakuiScript, ModiScript, MroScript, OldNorthArabianScript, NabataeanScript, PalmyreneScript, PauCinHauScript, OldPermicScript, PsalterPahlaviScript, SiddhamScript, KhudawadiScript, TirhutaScript, VarangKshitiScript, AhomScript, AnatolianHieroglyphsScript, HatranScript, MultaniScript, OldHungarianScript, SignWritingScript, AdlamScript, BhaiksukiScript, MarchenScript, NewaScript, OsageScript, TangutScript, HanWithBopomofoScript, JamoScript, BanglaScript, MendeScript, OdiaScript, %If (Qt_6_6_0 -) HanifiScript, %End }; enum CurrencySymbolFormat { CurrencyIsoCode, CurrencySymbol, CurrencyDisplayName, }; QLocale::Script script() const; QString bcp47Name() const; QString nativeLanguageName() const; QString nativeCountryName() const; Qt::DayOfWeek firstDayOfWeek() const; QList weekdays() const; QString toUpper(const QString &str) const; QString toLower(const QString &str) const; QString currencySymbol(QLocale::CurrencySymbolFormat format = QLocale::CurrencySymbol) const; QString toCurrencyString(double, const QString &symbol = QString(), int precision = -1) const; QStringList uiLanguages() const; static QString scriptToString(QLocale::Script script); %If (Qt_6_2_0 -) static QList matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Territory territory); %End %If (- Qt_6_2_0) static QList matchingLocales(QLocale::Language language, QLocale::Script script, QLocale::Country country); %End enum QuotationStyle { StandardQuotation, AlternateQuotation, }; QString quoteString(QStringView str, QLocale::QuotationStyle style = QLocale::StandardQuotation) const; QString createSeparatedList(const QStringList &list) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End enum FloatingPointPrecisionOption /BaseType=IntEnum/ { FloatingPointShortest, }; void swap(QLocale &other /Constrained/); QString toString(SIP_PYOBJECT i /TypeHint="int"/) const; %MethodCode // Convert a Python int avoiding overflow as much as possible. static PyObject *zero = 0; if (!zero) zero = PyLong_FromLong(0); int rc = PyObject_RichCompareBool(a0, zero, Py_LT); PyErr_Clear(); if (rc < 0) { sipError = sipBadCallableArg(0, a0); } else if (rc) { long long value = PyLong_AsLongLong(a0); if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toString(value)); } } else { unsigned long long value = PyLong_AsUnsignedLongLongMask(a0); if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toString(value)); } } %End QString toCurrencyString(SIP_PYOBJECT value /TypeHint="int"/, const QString &symbol = QString()) const; %MethodCode // Convert a Python int avoiding overflow as much as possible. static PyObject *zero = 0; if (!zero) zero = PyLong_FromLong(0); int rc = PyObject_RichCompareBool(a0, zero, Py_LT); PyErr_Clear(); if (rc < 0) { sipError = sipBadCallableArg(0, a0); } else if (rc) { long long value = PyLong_AsLongLong(a0); if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toCurrencyString(value, *a1)); } } else { unsigned long long value = PyLong_AsUnsignedLongLongMask(a0); if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_OverflowError)) { sipError = sipBadCallableArg(0, a0); } else { sipRes = new QString(sipCpp->toCurrencyString(value, *a1)); } } %End enum DataSizeFormat /BaseType=Flag/ { DataSizeIecFormat, DataSizeTraditionalFormat, DataSizeSIFormat, }; typedef QFlags DataSizeFormats; QString formattedDataSize(qint64 bytes, int precision = 2, QLocale::DataSizeFormats format = QLocale::DataSizeIecFormat) const; long toLong(const QString &s, bool *ok = 0) const; ulong toULong(const QString &s, bool *ok = 0) const; QDate toDate(const QString &string, QLocale::FormatType format, QCalendar cal) const; QDateTime toDateTime(const QString &string, QLocale::FormatType format, QCalendar cal) const; QDate toDate(const QString &string, const QString &format, QCalendar cal) const; QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal) const; QLocale collation() const; %If (Qt_6_3_0 -) static QString languageToCode(QLocale::Language language, QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode); %End %If (Qt_6_1_0 - Qt_6_3_0) static QString languageToCode(QLocale::Language language); %End %If (Qt_6_3_0 -) static QLocale::Language codeToLanguage(QStringView languageCode, QLocale::LanguageCodeTypes codeTypes = QLocale::AnyLanguageCode); %End %If (Qt_6_1_0 - Qt_6_3_0) static QLocale::Language codeToLanguage(QStringView languageCode); %End %If (Qt_6_1_0 -) static QString countryToCode(QLocale::Country country); %End %If (Qt_6_1_0 -) static QLocale::Country codeToCountry(QStringView countryCode); %End %If (Qt_6_1_0 -) static QString scriptToCode(QLocale::Script script); %End %If (Qt_6_1_0 -) static QLocale::Script codeToScript(QStringView scriptCode); %End %If (Qt_6_2_0 -) typedef QLocale::Country Territory; %End %If (Qt_6_2_0 -) QLocale::Territory territory() const; %End %If (Qt_6_2_0 -) QString nativeTerritoryName() const; %End %If (Qt_6_2_0 -) static QString territoryToCode(QLocale::Territory territory); %End %If (Qt_6_2_0 -) static QLocale::Territory codeToTerritory(QStringView territoryCode); %End %If (Qt_6_2_0 -) static QString territoryToString(QLocale::Territory territory); %End %If (Qt_6_3_0 -) enum LanguageCodeType /BaseType=IntFlag/ { ISO639Part1, ISO639Part2B, ISO639Part2T, ISO639Part3, LegacyLanguageCode, ISO639Part2, ISO639Alpha2, ISO639Alpha3, ISO639, AnyLanguageCode, }; %End %If (Qt_6_3_0 -) typedef QFlags LanguageCodeTypes; %End }; QDataStream &operator<<(QDataStream &, const QLocale &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QLocale & /Constrained/) /ReleaseGIL/; bool operator==(const QLocale &lhs, const QLocale &rhs); bool operator!=(const QLocale &lhs, const QLocale &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6053596 PyQt6-6.6.1/sip/QtCore/qlockfile.sip0000644000076500000240000000320714532160402016043 0ustar00philstaff// qlockfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLockFile { %TypeHeaderCode #include %End public: QLockFile(const QString &fileName); ~QLockFile(); bool lock() /ReleaseGIL/; bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; void setStaleLockTime(int); int staleLockTime() const; bool isLocked() const /ReleaseGIL/; bool getLockInfo(qint64 *pid /Out/, QString *hostname /Out/, QString *appname /Out/) const; bool removeStaleLockFile() /ReleaseGIL/; enum LockError { NoError, LockFailedError, PermissionError, UnknownError, }; QLockFile::LockError error() const; QString fileName() const; private: QLockFile(const QLockFile &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6905513 PyQt6-6.6.1/sip/QtCore/qlogging.sip0000644000076500000240000001466514532160402015713 0ustar00philstaff// qlogging.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg, QtInfoMsg, }; class QMessageLogContext /NoDefaultCtors/ { %TypeHeaderCode #include %End public: int line; const char *file; const char *function; const char *category; }; class QMessageLogger { %TypeHeaderCode #include %End public: QMessageLogger(); QMessageLogger(const char *file, int line, const char *function); QMessageLogger(const char *file, int line, const char *function, const char *category); void debug(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->debug("%s", a0); Py_END_ALLOW_THREADS %End void debug(const QLoggingCategory &cat, const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->debug(*a0, "%s", a1); Py_END_ALLOW_THREADS %End void info(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->info("%s", a0); Py_END_ALLOW_THREADS %End void info(const QLoggingCategory &cat, const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->info(*a0, "%s", a1); Py_END_ALLOW_THREADS %End void warning(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->warning("%s", a0); Py_END_ALLOW_THREADS %End void warning(const QLoggingCategory &cat, const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->warning(*a0, "%s", a1); Py_END_ALLOW_THREADS %End void critical(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->critical("%s", a0); Py_END_ALLOW_THREADS %End void critical(const QLoggingCategory &cat, const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->critical(*a0, "%s", a1); Py_END_ALLOW_THREADS %End void fatal(const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->fatal("%s", a0); Py_END_ALLOW_THREADS %End %If (Qt_6_5_0 -) void fatal(const QLoggingCategory &cat, const char *msg) const /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->fatal(*a0, "%s", a1); Py_END_ALLOW_THREADS %End %End private: QMessageLogger(const QMessageLogger &); }; void qCritical(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).critical("%s", a0); Py_END_ALLOW_THREADS %End void qDebug(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).debug("%s", a0); Py_END_ALLOW_THREADS %End void qFatal(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).fatal("%s", a0); Py_END_ALLOW_THREADS %End void qInfo(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).info("%s", a0); Py_END_ALLOW_THREADS %End void qWarning(const char *msg) /ReleaseGIL/; %MethodCode const char *file, *function; int line = qpycore_current_context(&file, &function); Py_BEGIN_ALLOW_THREADS QMessageLogger(file, line, function).warning("%s", a0); Py_END_ALLOW_THREADS %End SIP_PYCALLABLE qInstallMessageHandler(SIP_PYCALLABLE /AllowNone,TypeHint="Optional[Callable[[QtMsgType, QMessageLogContext, QString], None]]"/) /TypeHint="Optional[Callable[[QtMsgType, QMessageLogContext, QString], None]]"/; %MethodCode // Treat None as the default handler. QtMessageHandler old = qInstallMessageHandler((a0 != Py_None) ? qtcore_MessageHandler : 0); // If we recognise the old handler, then return it. Otherwise return // the default handler. This doesn't exactly mimic the Qt behaviour // but it is probably close enough for the way it will be used. sipRes = (old == qtcore_MessageHandler) ? qtcore_PyMessageHandler : Py_None; Py_INCREF(sipRes); // Save the new Python handler. Py_XDECREF(qtcore_PyMessageHandler); qtcore_PyMessageHandler = a0; Py_INCREF(qtcore_PyMessageHandler); %End // Module code needed by qInstallMessageHandler(). %ModuleCode // The user supplied Python handler. static PyObject *qtcore_PyMessageHandler = 0; // The C++ wrapper around the Python handler. static void qtcore_MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { PyObject *res; SIP_BLOCK_THREADS res = sipCallMethod(0, qtcore_PyMessageHandler, "FDD", type, sipType_QtMsgType, &context, sipType_QMessageLogContext, NULL, &msg, sipType_QString, NULL); Py_XDECREF(res); if (res != NULL && res != Py_None) { PyErr_SetString(PyExc_TypeError, "invalid result type from PyQt message handler"); res = NULL; } if (res == NULL) pyqt6_err_print(); SIP_UNBLOCK_THREADS } %End void qSetMessagePattern(const QString &messagePattern); QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, const QString &buf); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.599362 PyQt6-6.6.1/sip/QtCore/qloggingcategory.sip0000644000076500000240000000311414532160402017434 0ustar00philstaff// qloggingcategory.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLoggingCategory { %TypeHeaderCode #include %End public: QLoggingCategory(const char *category, QtMsgType severityLevel = QtDebugMsg); ~QLoggingCategory(); bool isEnabled(QtMsgType type) const; void setEnabled(QtMsgType type, bool enable); bool isDebugEnabled() const; bool isInfoEnabled() const; bool isWarningEnabled() const; bool isCriticalEnabled() const; const char *categoryName() const; QLoggingCategory &operator()(); static QLoggingCategory *defaultCategory(); static void setFilterRules(const QString &rules); private: QLoggingCategory(const QLoggingCategory &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6388268 PyQt6-6.6.1/sip/QtCore/qmargins.sip0000644000076500000240000001037314532160402015715 0ustar00philstaff// qmargins.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMargins { %TypeHeaderCode #include %End public: QMargins(); QMargins(int aleft, int atop, int aright, int abottom); bool isNull() const; int left() const; int top() const; int right() const; int bottom() const; void setLeft(int aleft); void setTop(int atop); void setRight(int aright); void setBottom(int abottom); QMargins &operator+=(const QMargins &margins); QMargins &operator-=(const QMargins &margins); QMargins &operator*=(int factor /Constrained/); QMargins &operator/=(int divisor /Constrained/); QMargins &operator*=(qreal factor); QMargins &operator/=(qreal divisor); QMargins &operator+=(int margin); QMargins &operator-=(int margin); %If (Qt_6_4_0 -) QMarginsF toMarginsF() const; %End }; bool operator==(const QMargins &m1, const QMargins &m2); bool operator!=(const QMargins &m1, const QMargins &m2); QDataStream &operator<<(QDataStream &, const QMargins & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMargins & /Constrained/) /ReleaseGIL/; QMargins operator+(const QMargins &m1, const QMargins &m2); QMargins operator-(const QMargins &m1, const QMargins &m2); QMargins operator*(const QMargins &margins, int factor /Constrained/); QMargins operator*(const QMargins &margins, qreal factor); QMargins operator/(const QMargins &margins, int divisor /Constrained/); QMargins operator/(const QMargins &margins, qreal divisor); QMargins operator+(const QMargins &lhs, int rhs); QMargins operator+(int lhs, const QMargins &rhs); QMargins operator-(const QMargins &lhs, int rhs); QMargins operator+(const QMargins &margins); QMargins operator-(const QMargins &margins); QMargins operator|(const QMargins &m1, const QMargins &m2); class QMarginsF { %TypeHeaderCode #include %End public: QMarginsF(); QMarginsF(qreal aleft, qreal atop, qreal aright, qreal abottom); QMarginsF(const QMargins &margins); bool isNull() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setLeft(qreal aleft); void setTop(qreal atop); void setRight(qreal aright); void setBottom(qreal abottom); QMarginsF &operator+=(const QMarginsF &margins); QMarginsF &operator-=(const QMarginsF &margins); QMarginsF &operator+=(qreal addend); QMarginsF &operator-=(qreal subtrahend); QMarginsF &operator*=(qreal factor); QMarginsF &operator/=(qreal divisor); QMargins toMargins() const; }; QDataStream &operator<<(QDataStream &, const QMarginsF & /Constrained/); QDataStream &operator>>(QDataStream &, QMarginsF & /Constrained/); bool operator==(const QMarginsF &lhs, const QMarginsF &rhs); bool operator!=(const QMarginsF &lhs, const QMarginsF &rhs); QMarginsF operator+(const QMarginsF &lhs, const QMarginsF &rhs); QMarginsF operator-(const QMarginsF &lhs, const QMarginsF &rhs); QMarginsF operator+(const QMarginsF &lhs, qreal rhs); QMarginsF operator+(qreal lhs, const QMarginsF &rhs); QMarginsF operator-(const QMarginsF &lhs, qreal rhs); QMarginsF operator*(const QMarginsF &lhs, qreal rhs); QMarginsF operator*(qreal lhs, const QMarginsF &rhs); QMarginsF operator/(const QMarginsF &lhs, qreal divisor); QMarginsF operator+(const QMarginsF &margins); QMarginsF operator-(const QMarginsF &margins); QMarginsF operator|(const QMarginsF &m1, const QMarginsF &m2); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7008877 PyQt6-6.6.1/sip/QtCore/qmessageauthenticationcode.sip0000644000076500000240000000454514532160402021500 0ustar00philstaff// qmessageauthenticationcode.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMessageAuthenticationCode { %TypeHeaderCode #include %End public: %If (Qt_6_6_0 -) QMessageAuthenticationCode(QCryptographicHash::Algorithm method, QByteArrayView key = {}); %End %If (- Qt_6_6_0) QMessageAuthenticationCode(QCryptographicHash::Algorithm method, const QByteArray &key = QByteArray()); %End ~QMessageAuthenticationCode(); void reset(); %If (Qt_6_6_0 -) void setKey(QByteArrayView key); %End %If (- Qt_6_6_0) void setKey(const QByteArray &key); %End %If (Qt_6_6_0 -) void addData(QByteArrayView data); %End %If (- Qt_6_6_0) void addData(SIP_PYBUFFER); %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { sipCpp->addData(reinterpret_cast(bi.bi_buf), bi.bi_len); sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End %End bool addData(QIODevice *device); QByteArray result() const; %If (Qt_6_6_0 -) static QByteArray hash(QByteArrayView message, QByteArrayView key, QCryptographicHash::Algorithm method); %End %If (- Qt_6_6_0) static QByteArray hash(const QByteArray &message, const QByteArray &key, QCryptographicHash::Algorithm method); %End %If (Qt_6_6_0 -) void swap(QMessageAuthenticationCode &other /Constrained/); %End private: QMessageAuthenticationCode(const QMessageAuthenticationCode &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6751683 PyQt6-6.6.1/sip/QtCore/qmetaobject.sip0000644000076500000240000002215314532160402016371 0ustar00philstaff// qmetaobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaMethod { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaMethod::invoke() returns false. static void qtcore_invoke_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaMethod.invoke() call failed"); } %End public: QMetaMethod(); const char *typeName() const; QList parameterTypes() const; QList parameterNames() const; const char *tag() const; enum Access { Private, Protected, Public, }; QMetaMethod::Access access() const; enum MethodType { Method, Signal, Slot, Constructor, }; QMetaMethod::MethodType methodType() const; SIP_PYOBJECT invoke(QObject *object, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else { qtcore_invoke_exception(); } %End SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else { qtcore_invoke_exception(); } %End SIP_PYOBJECT invoke(QObject *object, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a1Wrapper); else qtcore_invoke_exception(); %End SIP_PYOBJECT invoke(QObject *object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue /GetWrapper/, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()) const; %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = sipCpp->invoke(a0, a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, *a9, *a10, *a11, *a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invoke_exception(); %End int methodIndex() const; bool isValid() const; QByteArray methodSignature() const; QByteArray name() const; int returnType() const; int parameterCount() const; int parameterType(int index) const; QMetaType returnMetaType() const; QMetaType parameterMetaType(int index) const; QByteArray parameterTypeName(int index) const; int relativeMethodIndex() const; %If (Qt_6_2_0 -) bool isConst() const; %End }; class QMetaEnum { %TypeHeaderCode #include %End public: QMetaEnum(); const char *name() const; bool isFlag() const; int keyCount() const; const char *key(int index) const; int value(int index) const; const char *scope() const; int keyToValue(const char *key, bool *ok = 0) const; const char *valueToKey(int value) const; int keysToValue(const char *keys, bool *ok = 0) const; QByteArray valueToKeys(int value) const; bool isValid() const; bool isScoped() const; const char *enumName() const; %If (Qt_6_6_0 -) QMetaType metaType() const; %End }; class QMetaProperty { %TypeHeaderCode #include %End public: QMetaProperty(); const char *name() const; const char *typeName() const; bool isReadable() const; bool isWritable() const; bool isDesignable() const; bool isScriptable() const; bool isStored() const; bool isFlagType() const; bool isEnumType() const; QMetaEnum enumerator() const; SIP_PYOBJECT read(const QObject *obj) const /TypeHint="Any"/; %MethodCode // Make use of the QMetaProperty to provide the extra information to correctly // handle enums. sipRes = qpycore_PyObject_FromQVariant(*sipCpp, sipCpp->read(a0)); %End bool write(QObject *obj, const QVariant &value) const; %MethodCode // If it looks like we are trying to write an int to an enum then we are // probably trying to write to an unregistered enum. Converting the int to the // name of the corresponding key should work (although this isn't a documented // feature). QMetaEnum me = sipCpp->enumerator(); if (me.isValid() && a1->typeId() == QMetaType::Int) { QString key; if (me.isFlag()) { key = QString(me.valueToKeys(a1->toInt())); } else { const char *key_s = me.valueToKey(a1->toInt()); if (key_s) { key = QString(key_s); } else { PyErr_Format(PyExc_ValueError, "%S is not a valid enum member", a1); sipIsErr = 1; } } if (!sipIsErr) *const_cast(a1) = QVariant(key); } if (!sipIsErr) sipRes = sipCpp->write(a0, *a1); %End bool reset(QObject *obj) const; bool hasStdCppSet() const; bool isValid() const; bool isResettable() const; bool isUser() const; int userType() const; bool hasNotifySignal() const; QMetaMethod notifySignal() const; int notifySignalIndex() const; int propertyIndex() const; bool isConstant() const; bool isFinal() const; int relativePropertyIndex() const; bool isRequired() const; QMetaType metaType() const; bool isBindable() const; int typeId() const; }; class QMetaClassInfo { %TypeHeaderCode #include %End public: QMetaClassInfo(); const char *name() const; const char *value() const; }; bool operator==(const QMetaMethod &m1, const QMetaMethod &m2); bool operator!=(const QMetaMethod &m1, const QMetaMethod &m2); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.623762 PyQt6-6.6.1/sip/QtCore/qmetatype.sip0000644000076500000240000001035514532160402016105 0ustar00philstaff// qmetatype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMetaType { %TypeHeaderCode #include %End public: enum Type { UnknownType, Void, Bool, Int, UInt, LongLong, ULongLong, Double, QChar, QVariantMap, QVariantList, QVariantHash, QString, QStringList, QByteArray, QBitArray, QDate, QTime, QDateTime, QUrl, QLocale, QRect, QRectF, QSize, QSizeF, QLine, QLineF, QPoint, QPointF, LastCoreType, FirstGuiType, QFont, QPixmap, QBrush, QColor, QPalette, QIcon, QImage, QPolygon, QRegion, QBitmap, QCursor, QSizePolicy, QKeySequence, QPen, QTextLength, QTextFormat, QTransform, VoidStar, Long, Short, Char, Char16, Char32, ULong, UShort, UChar, Float, %If (Qt_6_5_0 -) Float16, %End QObjectStar, QMatrix4x4, QVector2D, QVector3D, QVector4D, QQuaternion, QEasingCurve, QVariant, QUuid, QModelIndex, QPolygonF, SChar, QRegularExpression, QJsonValue, QJsonObject, QJsonArray, QJsonDocument, QByteArrayList, QPersistentModelIndex, QCborSimpleType, QCborValue, QCborArray, QCborMap, QColorSpace, QVariantPair, User, }; static bool isRegistered(int type); QMetaType(); explicit QMetaType(int type); enum TypeFlag /BaseType=Flag/ { NeedsConstruction, NeedsDestruction, PointerToQObject, IsEnumeration, IsUnsignedEnumeration, IsPointer, RelocatableType, IsQmlList, %If (Qt_6_2_0 -) IsConst, %End %If (Qt_6_5_0 -) NeedsCopyConstruction, %End %If (Qt_6_5_0 -) NeedsMoveConstruction, %End }; typedef QFlags TypeFlags; qsizetype sizeOf() const; QMetaType::TypeFlags flags() const; bool isValid() const; bool isRegistered() const; int id() const; %If (Qt_6_1_0 -) bool hasRegisteredDataStreamOperators() const; %End bool hasRegisteredDebugStreamOperator() const; const char *name() const /Encoding="None"/; qsizetype alignOf() const; bool isEqualityComparable() const; bool isOrdered() const; static QMetaType fromName(QByteArrayView name); static bool canConvert(QMetaType fromType, QMetaType toType); static bool canView(QMetaType fromType, QMetaType toType); %If (Qt_6_4_0 -) Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End %If (Qt_6_5_0 -) void registerType() const; %End %If (Qt_6_5_0 -) bool isDefaultConstructible() const; %End %If (Qt_6_5_0 -) bool isCopyConstructible() const; %End %If (Qt_6_5_0 -) bool isMoveConstructible() const; %End %If (Qt_6_5_0 -) bool isDestructible() const; %End %If (Qt_6_6_0 -) QMetaType underlyingType() const; %End private: QMetaType(const QMetaType &); }; bool operator==(QMetaType a, QMetaType b); bool operator!=(QMetaType a, QMetaType b); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.595785 PyQt6-6.6.1/sip/QtCore/qmimedata.sip0000644000076500000240000000364214532160402016037 0ustar00philstaff// qmimedata.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeData : QObject { %TypeHeaderCode #include %End public: QMimeData(); virtual ~QMimeData(); QList urls() const; void setUrls(const QList &urls); bool hasUrls() const; QString text() const; void setText(const QString &text); bool hasText() const; QString html() const; void setHtml(const QString &html); bool hasHtml() const; QVariant imageData() const; void setImageData(const QVariant &image); bool hasImage() const; QVariant colorData() const; void setColorData(const QVariant &color); bool hasColor() const; QByteArray data(const QString &mimetype) const; void setData(const QString &mimetype, const QByteArray &data); virtual bool hasFormat(const QString &mimetype) const; virtual QStringList formats() const; void clear(); void removeFormat(const QString &mimetype); protected: virtual QVariant retrieveData(const QString &mimetype, QMetaType preferredType) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6732488 PyQt6-6.6.1/sip/QtCore/qmimedatabase.sip0000644000076500000240000000404214532160402016665 0ustar00philstaff// qmimedatabase.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeDatabase { %TypeHeaderCode #include %End public: QMimeDatabase(); ~QMimeDatabase(); QMimeType mimeTypeForName(const QString &nameOrAlias) const; enum MatchMode { MatchDefault, MatchExtension, MatchContent, }; QMimeType mimeTypeForFile(const QString &fileName, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QMimeType mimeTypeForFile(const QFileInfo &fileInfo, QMimeDatabase::MatchMode mode = QMimeDatabase::MatchDefault) const; QList mimeTypesForFileName(const QString &fileName) const; QMimeType mimeTypeForData(const QByteArray &data) const; QMimeType mimeTypeForData(QIODevice *device) const; QMimeType mimeTypeForUrl(const QUrl &url) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, QIODevice *device) const; QMimeType mimeTypeForFileNameAndData(const QString &fileName, const QByteArray &data) const; QString suffixForFileName(const QString &fileName) const; QList allMimeTypes() const; private: QMimeDatabase(const QMimeDatabase &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6680462 PyQt6-6.6.1/sip/QtCore/qmimetype.sip0000644000076500000240000000342414532160402016105 0ustar00philstaff// qmimetype.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMimeType { %TypeHeaderCode #include %End public: QMimeType(); QMimeType(const QMimeType &other); ~QMimeType(); void swap(QMimeType &other /Constrained/); bool operator==(const QMimeType &other) const; bool operator!=(const QMimeType &other) const; bool isValid() const; bool isDefault() const; QString name() const; QString comment() const; QString genericIconName() const; QString iconName() const; QStringList globPatterns() const; QStringList parentMimeTypes() const; QStringList allAncestors() const; QStringList aliases() const; QStringList suffixes() const; QString preferredSuffix() const; bool inherits(const QString &mimeTypeName) const; QString filterString() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5949135 PyQt6-6.6.1/sip/QtCore/qmutex.sip0000644000076500000240000000325414532160402015417 0ustar00philstaff// qmutex.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMutex { %TypeHeaderCode #include %End public: QMutex(); ~QMutex(); // Methods from QBasicMutex. void lock() /ReleaseGIL/; bool tryLock() /ReleaseGIL/; void unlock() /ReleaseGIL/; %If (Qt_6_6_0 -) bool tryLock(QDeadlineTimer timeout) /ReleaseGIL/; %End bool tryLock(int timeout) /ReleaseGIL/; private: QMutex(const QMutex &); }; class QRecursiveMutex { %TypeHeaderCode #include %End public: QRecursiveMutex(); ~QRecursiveMutex(); void lock() /ReleaseGIL/; %If (Qt_6_6_0 -) bool tryLock(QDeadlineTimer) /ReleaseGIL/ [bool (QDeadlineTimer timer = {})]; %End bool tryLock(int timeout = 0) /ReleaseGIL/; void unlock() /ReleaseGIL/; private: QRecursiveMutex(const QRecursiveMutex &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7134585 PyQt6-6.6.1/sip/QtCore/qmutexlocker.sip0000644000076500000240000000365114532160402016620 0ustar00philstaff// This is the SIP interface definition for the QMutexLocker class. // // In Qt6 this is a template so we wrap our own class that implements the Qt5 // API. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class PyQtMutexLocker /PyName=QMutexLocker/ { %TypeHeaderCode #include "qpycore_pyqtmutexlocker.h" %End public: PyQtMutexLocker(QMutex *mutex /GetWrapper/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp = new PyQtMutexLocker(a0, a0Wrapper); Py_END_ALLOW_THREADS %End PyQtMutexLocker(QRecursiveMutex *mutex /GetWrapper/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp = new PyQtMutexLocker(a0, a0Wrapper); Py_END_ALLOW_THREADS %End ~PyQtMutexLocker(); SIP_PYOBJECT mutex() /TypeHint="Union[QMutex, QRecursiveMutex]"/; void unlock() /ReleaseGIL/; void relock() /ReleaseGIL/; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: PyQtMutexLocker(const PyQtMutexLocker &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6478896 PyQt6-6.6.1/sip/QtCore/qnamespace.sip0000644000076500000240000010272714532160402016216 0ustar00philstaff// qnamespace.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End enum GlobalColor { color0, color1, black, white, darkGray, gray, lightGray, red, green, blue, cyan, magenta, yellow, darkRed, darkGreen, darkBlue, darkCyan, darkMagenta, darkYellow, transparent, }; enum KeyboardModifier /BaseType=Flag/ { NoModifier, ShiftModifier, ControlModifier, AltModifier, MetaModifier, KeypadModifier, GroupSwitchModifier, KeyboardModifierMask, }; typedef QFlags KeyboardModifiers; enum Modifier /BaseType=Flag/ { META, SHIFT, CTRL, ALT, MODIFIER_MASK, }; typedef QFlags Modifiers; enum MouseButton /BaseType=Flag/ { NoButton, AllButtons, LeftButton, RightButton, MiddleButton, XButton1, XButton2, BackButton, ExtraButton1, ForwardButton, ExtraButton2, TaskButton, ExtraButton3, ExtraButton4, ExtraButton5, ExtraButton6, ExtraButton7, ExtraButton8, ExtraButton9, ExtraButton10, ExtraButton11, ExtraButton12, ExtraButton13, ExtraButton14, ExtraButton15, ExtraButton16, ExtraButton17, ExtraButton18, ExtraButton19, ExtraButton20, ExtraButton21, ExtraButton22, ExtraButton23, ExtraButton24, }; typedef QFlags MouseButtons; enum Orientation /BaseType=Flag/ { Horizontal, Vertical, }; typedef QFlags Orientations; enum FocusPolicy /BaseType=IntFlag/ { NoFocus, TabFocus, ClickFocus, StrongFocus, WheelFocus, }; enum SortOrder { AscendingOrder, DescendingOrder, }; enum AlignmentFlag /BaseType=IntFlag/ { AlignLeft, AlignLeading, AlignRight, AlignTrailing, AlignHCenter, AlignJustify, AlignAbsolute, AlignHorizontal_Mask, AlignTop, AlignBottom, AlignVCenter, AlignVertical_Mask, AlignCenter, AlignBaseline, }; typedef QFlags Alignment; enum TextFlag /BaseType=IntFlag/ { TextSingleLine, TextDontClip, TextExpandTabs, TextShowMnemonic, TextWordWrap, TextWrapAnywhere, TextDontPrint, TextIncludeTrailingSpaces, TextHideMnemonic, TextJustificationForced, }; enum TextElideMode { ElideLeft, ElideRight, ElideMiddle, ElideNone, }; enum WindowType /BaseType=IntFlag/ { Widget, Window, Dialog, Sheet, Drawer, Popup, Tool, ToolTip, SplashScreen, Desktop, SubWindow, WindowType_Mask, MSWindowsFixedSizeDialogHint, MSWindowsOwnDC, X11BypassWindowManagerHint, FramelessWindowHint, CustomizeWindowHint, WindowTitleHint, WindowSystemMenuHint, WindowMinimizeButtonHint, WindowMaximizeButtonHint, WindowMinMaxButtonsHint, WindowContextHelpButtonHint, WindowShadeButtonHint, WindowStaysOnTopHint, WindowStaysOnBottomHint, WindowCloseButtonHint, MacWindowToolBarButtonHint, BypassGraphicsProxyWidget, WindowTransparentForInput, WindowOverridesSystemGestures, WindowDoesNotAcceptFocus, NoDropShadowWindowHint, WindowFullscreenButtonHint, ForeignWindow, BypassWindowManagerHint, CoverWindow, MaximizeUsingFullscreenGeometryHint, }; typedef QFlags WindowFlags; enum WindowState /BaseType=Flag/ { WindowNoState, WindowMinimized, WindowMaximized, WindowFullScreen, WindowActive, }; typedef QFlags WindowStates; enum WidgetAttribute { WA_Disabled, WA_UnderMouse, WA_MouseTracking, WA_OpaquePaintEvent, WA_StaticContents, WA_LaidOut, WA_PaintOnScreen, WA_NoSystemBackground, WA_UpdatesDisabled, WA_Mapped, WA_InputMethodEnabled, WA_WState_Visible, WA_WState_Hidden, WA_ForceDisabled, WA_KeyCompression, WA_PendingMoveEvent, WA_PendingResizeEvent, WA_SetPalette, WA_SetFont, WA_SetCursor, WA_NoChildEventsFromChildren, WA_WindowModified, WA_Resized, WA_Moved, WA_PendingUpdate, WA_InvalidSize, WA_CustomWhatsThis, WA_LayoutOnEntireRect, WA_OutsideWSRange, WA_GrabbedShortcut, WA_TransparentForMouseEvents, WA_PaintUnclipped, WA_SetWindowIcon, WA_NoMouseReplay, WA_DeleteOnClose, WA_RightToLeft, WA_SetLayoutDirection, WA_NoChildEventsForParent, WA_ForceUpdatesDisabled, WA_WState_Created, WA_WState_CompressKeys, WA_WState_InPaintEvent, WA_WState_Reparented, WA_WState_ConfigPending, WA_WState_Polished, WA_WState_OwnSizePolicy, WA_WState_ExplicitShowHide, WA_MouseNoMask, WA_NoMousePropagation, WA_Hover, WA_InputMethodTransparent, WA_QuitOnClose, WA_KeyboardFocusChange, WA_AcceptDrops, WA_WindowPropagation, WA_NoX11EventCompression, WA_TintedBackground, WA_X11OpenGLOverlay, WA_AttributeCount, WA_AlwaysShowToolTips, WA_MacOpaqueSizeGrip, WA_SetStyle, WA_SetLocale, WA_MacShowFocusRect, WA_MacNormalSize, WA_MacSmallSize, WA_MacMiniSize, WA_LayoutUsesWidgetRect, WA_StyledBackground, WA_MacAlwaysShowToolWindow, WA_StyleSheet, WA_ShowWithoutActivating, WA_NativeWindow, WA_DontCreateNativeAncestors, WA_DontShowOnScreen, WA_X11NetWmWindowTypeDesktop, WA_X11NetWmWindowTypeDock, WA_X11NetWmWindowTypeToolBar, WA_X11NetWmWindowTypeMenu, WA_X11NetWmWindowTypeUtility, WA_X11NetWmWindowTypeSplash, WA_X11NetWmWindowTypeDialog, WA_X11NetWmWindowTypeDropDownMenu, WA_X11NetWmWindowTypePopupMenu, WA_X11NetWmWindowTypeToolTip, WA_X11NetWmWindowTypeNotification, WA_X11NetWmWindowTypeCombo, WA_X11NetWmWindowTypeDND, WA_TranslucentBackground, WA_AcceptTouchEvents, WA_TouchPadAcceptSingleTouchEvents, WA_X11DoNotAcceptFocus, WA_AlwaysStackOnTop, WA_TabletTracking, WA_ContentsMarginsRespectsSafeArea, WA_StyleSheetTarget, }; enum ImageConversionFlag /BaseType=Flag/ { AutoColor, ColorOnly, MonoOnly, ThresholdAlphaDither, OrderedAlphaDither, DiffuseAlphaDither, DiffuseDither, OrderedDither, ThresholdDither, AutoDither, PreferDither, AvoidDither, NoOpaqueDetection, NoFormatConversion, }; typedef QFlags ImageConversionFlags; enum BGMode { TransparentMode, OpaqueMode, }; enum Key /BaseType=IntEnum/ { Key_Escape, Key_Tab, Key_Backtab, Key_Backspace, Key_Return, Key_Enter, Key_Insert, Key_Delete, Key_Pause, Key_Print, Key_SysReq, Key_Clear, Key_Home, Key_End, Key_Left, Key_Up, Key_Right, Key_Down, Key_PageUp, Key_PageDown, Key_Shift, Key_Control, Key_Meta, Key_Alt, Key_CapsLock, Key_NumLock, Key_ScrollLock, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11, Key_F12, Key_F13, Key_F14, Key_F15, Key_F16, Key_F17, Key_F18, Key_F19, Key_F20, Key_F21, Key_F22, Key_F23, Key_F24, Key_F25, Key_F26, Key_F27, Key_F28, Key_F29, Key_F30, Key_F31, Key_F32, Key_F33, Key_F34, Key_F35, Key_Super_L, Key_Super_R, Key_Menu, Key_Hyper_L, Key_Hyper_R, Key_Help, Key_Direction_L, Key_Direction_R, Key_Space, Key_Any, Key_Exclam, Key_QuoteDbl, Key_NumberSign, Key_Dollar, Key_Percent, Key_Ampersand, Key_Apostrophe, Key_ParenLeft, Key_ParenRight, Key_Asterisk, Key_Plus, Key_Comma, Key_Minus, Key_Period, Key_Slash, Key_0, Key_1, Key_2, Key_3, Key_4, Key_5, Key_6, Key_7, Key_8, Key_9, Key_Colon, Key_Semicolon, Key_Less, Key_Equal, Key_Greater, Key_Question, Key_At, Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, Key_H, Key_I, Key_J, Key_K, Key_L, Key_M, Key_N, Key_O, Key_P, Key_Q, Key_R, Key_S, Key_T, Key_U, Key_V, Key_W, Key_X, Key_Y, Key_Z, Key_BracketLeft, Key_Backslash, Key_BracketRight, Key_AsciiCircum, Key_Underscore, Key_QuoteLeft, Key_BraceLeft, Key_Bar, Key_BraceRight, Key_AsciiTilde, Key_nobreakspace, Key_exclamdown, Key_cent, Key_sterling, Key_currency, Key_yen, Key_brokenbar, Key_section, Key_diaeresis, Key_copyright, Key_ordfeminine, Key_guillemotleft, Key_notsign, Key_hyphen, Key_registered, Key_macron, Key_degree, Key_plusminus, Key_twosuperior, Key_threesuperior, Key_acute, Key_mu, Key_paragraph, Key_periodcentered, Key_cedilla, Key_onesuperior, Key_masculine, Key_guillemotright, Key_onequarter, Key_onehalf, Key_threequarters, Key_questiondown, Key_Agrave, Key_Aacute, Key_Acircumflex, Key_Atilde, Key_Adiaeresis, Key_Aring, Key_AE, Key_Ccedilla, Key_Egrave, Key_Eacute, Key_Ecircumflex, Key_Ediaeresis, Key_Igrave, Key_Iacute, Key_Icircumflex, Key_Idiaeresis, Key_ETH, Key_Ntilde, Key_Ograve, Key_Oacute, Key_Ocircumflex, Key_Otilde, Key_Odiaeresis, Key_multiply, Key_Ooblique, Key_Ugrave, Key_Uacute, Key_Ucircumflex, Key_Udiaeresis, Key_Yacute, Key_THORN, Key_ssharp, Key_division, Key_ydiaeresis, Key_AltGr, Key_Multi_key, Key_Codeinput, Key_SingleCandidate, Key_MultipleCandidate, Key_PreviousCandidate, Key_Mode_switch, Key_Kanji, Key_Muhenkan, Key_Henkan, Key_Romaji, Key_Hiragana, Key_Katakana, Key_Hiragana_Katakana, Key_Zenkaku, Key_Hankaku, Key_Zenkaku_Hankaku, Key_Touroku, Key_Massyo, Key_Kana_Lock, Key_Kana_Shift, Key_Eisu_Shift, Key_Eisu_toggle, Key_Hangul, Key_Hangul_Start, Key_Hangul_End, Key_Hangul_Hanja, Key_Hangul_Jamo, Key_Hangul_Romaja, Key_Hangul_Jeonja, Key_Hangul_Banja, Key_Hangul_PreHanja, Key_Hangul_PostHanja, Key_Hangul_Special, Key_Dead_Grave, Key_Dead_Acute, Key_Dead_Circumflex, Key_Dead_Tilde, Key_Dead_Macron, Key_Dead_Breve, Key_Dead_Abovedot, Key_Dead_Diaeresis, Key_Dead_Abovering, Key_Dead_Doubleacute, Key_Dead_Caron, Key_Dead_Cedilla, Key_Dead_Ogonek, Key_Dead_Iota, Key_Dead_Voiced_Sound, Key_Dead_Semivoiced_Sound, Key_Dead_Belowdot, Key_Dead_Hook, Key_Dead_Horn, Key_Back, Key_Forward, Key_Stop, Key_Refresh, Key_VolumeDown, Key_VolumeMute, Key_VolumeUp, Key_BassBoost, Key_BassUp, Key_BassDown, Key_TrebleUp, Key_TrebleDown, Key_MediaPlay, Key_MediaStop, Key_MediaPrevious, Key_MediaNext, Key_MediaRecord, Key_HomePage, Key_Favorites, Key_Search, Key_Standby, Key_OpenUrl, Key_LaunchMail, Key_LaunchMedia, Key_Launch0, Key_Launch1, Key_Launch2, Key_Launch3, Key_Launch4, Key_Launch5, Key_Launch6, Key_Launch7, Key_Launch8, Key_Launch9, Key_LaunchA, Key_LaunchB, Key_LaunchC, Key_LaunchD, Key_LaunchE, Key_LaunchF, Key_MediaLast, Key_Select, Key_Yes, Key_No, Key_Context1, Key_Context2, Key_Context3, Key_Context4, Key_Call, Key_Hangup, Key_Flip, Key_unknown, Key_Execute, Key_Printer, Key_Play, Key_Sleep, Key_Zoom, Key_Cancel, Key_MonBrightnessUp, Key_MonBrightnessDown, Key_KeyboardLightOnOff, Key_KeyboardBrightnessUp, Key_KeyboardBrightnessDown, Key_PowerOff, Key_WakeUp, Key_Eject, Key_ScreenSaver, Key_WWW, Key_Memo, Key_LightBulb, Key_Shop, Key_History, Key_AddFavorite, Key_HotLinks, Key_BrightnessAdjust, Key_Finance, Key_Community, Key_AudioRewind, Key_BackForward, Key_ApplicationLeft, Key_ApplicationRight, Key_Book, Key_CD, Key_Calculator, Key_ToDoList, Key_ClearGrab, Key_Close, Key_Copy, Key_Cut, Key_Display, Key_DOS, Key_Documents, Key_Excel, Key_Explorer, Key_Game, Key_Go, Key_iTouch, Key_LogOff, Key_Market, Key_Meeting, Key_MenuKB, Key_MenuPB, Key_MySites, Key_News, Key_OfficeHome, Key_Option, Key_Paste, Key_Phone, Key_Calendar, Key_Reply, Key_Reload, Key_RotateWindows, Key_RotationPB, Key_RotationKB, Key_Save, Key_Send, Key_Spell, Key_SplitScreen, Key_Support, Key_TaskPane, Key_Terminal, Key_Tools, Key_Travel, Key_Video, Key_Word, Key_Xfer, Key_ZoomIn, Key_ZoomOut, Key_Away, Key_Messenger, Key_WebCam, Key_MailForward, Key_Pictures, Key_Music, Key_Battery, Key_Bluetooth, Key_WLAN, Key_UWB, Key_AudioForward, Key_AudioRepeat, Key_AudioRandomPlay, Key_Subtitle, Key_AudioCycleTrack, Key_Time, Key_Hibernate, Key_View, Key_TopMenu, Key_PowerDown, Key_Suspend, Key_ContrastAdjust, Key_MediaPause, Key_MediaTogglePlayPause, Key_LaunchG, Key_LaunchH, Key_ToggleCallHangup, Key_VoiceDial, Key_LastNumberRedial, Key_Camera, Key_CameraFocus, Key_TouchpadToggle, Key_TouchpadOn, Key_TouchpadOff, Key_MicMute, Key_Red, Key_Green, Key_Yellow, Key_Blue, Key_ChannelUp, Key_ChannelDown, Key_Guide, Key_Info, Key_Settings, Key_Exit, Key_MicVolumeUp, Key_MicVolumeDown, Key_New, Key_Open, Key_Find, Key_Undo, Key_Redo, Key_Dead_Stroke, Key_Dead_Abovecomma, Key_Dead_Abovereversedcomma, Key_Dead_Doublegrave, Key_Dead_Belowring, Key_Dead_Belowmacron, Key_Dead_Belowcircumflex, Key_Dead_Belowtilde, Key_Dead_Belowbreve, Key_Dead_Belowdiaeresis, Key_Dead_Invertedbreve, Key_Dead_Belowcomma, Key_Dead_Currency, Key_Dead_a, Key_Dead_A, Key_Dead_e, Key_Dead_E, Key_Dead_i, Key_Dead_I, Key_Dead_o, Key_Dead_O, Key_Dead_u, Key_Dead_U, Key_Dead_Small_Schwa, Key_Dead_Capital_Schwa, Key_Dead_Greek, Key_Dead_Lowline, Key_Dead_Aboveverticalline, Key_Dead_Belowverticalline, Key_Dead_Longsolidusoverlay, }; enum ArrowType { NoArrow, UpArrow, DownArrow, LeftArrow, RightArrow, }; enum PenStyle { NoPen, SolidLine, DashLine, DotLine, DashDotLine, DashDotDotLine, CustomDashLine, }; enum PenCapStyle { FlatCap, SquareCap, RoundCap, }; enum PenJoinStyle { MiterJoin, BevelJoin, RoundJoin, MPenJoinStyle, SvgMiterJoin, }; enum BrushStyle { NoBrush, SolidPattern, Dense1Pattern, Dense2Pattern, Dense3Pattern, Dense4Pattern, Dense5Pattern, Dense6Pattern, Dense7Pattern, HorPattern, VerPattern, CrossPattern, BDiagPattern, FDiagPattern, DiagCrossPattern, LinearGradientPattern, RadialGradientPattern, ConicalGradientPattern, TexturePattern, }; enum UIEffect { UI_General, UI_AnimateMenu, UI_FadeMenu, UI_AnimateCombo, UI_AnimateTooltip, UI_FadeTooltip, UI_AnimateToolBox, }; enum CursorShape { ArrowCursor, UpArrowCursor, CrossCursor, WaitCursor, IBeamCursor, SizeVerCursor, SizeHorCursor, SizeBDiagCursor, SizeFDiagCursor, SizeAllCursor, BlankCursor, SplitVCursor, SplitHCursor, PointingHandCursor, ForbiddenCursor, OpenHandCursor, ClosedHandCursor, WhatsThisCursor, BusyCursor, LastCursor, BitmapCursor, CustomCursor, DragCopyCursor, DragMoveCursor, DragLinkCursor, }; enum TextFormat { PlainText, RichText, AutoText, MarkdownText, }; enum AspectRatioMode { IgnoreAspectRatio, KeepAspectRatio, KeepAspectRatioByExpanding, }; enum DockWidgetArea /BaseType=Flag/ { LeftDockWidgetArea, RightDockWidgetArea, TopDockWidgetArea, BottomDockWidgetArea, AllDockWidgetAreas, NoDockWidgetArea, }; typedef QFlags DockWidgetAreas; enum TimerType { PreciseTimer, CoarseTimer, VeryCoarseTimer, }; enum ToolBarArea /BaseType=Flag/ { LeftToolBarArea, RightToolBarArea, TopToolBarArea, BottomToolBarArea, AllToolBarAreas, NoToolBarArea, }; typedef QFlags ToolBarAreas; enum DateFormat { TextDate, ISODate, ISODateWithMs, RFC2822Date, }; enum TimeSpec { LocalTime, UTC, OffsetFromUTC, TimeZone, }; enum DayOfWeek { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, }; enum ScrollBarPolicy { ScrollBarAsNeeded, ScrollBarAlwaysOff, ScrollBarAlwaysOn, }; enum CaseSensitivity { CaseInsensitive, CaseSensitive, }; enum Corner { TopLeftCorner, TopRightCorner, BottomLeftCorner, BottomRightCorner, }; enum ConnectionType { AutoConnection, DirectConnection, QueuedConnection, BlockingQueuedConnection, UniqueConnection, SingleShotConnection, }; enum ShortcutContext { WidgetShortcut, WindowShortcut, ApplicationShortcut, WidgetWithChildrenShortcut, }; enum FillRule { OddEvenFill, WindingFill, }; enum ClipOperation { NoClip, ReplaceClip, IntersectClip, }; enum TransformationMode { FastTransformation, SmoothTransformation, }; enum FocusReason { MouseFocusReason, TabFocusReason, BacktabFocusReason, ActiveWindowFocusReason, PopupFocusReason, ShortcutFocusReason, MenuBarFocusReason, OtherFocusReason, NoFocusReason, }; enum ContextMenuPolicy { NoContextMenu, PreventContextMenu, DefaultContextMenu, ActionsContextMenu, CustomContextMenu, }; enum InputMethodQuery /BaseType=Flag/ { ImFont, ImCursorPosition, ImSurroundingText, ImCurrentSelection, ImMaximumTextLength, ImAnchorPosition, ImEnabled, ImCursorRectangle, ImHints, ImPreferredLanguage, ImPlatformData, ImQueryInput, ImQueryAll, ImAbsolutePosition, ImTextBeforeCursor, ImTextAfterCursor, ImEnterKeyType, ImAnchorRectangle, ImInputItemClipRectangle, %If (Qt_6_2_0 -) ImReadOnly, %End }; typedef QFlags InputMethodQueries; enum ToolButtonStyle { ToolButtonIconOnly, ToolButtonTextOnly, ToolButtonTextBesideIcon, ToolButtonTextUnderIcon, ToolButtonFollowStyle, }; enum LayoutDirection { LeftToRight, RightToLeft, LayoutDirectionAuto, }; enum DropAction /BaseType=Flag/ { CopyAction, MoveAction, LinkAction, ActionMask, TargetMoveAction, IgnoreAction, }; typedef QFlags DropActions; enum CheckState { Unchecked, PartiallyChecked, Checked, }; enum ItemDataRole /BaseType=IntEnum/ { DisplayRole, DecorationRole, EditRole, ToolTipRole, StatusTipRole, WhatsThisRole, FontRole, TextAlignmentRole, BackgroundRole, ForegroundRole, CheckStateRole, AccessibleTextRole, AccessibleDescriptionRole, SizeHintRole, InitialSortOrderRole, UserRole, }; enum ItemFlag /BaseType=Flag/ { NoItemFlags, ItemIsSelectable, ItemIsEditable, ItemIsDragEnabled, ItemIsDropEnabled, ItemIsUserCheckable, ItemIsEnabled, ItemNeverHasChildren, ItemIsUserTristate, ItemIsAutoTristate, }; typedef QFlags ItemFlags; enum MatchFlag /BaseType=Flag/ { MatchExactly, MatchFixedString, MatchContains, MatchStartsWith, MatchEndsWith, MatchWildcard, MatchCaseSensitive, MatchWrap, MatchRecursive, MatchRegularExpression, }; typedef QFlags MatchFlags; typedef void *HANDLE; enum WindowModality { NonModal, WindowModal, ApplicationModal, }; enum ApplicationAttribute { AA_DontShowIconsInMenus, AA_NativeWindows, AA_DontCreateNativeWidgetSiblings, AA_DontUseNativeMenuBar, AA_MacDontSwapCtrlAndMeta, AA_Use96Dpi, AA_SynthesizeTouchForUnhandledMouseEvents, AA_SynthesizeMouseForUnhandledTouchEvents, AA_ForceRasterWidgets, AA_UseDesktopOpenGL, AA_UseOpenGLES, AA_UseSoftwareOpenGL, AA_ShareOpenGLContexts, AA_SetPalette, AA_PluginApplication, AA_UseStyleSheetPropagationInWidgetStyles, AA_DontUseNativeDialogs, AA_SynthesizeMouseForUnhandledTabletEvents, AA_CompressHighFrequencyEvents, AA_DontCheckOpenGLContextThreadAffinity, AA_DisableShaderDiskCache, AA_DontShowShortcutsInContextMenus, AA_CompressTabletEvents, AA_DisableSessionManager, AA_DisableNativeVirtualKeyboard, }; enum ItemSelectionMode { ContainsItemShape, IntersectsItemShape, ContainsItemBoundingRect, IntersectsItemBoundingRect, }; enum TextInteractionFlag /BaseType=Flag/ { NoTextInteraction, TextSelectableByMouse, TextSelectableByKeyboard, LinksAccessibleByMouse, LinksAccessibleByKeyboard, TextEditable, TextEditorInteraction, TextBrowserInteraction, }; typedef QFlags TextInteractionFlags; enum MaskMode { MaskInColor, MaskOutColor, }; enum Axis { XAxis, YAxis, ZAxis, }; enum EventPriority { HighEventPriority, NormalEventPriority, LowEventPriority, }; enum SizeMode { AbsoluteSize, RelativeSize, }; enum SizeHint { MinimumSize, PreferredSize, MaximumSize, MinimumDescent, }; enum WindowFrameSection { NoSection, LeftSection, TopLeftSection, TopSection, TopRightSection, RightSection, BottomRightSection, BottomSection, BottomLeftSection, TitleBarArea, }; enum TileRule { StretchTile, RepeatTile, RoundTile, }; enum InputMethodHint /BaseType=Flag/ { ImhNone, ImhHiddenText, ImhNoAutoUppercase, ImhPreferNumbers, ImhPreferUppercase, ImhPreferLowercase, ImhNoPredictiveText, ImhDigitsOnly, ImhFormattedNumbersOnly, ImhUppercaseOnly, ImhLowercaseOnly, ImhDialableCharactersOnly, ImhEmailCharactersOnly, ImhUrlCharactersOnly, ImhExclusiveInputMask, ImhSensitiveData, ImhDate, ImhTime, ImhPreferLatin, ImhLatinOnly, ImhMultiLine, ImhNoEditMenu, ImhNoTextHandles, }; typedef QFlags InputMethodHints; enum AnchorPoint { AnchorLeft, AnchorHorizontalCenter, AnchorRight, AnchorTop, AnchorVerticalCenter, AnchorBottom, }; enum CoordinateSystem { DeviceCoordinates, LogicalCoordinates, }; enum TouchPointState /BaseType=Flag/ { TouchPointUnknownState, TouchPointPressed, TouchPointMoved, TouchPointStationary, TouchPointReleased, }; typedef QFlags TouchPointStates; enum GestureState { GestureStarted, GestureUpdated, GestureFinished, GestureCanceled, }; enum GestureType /BaseType=IntEnum/ { TapGesture, TapAndHoldGesture, PanGesture, PinchGesture, SwipeGesture, CustomGesture, }; enum GestureFlag /BaseType=Flag/ { DontStartGestureOnChildren, ReceivePartialGestures, IgnoredGesturesPropagateToParent, }; typedef QFlags GestureFlags; enum NavigationMode { NavigationModeNone, NavigationModeKeypadTabOrder, NavigationModeKeypadDirectional, NavigationModeCursorAuto, NavigationModeCursorForceVisible, }; enum CursorMoveStyle { LogicalMoveStyle, VisualMoveStyle, }; enum ScreenOrientation /BaseType=Flag/ { PrimaryOrientation, PortraitOrientation, LandscapeOrientation, InvertedPortraitOrientation, InvertedLandscapeOrientation, }; typedef QFlags ScreenOrientations; enum FindChildOption /BaseType=Flag/ { FindDirectChildrenOnly, FindChildrenRecursively, }; typedef QFlags FindChildOptions; enum WhiteSpaceMode { WhiteSpaceNormal, WhiteSpacePre, WhiteSpaceNoWrap, WhiteSpaceModeUndefined, }; enum HitTestAccuracy { ExactHit, FuzzyHit, }; enum ApplicationState /BaseType=Flag/ { ApplicationSuspended, ApplicationHidden, ApplicationInactive, ApplicationActive, }; typedef QFlags ApplicationStates; enum Edge /BaseType=Flag/ { TopEdge, LeftEdge, RightEdge, BottomEdge, }; typedef QFlags Edges; enum NativeGestureType { BeginNativeGesture, EndNativeGesture, PanNativeGesture, ZoomNativeGesture, SmartZoomNativeGesture, RotateNativeGesture, SwipeNativeGesture, }; enum ScrollPhase { ScrollBegin, ScrollUpdate, ScrollEnd, NoScrollPhase, ScrollMomentum, }; enum MouseEventSource { MouseEventNotSynthesized, MouseEventSynthesizedBySystem, MouseEventSynthesizedByQt, MouseEventSynthesizedByApplication, }; enum MouseEventFlag /BaseType=Flag/ { MouseEventCreatedDoubleClick, }; typedef QFlags MouseEventFlags; enum TabFocusBehavior { NoTabFocus, TabFocusTextControls, TabFocusListControls, TabFocusAllControls, }; enum ItemSelectionOperation { ReplaceSelection, AddToSelection, }; enum EnterKeyType { EnterKeyDefault, EnterKeyReturn, EnterKeyDone, EnterKeyGo, EnterKeySend, EnterKeySearch, EnterKeyNext, EnterKeyPrevious, }; enum ChecksumType { ChecksumIso3309, ChecksumItuV41, }; enum class HighDpiScaleFactorRoundingPolicy { Round, Ceil, Floor, RoundPreferFloor, PassThrough, }; %If (Qt_6_5_0 -) enum class ColorScheme { Unknown, Light, Dark, }; %End %If (Qt_6_5_0 -) enum class PermissionStatus { Undetermined, Granted, Denied, }; %End }; class QKeyCombination { %TypeHeaderCode #include %End public: QKeyCombination(Qt::Key key = Qt::Key_unknown); QKeyCombination(Qt::Modifiers modifiers, Qt::Key key = Qt::Key_unknown); QKeyCombination(Qt::KeyboardModifiers modifiers, Qt::Key key = Qt::Key_unknown); Qt::KeyboardModifiers keyboardModifiers() const; Qt::Key key() const; static QKeyCombination fromCombined(int combined); int toCombined() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; bool operator==(QKeyCombination lhs, QKeyCombination rhs); bool operator!=(QKeyCombination lhs, QKeyCombination rhs); QKeyCombination operator|(Qt::Key key, Qt::KeyboardModifiers modifiers); %MethodCode sipRes = new QKeyCombination(*a1, a0); %End QKeyCombination operator|(Qt::Key key, Qt::Modifiers modifiers); %MethodCode sipRes = new QKeyCombination(*a1, a0); %End QKeyCombination operator|(Qt::KeyboardModifier modifier, Qt::Key key); %MethodCode sipRes = new QKeyCombination(a0, a1); %End Qt::KeyboardModifiers operator|(Qt::KeyboardModifier, Qt::KeyboardModifier); QKeyCombination operator|(Qt::Modifier modifier, Qt::Key key); %MethodCode sipRes = new QKeyCombination(a0, a1); %End Qt::Modifiers operator|(Qt::Modifier, Qt::Modifier); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.668486 PyQt6-6.6.1/sip/QtCore/qnumeric.sip0000644000076500000240000000260214532160402015713 0ustar00philstaff// qnumeric.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End bool qIsInf(double d); bool qIsFinite(double d); bool qIsNaN(double d); double qInf(); double qSNaN(); double qQNaN(); quint64 qFloatDistance(double a, double b); %If (Qt_6_5_0 -) double qAbs(const double &t); %End %If (Qt_6_5_0 -) int qRound(double d); %End %If (Qt_6_5_0 -) qint64 qRound64(double d); %End %If (Qt_6_5_0 -) bool qFuzzyCompare(double p1, double p2); %End %If (Qt_6_5_0 -) bool qFuzzyIsNull(double d); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6079698 PyQt6-6.6.1/sip/QtCore/qobject.sip0000644000076500000240000004745114532160402015532 0ustar00philstaff// qobject.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QObjectList; class QObject /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode // This is needed by the tr() handwritten implementation. #include // These are the helper functions for QObject::findChild() and // QObject::findChildren. // Wrap the given type in a 1-tuple. static PyObject *qtcore_type_to_tuple(PyObject *type) { PyObject *tuple = PyTuple_New(1); if (tuple) { Py_INCREF(type); PyTuple_SetItem(tuple, 0, type); } return tuple; } // Check all elements of a given tuple are type objects and return a new // reference to the tuple if so. static PyObject *qtcore_check_tuple_types(PyObject *types) { for (Py_ssize_t i = 0; i < PyTuple_Size(types); ++i) if (!PyObject_TypeCheck(PyTuple_GetItem(types, i), &PyType_Type)) { PyErr_SetString(PyExc_TypeError, "all elements of the types argument must be type objects"); return 0; } Py_INCREF(types); return types; } // Do the main work of finding a child. static PyObject *qtcore_do_find_child(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return 0; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) return pyo; Py_DECREF(pyo); } if (options == Qt::FindChildrenRecursively) for (i = 0; i < children.size(); ++i) { PyObject *pyo = qtcore_do_find_child(children.at(i), types, name, options); if (pyo != Py_None) return pyo; Py_DECREF(pyo); } Py_INCREF(Py_None); return Py_None; } // Find a child that is one of a number of types and with an optional name. static PyObject *qtcore_FindChild(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *child = qtcore_do_find_child(parent, types, name, options); Py_DECREF(types); return child; } // Do the main work of finding the children with a string name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; // Allow for proxies. QObject *resolved = reinterpret_cast(sipGetAddress((sipSimpleWrapper *)pyo)); if (name.isNull() || resolved->objectName() == name) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, name, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional string // name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QString &name, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, name, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } // Do the main work of finding the children with a QRegularExpression name. static bool qtcore_do_find_children(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options, PyObject *list) { const QObjectList &children = parent->children(); int i; for (i = 0; i < children.size(); ++i) { QObject *obj = children.at(i); PyObject *pyo = sipConvertFromType(obj, sipType_QObject, 0); if (!pyo) return false; QRegularExpressionMatch m = re.match(obj->objectName()); if (m.hasMatch()) for (Py_ssize_t t = 0; t < PyTuple_Size(types); ++t) if (PyType_IsSubtype(Py_TYPE(pyo), (PyTypeObject *)PyTuple_GetItem(types, t))) if (PyList_Append(list, pyo) < 0) { Py_DECREF(pyo); return false; } Py_DECREF(pyo); if (options == Qt::FindChildrenRecursively) { bool ok = qtcore_do_find_children(obj, types, re, options, list); if (!ok) return false; } } return true; } // Find a child that is one of a number of types and with an optional // QRegularExpression name. static PyObject *qtcore_FindChildren(const QObject *parent, PyObject *types, const QRegularExpression &re, Qt::FindChildOptions options) { // Check that the types checking was successful. if (!types) return 0; PyObject *list = PyList_New(0); if (list) if (!qtcore_do_find_children(parent, types, re, options, list)) Py_DECREF(list); Py_DECREF(types); return list; } %End %FinalisationCode return qpycore_qobject_finalisation(sipSelf, sipCpp, sipKwds, sipUnused); %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractAnimation, &sipType_QAbstractAnimation, 23, 1}, {sipName_QAbstractEventDispatcher, &sipType_QAbstractEventDispatcher, -1, 2}, {sipName_QAbstractItemModel, &sipType_QAbstractItemModel, 29, 3}, {sipName_QIODevice, &sipType_QIODevice, 37, 4}, {sipName_QCoreApplication, &sipType_QCoreApplication, -1, 5}, {sipName_QEventLoop, &sipType_QEventLoop, -1, 6}, {sipName_QFileSelector, &sipType_QFileSelector, -1, 7}, {sipName_QFileSystemWatcher, &sipType_QFileSystemWatcher, -1, 8}, {sipName_QItemSelectionModel, &sipType_QItemSelectionModel, -1, 9}, {sipName_QLibrary, &sipType_QLibrary, -1, 10}, {sipName_QMimeData, &sipType_QMimeData, -1, 11}, {sipName_QObjectCleanupHandler, &sipType_QObjectCleanupHandler, -1, 12}, {sipName_QPluginLoader, &sipType_QPluginLoader, -1, 13}, {sipName_QSettings, &sipType_QSettings, -1, 14}, {sipName_QSharedMemory, &sipType_QSharedMemory, -1, 15}, {sipName_QSignalMapper, &sipType_QSignalMapper, -1, 16}, {sipName_QSocketNotifier, &sipType_QSocketNotifier, -1, 17}, {sipName_QThread, &sipType_QThread, -1, 18}, {sipName_QThreadPool, &sipType_QThreadPool, -1, 19}, {sipName_QTimeLine, &sipType_QTimeLine, -1, 20}, {sipName_QTimer, &sipType_QTimer, -1, 21}, {sipName_QTranslator, &sipType_QTranslator, -1, 22}, #if defined(Q_OS_WIN) {sipName_QWinEventNotifier, &sipType_QWinEventNotifier, -1, -1}, #else {0, 0, -1, -1}, #endif {sipName_QAnimationGroup, &sipType_QAnimationGroup, 26, 24}, {sipName_QPauseAnimation, &sipType_QPauseAnimation, -1, 25}, {sipName_QVariantAnimation, &sipType_QVariantAnimation, 28, -1}, {sipName_QParallelAnimationGroup, &sipType_QParallelAnimationGroup, -1, 27}, {sipName_QSequentialAnimationGroup, &sipType_QSequentialAnimationGroup, -1, -1}, {sipName_QPropertyAnimation, &sipType_QPropertyAnimation, -1, -1}, {sipName_QAbstractListModel, &sipType_QAbstractListModel, 33, 30}, {sipName_QAbstractProxyModel, &sipType_QAbstractProxyModel, 34, 31}, {sipName_QAbstractTableModel, &sipType_QAbstractTableModel, -1, 32}, {sipName_QConcatenateTablesProxyModel, &sipType_QConcatenateTablesProxyModel, -1, -1}, {sipName_QStringListModel, &sipType_QStringListModel, -1, -1}, {sipName_QIdentityProxyModel, &sipType_QIdentityProxyModel, -1, 35}, {sipName_QSortFilterProxyModel, &sipType_QSortFilterProxyModel, -1, 36}, {sipName_QTransposeProxyModel, &sipType_QTransposeProxyModel, -1, -1}, {sipName_QBuffer, &sipType_QBuffer, -1, 38}, {sipName_QFileDevice, &sipType_QFileDevice, 40, 39}, #if !defined(QT_NO_PROCESS) {sipName_QProcess, &sipType_QProcess, -1, -1}, #else {0, 0, -1, -1}, #endif {sipName_QFile, &sipType_QFile, 42, 41}, {sipName_QSaveFile, &sipType_QSaveFile, -1, -1}, {sipName_QTemporaryFile, &sipType_QTemporaryFile, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End %GCTraverseCode // Traverse any saved slots we might be connected to. sipRes = qpycore_visitSlotProxies(sipCpp, sipVisit, sipArg); %End %GCClearCode // Clear any saved slots we might be connected to. sipRes = qpycore_clearSlotProxies(sipCpp); %End public: static const QMetaObject staticMetaObject { %GetCode sipPy = qpycore_qobject_staticmetaobject(sipPyType); %End }; const QMetaObject *metaObject() const; explicit QObject(QObject *parent /TransferThis/ = 0); virtual ~QObject(); void pyqtConfigure(SIP_PYOBJECT) /NoArgParser/; %Docstring QObject.pyqtConfigure(...) Each keyword argument is either the name of a Qt property or a Qt signal. For properties the property is set to the given value which should be of an appropriate type. For signals the signal is connected to the given value which should be a callable. %End %MethodCode return qpycore_pyqtconfigure(sipSelf, sipArgs, sipKwds); %End SIP_PYOBJECT __getattr__(const char *name /Encoding="UTF-8"/) const /NoTypeHint/; %MethodCode sipRes = qpycore_qobject_getattr(sipCpp, sipSelf, a0); %End virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); static QString tr(const char *sourceText /Encoding="UTF-8"/, const char *disambiguation = 0, int n = -1); %MethodCode sipRes = new QString(QCoreApplication::translate(sipPyTypeName((PyTypeObject *)sipSelf), a0, a1, a2)); %End SIP_PYOBJECT findChild(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObjectT"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT findChild(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="QObjectT"/; %MethodCode sipRes = qtcore_FindChild(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QString &name = QString(), Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTYPE type /TypeHint="Type[QObjectT]"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_type_to_tuple(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End SIP_PYLIST findChildren(SIP_PYTUPLE types /TypeHint="Tuple[Type[QObjectT], ...]", TypeHintValue="()"/, const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const /TypeHint="List[QObjectT]"/; %MethodCode sipRes = qtcore_FindChildren(sipCpp, qtcore_check_tuple_types(a0), *a1, *a2); if (!sipRes) sipIsErr = 1; %End QString objectName() const; %If (Qt_6_4_0 -) void setObjectName(QAnyStringView name); %End %If (- Qt_6_4_0) void setObjectName(const QString &name); %End bool isWidgetType() const; bool isWindowType() const; bool signalsBlocked() const; bool blockSignals(bool b); QThread *thread() const; void moveToThread(QThread *thread); int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); void killTimer(int id); const QObjectList &children() const; void setParent(QObject * /TransferThis/); void installEventFilter(QObject *); void removeEventFilter(QObject *); void dumpObjectInfo() const; void dumpObjectTree() const; QList dynamicPropertyNames() const; bool setProperty(const char *name, const QVariant &value); QVariant property(const char *name) const; signals: void destroyed(QObject *object = 0); void objectNameChanged(const QString &objectName); public: QObject *parent() const; bool inherits(const char *classname) const; public slots: void deleteLater() /TransferThis/; protected: QObject *sender() const /ReleaseGIL/; %MethodCode // sender() must be called without the GIL to avoid possible deadlocks between // the GIL and Qt's internal thread data mutex. Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipCpp->sender(); #else sipRes = sipCpp->sipProtect_sender(); #endif Py_END_ALLOW_THREADS if (!sipRes) { typedef QObject *(*qtcore_qobject_sender_t)(); static qtcore_qobject_sender_t qtcore_qobject_sender = 0; if (!qtcore_qobject_sender) { qtcore_qobject_sender = (qtcore_qobject_sender_t)sipImportSymbol("qtcore_qobject_sender"); Q_ASSERT(qtcore_qobject_sender); } sipRes = qtcore_qobject_sender(); } %End int receivers(SIP_PYOBJECT signal /TypeHint="PYQT_SIGNAL"/) const [int (const char *signal)]; %MethodCode // We need to handle the signal object. Import the helper if it hasn't already // been done. typedef sipErrorState (*pyqt6_get_signal_signature_t)(PyObject *, const QObject *, const QByteArray &); static pyqt6_get_signal_signature_t pyqt6_get_signal_signature = 0; if (!pyqt6_get_signal_signature) { pyqt6_get_signal_signature = (pyqt6_get_signal_signature_t)sipImportSymbol("pyqt6_get_signal_signature"); Q_ASSERT(pyqt6_get_signal_signature); } QByteArray signal_signature; #if defined(SIP_PROTECTED_IS_PUBLIC) if ((sipError = pyqt6_get_signal_signature(a0, sipCpp, signal_signature)) == sipErrorNone) { sipRes = sipCpp->receivers(signal_signature.constData()); } #else if ((sipError = pyqt6_get_signal_signature(a0, static_cast(sipCpp), signal_signature)) == sipErrorNone) { sipRes = sipCpp->sipProtect_receivers(signal_signature.constData()); } #endif else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void timerEvent(QTimerEvent *); virtual void childEvent(QChildEvent *); virtual void customEvent(QEvent *); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); int senderSignalIndex() const; bool isSignalConnected(const QMetaMethod &signal) const; public: static bool disconnect(const QMetaObject::Connection &); SIP_PYOBJECT disconnect() const /TypeHint=""/; %MethodCode sipRes = qpycore_qobject_disconnect(sipCpp); %End %If (Qt_6_4_0 -) bool isQuickItemType() const; %End private: QObject(const QObject &); }; SIP_PYOBJECT pyqtClassInfo(const char *, const char *) /NoArgParser, TypeHint=""/; %MethodCode return qpycore_pyqtClassInfo(sipArgs, sipKwds); %End SIP_PYOBJECT pyqtEnum(SIP_PYENUM = 0) /TypeHint=""/; %MethodCode sipRes = qpycore_pyqtEnum(a0); %End SIP_PYOBJECT pyqtSlot(... types, const char *name = 0, const char *result = 0) /NoArgParser, NoTypeHint/; %Docstring @pyqtSlot(*types, name: typing.Optional[str], result: typing.Optional[str]) This is a decorator applied to Python methods of a QObject that marks them as Qt slots. The non-keyword arguments are the types of the slot arguments and each may be a Python type object or a string specifying a C++ type. name is the name of the slot and defaults to the name of the method. result is type of the value returned by the slot. %End %MethodCode return qpycore_pyqtslot(sipArgs, sipKwds); %End SIP_PYOBJECT QT_TR_NOOP(SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/; %MethodCode Py_INCREF(a0); sipRes = a0; %End SIP_PYOBJECT QT_TRANSLATE_NOOP(SIP_PYOBJECT /TypeHint="str"/, SIP_PYOBJECT /TypeHint="str"/) /TypeHint="str"/; %MethodCode Py_INCREF(a1); sipRes = a1; %End class QSignalBlocker { %TypeHeaderCode #include %End public: explicit QSignalBlocker(QObject *o); ~QSignalBlocker(); void reblock(); void unblock(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unblock(); %End private: QSignalBlocker(const QSignalBlocker &); }; %ModuleHeaderCode #include "qpycore_api.h" %End %InitialisationCode qpycore_init(); %End %PostInitialisationCode qpycore_post_init(sipModuleDict); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6889563 PyQt6-6.6.1/sip/QtCore/qobjectcleanuphandler.sip0000644000076500000240000000234014532160402020424 0ustar00philstaff// qobjectcleanuphandler.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QObjectCleanupHandler : QObject { %TypeHeaderCode #include %End public: QObjectCleanupHandler(); virtual ~QObjectCleanupHandler(); QObject *add(QObject *object); void remove(QObject *object); bool isEmpty() const; void clear(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6874092 PyQt6-6.6.1/sip/QtCore/qobjectdefs.sip0000644000076500000240000001770714532160402016375 0ustar00philstaff// qobjectdefs.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QMetaObject { %TypeHeaderCode #include %End %TypeCode // Raise an exception when QMetaObject::invokeMethod() returns false. static void qtcore_invokeMethod_exception() { PyErr_SetString(PyExc_RuntimeError, "QMetaObject.invokeMethod() call failed"); } %End %If (Qt_6_2_0 -) QMetaType metaType() const; %End const char *className() const; const QMetaObject *superClass() const; QMetaProperty userProperty() const; int methodOffset() const; int enumeratorOffset() const; int propertyOffset() const; int classInfoOffset() const; int methodCount() const; int enumeratorCount() const; int propertyCount() const; int classInfoCount() const; int indexOfMethod(const char *method) const; int indexOfSignal(const char *signal) const; int indexOfSlot(const char *slot) const; int indexOfEnumerator(const char *name) const; int indexOfProperty(const char *name) const; int indexOfClassInfo(const char *name) const; QMetaMethod method(int index) const; QMetaEnum enumerator(int index) const; QMetaProperty property(int index) const; QMetaClassInfo classInfo(int index) const; static bool checkConnectArgs(const char *signal, const char *method); static void connectSlotsByName(QObject *o /GetWrapper/); %MethodCode qpycore_qmetaobject_connectslotsbyname(a0, a0Wrapper); // Make sure there is no (benign) Python exception. PyErr_Clear(); %End static QByteArray normalizedSignature(const char *method); static QByteArray normalizedType(const char *type); static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12,*a13); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a3Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericReturnArgument ret /GetWrapper/, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) sipRes = qpycore_ReturnValue(a2Wrapper); else qtcore_invokeMethod_exception(); %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11,*a12); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else { qtcore_invokeMethod_exception(); } %End static SIP_PYOBJECT invokeMethod(QObject *obj, const char *member, QGenericArgument value0 = QGenericArgument(nullptr), QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()); %MethodCode // Raise an exception if the call failed. bool ok; Py_BEGIN_ALLOW_THREADS ok = QMetaObject::invokeMethod(a0,a1,*a2,*a3,*a4,*a5,*a6,*a7,*a8,*a9,*a10,*a11); Py_END_ALLOW_THREADS if (ok) { Py_INCREF(Py_None); sipRes = Py_None; } else { qtcore_invokeMethod_exception(); } %End %If (Qt_6_5_0 -) QObject *newInstance(QGenericArgument value0, QGenericArgument value1 = QGenericArgument(), QGenericArgument value2 = QGenericArgument(), QGenericArgument value3 = QGenericArgument(), QGenericArgument value4 = QGenericArgument(), QGenericArgument value5 = QGenericArgument(), QGenericArgument value6 = QGenericArgument(), QGenericArgument value7 = QGenericArgument(), QGenericArgument value8 = QGenericArgument(), QGenericArgument value9 = QGenericArgument()) const; %End int constructorCount() const; int indexOfConstructor(const char *constructor) const; QMetaMethod constructor(int index) const; static bool checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method); bool inherits(const QMetaObject *metaObject) const; class Connection { %TypeHeaderCode #include %End public: Connection(); Connection(const QMetaObject::Connection &other); ~Connection(); void swap(QMetaObject::Connection &o /Constrained/); }; }; // The support for Q_ARG(), Q_RETURN_ARG() and supporting classes. class QGenericArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericArgument(); }; SIP_PYOBJECT Q_ARG(SIP_PYOBJECT type, SIP_PYOBJECT data) /TypeHint="QGenericArgument"/; %MethodCode sipRes = qpycore_ArgumentFactory(a0, a1); %End class QGenericReturnArgument /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QGenericReturnArgument(); }; SIP_PYOBJECT Q_RETURN_ARG(SIP_PYOBJECT type) /TypeHint="QGenericReturnArgument"/; %MethodCode sipRes = qpycore_ReturnFactory(a0); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6101391 PyQt6-6.6.1/sip/QtCore/qoperatingsystemversion.sip0000644000076500000240000001707214532160402021123 0ustar00philstaff// qoperatingsystemversion.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_3_0 -) class QOperatingSystemVersionBase { %TypeHeaderCode #include %End protected: QOperatingSystemVersionBase(); }; %End %If (Qt_6_3_0 -) class QOperatingSystemVersion : QOperatingSystemVersionBase { %TypeHeaderCode #include %End public: enum OSType { Unknown, Windows, MacOS, IOS, TvOS, WatchOS, Android, }; static const QOperatingSystemVersion Windows7; static const QOperatingSystemVersion Windows8; static const QOperatingSystemVersion Windows8_1; static const QOperatingSystemVersion Windows10; static const QOperatingSystemVersion OSXMavericks; static const QOperatingSystemVersion OSXYosemite; static const QOperatingSystemVersion OSXElCapitan; static const QOperatingSystemVersion MacOSSierra; static const QOperatingSystemVersion MacOSHighSierra; static const QOperatingSystemVersion MacOSMojave; static const QOperatingSystemVersion MacOSCatalina; static const QOperatingSystemVersion MacOSBigSur; static const QOperatingSystemVersion MacOSMonterey; %If (Qt_6_5_0 -) static const QOperatingSystemVersionBase MacOSVentura; %End %If (Qt_6_6_0 -) static const QOperatingSystemVersionBase MacOSSonoma; %End static const QOperatingSystemVersion AndroidJellyBean; static const QOperatingSystemVersion AndroidJellyBean_MR1; static const QOperatingSystemVersion AndroidJellyBean_MR2; static const QOperatingSystemVersion AndroidKitKat; static const QOperatingSystemVersion AndroidLollipop; static const QOperatingSystemVersion AndroidLollipop_MR1; static const QOperatingSystemVersion AndroidMarshmallow; static const QOperatingSystemVersion AndroidNougat; static const QOperatingSystemVersion AndroidNougat_MR1; static const QOperatingSystemVersion AndroidOreo; static const QOperatingSystemVersion AndroidOreo_MR1; static const QOperatingSystemVersion AndroidPie; static const QOperatingSystemVersion Android10; static const QOperatingSystemVersion Android11; %If (Qt_6_5_0 -) static const QOperatingSystemVersionBase Android12; %End %If (Qt_6_5_0 -) static const QOperatingSystemVersionBase Android12L; %End %If (Qt_6_5_0 -) static const QOperatingSystemVersionBase Android13; %End static const QOperatingSystemVersionBase Windows10_1809; static const QOperatingSystemVersionBase Windows10_1903; static const QOperatingSystemVersionBase Windows10_1909; static const QOperatingSystemVersionBase Windows10_2004; static const QOperatingSystemVersionBase Windows10_20H2; static const QOperatingSystemVersionBase Windows10_21H1; static const QOperatingSystemVersionBase Windows10_21H2; %If (Qt_6_5_0 -) static const QOperatingSystemVersionBase Windows10_22H2; %End static const QOperatingSystemVersionBase Windows11; %If (Qt_6_4_0 -) static const QOperatingSystemVersionBase Windows11_21H2; %End %If (Qt_6_4_0 -) static const QOperatingSystemVersionBase Windows11_22H2; %End QOperatingSystemVersion(QOperatingSystemVersion::OSType osType, int vmajor, int vminor = -1, int vmicro = -1); static QOperatingSystemVersion current(); static QOperatingSystemVersion::OSType currentType(); QVersionNumber version() const; int majorVersion() const; int minorVersion() const; int microVersion() const; int segmentCount() const; QOperatingSystemVersion::OSType type() const; QString name() const; private: QOperatingSystemVersion(); }; %End %If (- Qt_6_3_0) class QOperatingSystemVersion { %TypeHeaderCode #include %End public: enum OSType { Unknown, Windows, MacOS, IOS, TvOS, WatchOS, Android, }; static const QOperatingSystemVersion Windows7; static const QOperatingSystemVersion Windows8; static const QOperatingSystemVersion Windows8_1; static const QOperatingSystemVersion Windows10; static const QOperatingSystemVersion OSXMavericks; static const QOperatingSystemVersion OSXYosemite; static const QOperatingSystemVersion OSXElCapitan; static const QOperatingSystemVersion MacOSSierra; static const QOperatingSystemVersion MacOSHighSierra; static const QOperatingSystemVersion MacOSMojave; static const QOperatingSystemVersion MacOSCatalina; static const QOperatingSystemVersion MacOSBigSur; static const QOperatingSystemVersion AndroidJellyBean; static const QOperatingSystemVersion AndroidJellyBean_MR1; static const QOperatingSystemVersion AndroidJellyBean_MR2; static const QOperatingSystemVersion AndroidKitKat; static const QOperatingSystemVersion AndroidLollipop; static const QOperatingSystemVersion AndroidLollipop_MR1; static const QOperatingSystemVersion AndroidMarshmallow; static const QOperatingSystemVersion AndroidNougat; static const QOperatingSystemVersion AndroidNougat_MR1; static const QOperatingSystemVersion AndroidOreo; %If (Qt_6_1_0 -) static const QOperatingSystemVersion AndroidOreo_MR1; %End %If (Qt_6_1_0 -) static const QOperatingSystemVersion AndroidPie; %End %If (Qt_6_1_0 -) static const QOperatingSystemVersion Android11; %End %If (Qt_6_1_0 -) static const QOperatingSystemVersion Android10; %End QOperatingSystemVersion(QOperatingSystemVersion::OSType osType, int vmajor, int vminor = -1, int vmicro = -1); static QOperatingSystemVersion current(); static QOperatingSystemVersion::OSType currentType(); %If (Qt_6_1_0 -) QVersionNumber version() const; %End int majorVersion() const; int minorVersion() const; int microVersion() const; int segmentCount() const; QOperatingSystemVersion::OSType type() const; QString name() const; private: QOperatingSystemVersion(); }; %End %If (Qt_6_3_0 -) bool operator>(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs); %End %If (- Qt_6_3_0) bool operator>(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_6_3_0 -) bool operator>=(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs); %End %If (- Qt_6_3_0) bool operator>=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_6_3_0 -) bool operator<(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs); %End %If (- Qt_6_3_0) bool operator<(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End %If (Qt_6_3_0 -) bool operator<=(QOperatingSystemVersionBase lhs, QOperatingSystemVersionBase rhs); %End %If (- Qt_6_3_0) bool operator<=(const QOperatingSystemVersion &lhs, const QOperatingSystemVersion &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6183462 PyQt6-6.6.1/sip/QtCore/qparallelanimationgroup.sip0000644000076500000240000000273614532160402021032 0ustar00philstaff// qparallelanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QParallelAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QParallelAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QParallelAnimationGroup(); virtual int duration() const; protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int currentTime); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6738093 PyQt6-6.6.1/sip/QtCore/qpauseanimation.sip0000644000076500000240000000253514532160402017273 0ustar00philstaff// qpauseanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPauseAnimation : QAbstractAnimation { %TypeHeaderCode #include %End public: QPauseAnimation(QObject *parent /TransferThis/ = 0); QPauseAnimation(int msecs, QObject *parent /TransferThis/ = 0); virtual ~QPauseAnimation(); virtual int duration() const; void setDuration(int msecs); protected: virtual bool event(QEvent *e); virtual void updateCurrentTime(int); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.616342 PyQt6-6.6.1/sip/QtCore/qpermissions.sip0000644000076500000240000001745314532160402016636 0ustar00philstaff// qpermissions.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QPermission /TypeHintIn="Union[QBluetoothPermission, QCalendarPermission, QCameraPermission, QContactsPermission, QLocationPermission, QMicrophonePermission]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // Note that we don't allow sub-classes of the typed permissions. const sipTypeDef *td = sipTypeFromPyTypeObject(Py_TYPE(sipPy)); if (!sipIsErr) return (td == sipType_QBluetoothPermission || td == sipType_QCalendarPermission || td == sipType_QCameraPermission || td == sipType_QContactsPermission || td == sipType_QLocationPermission || td == sipType_QMicrophonePermission); void *cpp = sipConvertToType(sipPy, td, sipTransferObj, SIP_NOT_NONE, NULL, sipIsErr); if (*sipIsErr) return 0; if (td == sipType_QBluetoothPermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); else if (td == sipType_QCalendarPermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); else if (td == sipType_QCameraPermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); else if (td == sipType_QContactsPermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); else if (td == sipType_QLocationPermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); else if (td == sipType_QMicrophonePermission) *sipCppPtr = new QPermission(*reinterpret_cast(cpp)); return sipGetState(sipTransferObj); %End public: QPermission(); Qt::PermissionStatus status() const; QMetaType type() const; SIP_PYOBJECT value() const; %MethodCode const sipTypeDef *td = SIP_NULLPTR; void *perm = SIP_NULLPTR; QMetaType mt = sipCpp->type(); if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QBluetoothPermission(opt_perm.value()); td = sipType_QBluetoothPermission; } } else if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QCalendarPermission(opt_perm.value()); td = sipType_QCalendarPermission; } } else if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QCameraPermission(opt_perm.value()); td = sipType_QCameraPermission; } } else if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QContactsPermission(opt_perm.value()); td = sipType_QContactsPermission; } } else if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QLocationPermission(opt_perm.value()); td = sipType_QLocationPermission; } } else if (mt == QMetaType::fromType()) { std::optional opt_perm = sipCpp->value(); if (opt_perm) { perm = new QMicrophonePermission(opt_perm.value()); td = sipType_QMicrophonePermission; } } if (perm) { sipRes = sipConvertFromNewType(perm, td, SIP_NULLPTR); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QLocationPermission { %TypeHeaderCode #include %End public: QLocationPermission(); QLocationPermission(const QLocationPermission &other); ~QLocationPermission(); enum Accuracy { Approximate, Precise, }; void setAccuracy(QLocationPermission::Accuracy accuracy); QLocationPermission::Accuracy accuracy() const; enum Availability { WhenInUse, Always, }; void setAvailability(QLocationPermission::Availability availability); QLocationPermission::Availability availability() const; }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QCalendarPermission { %TypeHeaderCode #include %End public: QCalendarPermission(); QCalendarPermission(const QCalendarPermission &other); ~QCalendarPermission(); enum AccessMode { ReadOnly, ReadWrite, }; void setAccessMode(QCalendarPermission::AccessMode mode); QCalendarPermission::AccessMode accessMode() const; }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QContactsPermission { %TypeHeaderCode #include %End public: QContactsPermission(); QContactsPermission(const QContactsPermission &other); ~QContactsPermission(); enum AccessMode { ReadOnly, ReadWrite, }; void setAccessMode(QContactsPermission::AccessMode mode); QContactsPermission::AccessMode accessMode() const; }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QCameraPermission { %TypeHeaderCode #include %End public: QCameraPermission(); QCameraPermission(const QCameraPermission &other); ~QCameraPermission(); }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QMicrophonePermission { %TypeHeaderCode #include %End public: QMicrophonePermission(); QMicrophonePermission(const QMicrophonePermission &other); ~QMicrophonePermission(); }; %End %End %If (Qt_6_5_0 -) %If (PyQt_Permissions) class QBluetoothPermission { %TypeHeaderCode #include %End public: QBluetoothPermission(); QBluetoothPermission(const QBluetoothPermission &other); ~QBluetoothPermission(); %If (Qt_6_6_0 -) enum CommunicationMode { Access, Advertise, Default, }; %End %If (Qt_6_6_0 -) typedef QFlags CommunicationModes; %End %If (Qt_6_6_0 -) void setCommunicationModes(QBluetoothPermission::CommunicationModes modes); %End %If (Qt_6_6_0 -) QBluetoothPermission::CommunicationModes communicationModes() const; %End }; %End %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5953271 PyQt6-6.6.1/sip/QtCore/qpluginloader.sip0000644000076500000240000000302314532160402016734 0ustar00philstaff// qpluginloader.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPluginLoader : QObject { %TypeHeaderCode #include %End public: explicit QPluginLoader(QObject *parent /TransferThis/ = 0); QPluginLoader(const QString &fileName, QObject *parent /TransferThis/ = 0); virtual ~QPluginLoader(); QObject *instance(); static QObjectList staticInstances(); bool load(); bool unload(); bool isLoaded() const; void setFileName(const QString &fileName); QString fileName() const; QString errorString() const; void setLoadHints(QLibrary::LoadHints loadHints); QLibrary::LoadHints loadHints() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6854084 PyQt6-6.6.1/sip/QtCore/qpoint.sip0000644000076500000240000001111414532160402015400 0ustar00philstaff// qpoint.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPoint { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("ii", sipCpp->x(), sipCpp->y()); %End public: int manhattanLength() const; QPoint(); QPoint(int xpos, int ypos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QPoint()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QPoint(%i, %i)", sipCpp->x(), sipCpp->y()); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End int x() const; int y() const; void setX(int xpos); void setY(int ypos); QPoint &operator+=(const QPoint &p); QPoint &operator-=(const QPoint &p); QPoint &operator*=(int c /Constrained/); QPoint &operator*=(double c); QPoint &operator/=(qreal c); static int dotProduct(const QPoint &p1, const QPoint &p2); QPoint transposed() const; %If (Qt_6_4_0 -) QPointF toPointF() const; %End }; QDataStream &operator<<(QDataStream &, const QPoint &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPoint & /Constrained/) /ReleaseGIL/; bool operator==(const QPoint &p1, const QPoint &p2); bool operator!=(const QPoint &p1, const QPoint &p2); QPoint operator+(const QPoint &p); QPoint operator+(const QPoint &p1, const QPoint &p2); QPoint operator-(const QPoint &p); QPoint operator-(const QPoint &p1, const QPoint &p2); QPoint operator*(const QPoint &p, int factor /Constrained/); QPoint operator*(int factor /Constrained/, const QPoint &p); QPoint operator*(const QPoint &p, double factor); QPoint operator*(double factor, const QPoint &p); QPoint operator/(const QPoint &p, qreal c); class QPointF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("dd", sipCpp->x(), sipCpp->y()); %End public: QPointF(); QPointF(qreal xpos, qreal ypos); QPointF(const QPoint &p); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QPointF()"); } else { PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QPointF(%R, %R)", x, y); Py_XDECREF(x); Py_XDECREF(y); } %End bool isNull() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isNull(); %End qreal x() const; qreal y() const; void setX(qreal xpos); void setY(qreal ypos); QPointF &operator+=(const QPointF &p); QPointF &operator-=(const QPointF &p); QPointF &operator*=(qreal c); QPointF &operator/=(qreal c); QPoint toPoint() const; qreal manhattanLength() const; static qreal dotProduct(const QPointF &p1, const QPointF &p2); QPointF transposed() const; }; QDataStream &operator<<(QDataStream &, const QPointF &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPointF & /Constrained/) /ReleaseGIL/; bool operator==(const QPointF &p1, const QPointF &p2); bool operator!=(const QPointF &p1, const QPointF &p2); QPointF operator+(const QPointF &p); QPointF operator+(const QPointF &p1, const QPointF &p2); QPointF operator-(const QPointF &p); QPointF operator-(const QPointF &p1, const QPointF &p2); QPointF operator*(const QPointF &p, qreal c); QPointF operator*(qreal c, const QPointF &p); QPointF operator/(const QPointF &p, qreal divisor); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6975951 PyQt6-6.6.1/sip/QtCore/qprocess.sip0000644000076500000240000002111614532160402015730 0ustar00philstaff// qprocess.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Process) class QProcess : QIODevice { %TypeHeaderCode #include %End public: enum ExitStatus { NormalExit, CrashExit, }; enum ProcessError { FailedToStart, Crashed, Timedout, ReadError, WriteError, UnknownError, }; enum ProcessState { NotRunning, Starting, Running, }; enum ProcessChannel { StandardOutput, StandardError, }; enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels, ForwardedOutputChannel, ForwardedErrorChannel, }; explicit QProcess(QObject *parent /TransferThis/ = 0); virtual ~QProcess(); void start(const QString &program, const QStringList &arguments = {}, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /HoldGIL/; void start(QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /HoldGIL/; void startCommand(const QString &command, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /HoldGIL/; QProcess::ProcessChannel readChannel() const; void setReadChannel(QProcess::ProcessChannel channel); void closeReadChannel(QProcess::ProcessChannel channel); void closeWriteChannel(); QString workingDirectory() const; void setWorkingDirectory(const QString &dir); QProcess::ProcessError error() const; QProcess::ProcessState state() const; bool waitForStarted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForFinished(int msecs = 30000) /ReleaseGIL/; QByteArray readAllStandardOutput() /ReleaseGIL/; QByteArray readAllStandardError() /ReleaseGIL/; int exitCode() const; QProcess::ExitStatus exitStatus() const; virtual qint64 bytesToWrite() const; virtual bool isSequential() const; virtual void close(); static int execute(const QString &program, const QStringList &arguments = {}) /ReleaseGIL/; static bool startDetached(const QString &program, const QStringList &arguments = {}, const QString &workingDirectory = QString(), qint64 *pid = 0); bool startDetached(qint64 *pid = 0); static QStringList systemEnvironment(); QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); void setStandardInputFile(const QString &fileName); void setStandardOutputFile(const QString &fileName, QIODeviceBase::OpenMode mode = QIODeviceBase::Truncate); void setStandardErrorFile(const QString &fileName, QIODeviceBase::OpenMode mode = QIODeviceBase::Truncate); void setStandardOutputProcess(QProcess *destination); public slots: void terminate(); void kill(); signals: void started(); void finished(int exitCode, QProcess::ExitStatus exitStatus = QProcess::NormalExit); void stateChanged(QProcess::ProcessState state); void readyReadStandardOutput(); void readyReadStandardError(); void errorOccurred(QProcess::ProcessError error); protected: void setProcessState(QProcess::ProcessState state); virtual SIP_PYOBJECT readData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QProcess::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QProcess::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End public: void setProcessEnvironment(const QProcessEnvironment &environment); QProcessEnvironment processEnvironment() const; QString program() const; void setProgram(const QString &program); QStringList arguments() const; void setArguments(const QStringList &arguments); virtual bool open(QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; enum InputChannelMode { ManagedInputChannel, ForwardedInputChannel, }; QProcess::InputChannelMode inputChannelMode() const; void setInputChannelMode(QProcess::InputChannelMode mode); static QString nullDevice(); qint64 processId() const; %If (Qt_6_6_0 -) %If (Linux || macOS) enum class UnixProcessFlag { ResetSignalHandlers, IgnoreSigPipe, CloseFileDescriptors, UseVFork, }; %End %End %If (Qt_6_6_0 -) %If (Linux || macOS) typedef QFlags UnixProcessFlags; %End %End %If (Qt_6_6_0 -) %If (Linux || macOS) struct UnixProcessParameters { %TypeHeaderCode #include %End QProcess::UnixProcessFlags flags; int lowestFileDescriptorToClose; }; %End %End %If (Qt_6_6_0 -) %If (Linux || macOS) QProcess::UnixProcessParameters unixProcessParameters() const; %End %End %If (Qt_6_6_0 -) %If (Linux || macOS) void setUnixProcessParameters(QProcess::UnixProcessFlags flagsOnly); %End %End %If (Qt_6_6_0 -) %If (Linux || macOS) void setUnixProcessParameters(const QProcess::UnixProcessParameters ¶ms); %End %End }; %End %If (PyQt_Process) class QProcessEnvironment { %TypeHeaderCode #include %End public: %If (Qt_6_3_0 -) enum Initialization { InheritFromParent, }; %End %If (Qt_6_3_0 -) QProcessEnvironment(QProcessEnvironment::Initialization); %End QProcessEnvironment(); QProcessEnvironment(const QProcessEnvironment &other); ~QProcessEnvironment(); bool operator==(const QProcessEnvironment &other) const; bool operator!=(const QProcessEnvironment &other) const; bool isEmpty() const; void clear(); bool contains(const QString &name) const; void insert(const QString &name, const QString &value); void insert(const QProcessEnvironment &e); void remove(const QString &name); QString value(const QString &name, const QString &defaultValue = QString()) const; QStringList toStringList() const; static QProcessEnvironment systemEnvironment(); QStringList keys() const; void swap(QProcessEnvironment &other /Constrained/); %If (Qt_6_3_0 -) bool inheritsFromParent() const; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6674914 PyQt6-6.6.1/sip/QtCore/qpropertyanimation.sip0000644000076500000240000000323714532160402020042 0ustar00philstaff// qpropertyanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPropertyAnimation : QVariantAnimation { %TypeHeaderCode #include %End public: QPropertyAnimation(QObject *parent /TransferThis/ = 0); QPropertyAnimation(QObject *target /KeepReference=0/, const QByteArray &propertyName, QObject *parent /TransferThis/ = 0); virtual ~QPropertyAnimation(); QObject *targetObject() const; void setTargetObject(QObject *target /KeepReference=0/); QByteArray propertyName() const; void setPropertyName(const QByteArray &propertyName); protected: virtual bool event(QEvent *event); virtual void updateCurrentValue(const QVariant &value); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.709527 PyQt6-6.6.1/sip/QtCore/qpycore_qhash.sip0000644000076500000240000002557714532160402016756 0ustar00philstaff// This is the SIP interface definition for the majority of the QHash based // mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QHash<_TYPE1_, _TYPE2_> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_> *qh = new QHash<_TYPE1_, _TYPE2_>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; // This is only needed for QtWebChannel but is sufficiently generic that we // include it here. template<_TYPE1_, _TYPE2_ *> %MappedType QHash<_TYPE1_, _TYPE2_ *> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *d = PyDict_New(); if (d) { QHash<_TYPE1_, _TYPE2_ *>::const_iterator it = sipCpp->constBegin(); QHash<_TYPE1_, _TYPE2_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); d = 0; break; } _TYPE2_ *v = it.value(); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); d = 0; break; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); d = 0; break; } ++it; } } sipEnableGC(gc_enabled); return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash<_TYPE1_, _TYPE2_ *> *qh = new QHash<_TYPE1_, _TYPE2_ *>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; return 0; } _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qh; return 0; } qh->insert(*k, v); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; template %MappedType QHash /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = PyLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipLong_AsInt(kobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(vobj))); delete qh; return 0; } qh->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; template %MappedType QHash /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = PyLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { quint16 k = sipLong_AsUnsignedShort(kobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(vobj))); delete qh; return 0; } qh->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.663004 PyQt6-6.6.1/sip/QtCore/qpycore_qlist.sip0000644000076500000240000010020614532160402016765 0ustar00philstaff// This is the SIP interface definition for the majority of the QList based // mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QList<_TYPE_> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="List[_TYPE_]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = new _TYPE_(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_> *ql = new QList<_TYPE_>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QList<_TYPE_ *> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="List[_TYPE_]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *l = PyList_New(sipCpp->size()); if (l) { for (int i = 0; i < sipCpp->size(); ++i) { _TYPE_ *t = sipCpp->at(i); // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)t, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(l); l = 0; break; } PyList_SetItem(l, i, tobj); } } sipEnableGC(gc_enabled); return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList<_TYPE_ *> *ql = new QList<_TYPE_ *>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QList > /TypeHintIn="Iterable[Tuple[_TYPE1_, _TYPE2_]]", TypeHintOut="List[Tuple[_TYPE1_, _TYPE2_]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const std::pair<_TYPE1_, _TYPE2_> &p = sipCpp->at(i); _TYPE1_ *s1 = new _TYPE1_(p.first); _TYPE2_ *s2 = new _TYPE2_(p.second); PyObject *pobj = sipBuildResult(NULL, "(NN)", s1, sipType__TYPE1_, sipTransferObj, s2, sipType__TYPE2_, sipTransferObj); if (!pobj) { delete s1; delete s2; Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) && !PyBytes_Check(sipPy) && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state1; _TYPE1_ *s1 = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(itm1, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &state1, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but '_TYPE1_' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE2_ *s2 = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(itm2, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but '_TYPE2_' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); return 0; } ql->append(std::pair<_TYPE1_, _TYPE2_>(*s1, *s2)); sipReleaseType(s2, sipType__TYPE2_, state2); Py_DECREF(itm2); sipReleaseType(s1, sipType__TYPE1_, state1); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; template %MappedType QList > /TypeHintIn="Iterable[Tuple[float, _TYPE_]]", TypeHintOut="List[Tuple[float, _TYPE_]]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const std::pair &p = sipCpp->at(i); _TYPE_ *s2 = new _TYPE_(p.second); PyObject *pobj = sipBuildResult(NULL, "(dN)", (double)p.first, s2, sipType__TYPE_, sipTransferObj); if (!pobj) { delete s2; Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *qv = new QList >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) && !PyBytes_Check(sipPy) && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyErr_Clear(); qreal s1 = PyFloat_AsDouble(itm1); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but 'float' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } int state2; _TYPE_ *s2 = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm2, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state2, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete qv; Py_DECREF(iter); return 0; } qv->append(std::pair(s1, *s2)); sipReleaseType(s2, sipType__TYPE_, state2); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %MappedType QList > /TypeHintIn="Iterable[Tuple[int, int]]", TypeHintOut="List[Tuple[int, int]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { const std::pair &p = sipCpp->at(i); PyObject *pobj = Py_BuildValue((char *)"ii", p.first, p.second); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList > *ql = new QList >; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *seq = PyIter_Next(iter); if (!seq) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } Py_ssize_t sub_len; if (PySequence_Check(seq) && !PyBytes_Check(sipPy) && !PyUnicode_Check(seq)) sub_len = PySequence_Size(seq); else sub_len = -1; if (sub_len != 2) { if (sub_len < 0) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but a 2 element non-string sequence is expected", i, sipPyTypeName(Py_TYPE(seq))); else PyErr_Format(PyExc_TypeError, "index %zd is a sequence of %zd sub-elements but 2 sub-elements are expected", i, sub_len); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm1 = PySequence_GetItem(seq, 0); if (!itm1) { Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int first = sipLong_AsInt(itm1); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the first sub-element of index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm1))); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } PyObject *itm2 = PySequence_GetItem(seq, 1); if (!itm2) { Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(itm2); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second sub-element of index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm2))); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(std::pair(first, second)); Py_DECREF(itm2); Py_DECREF(itm1); Py_DECREF(seq); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyLong_FromLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int val = sipLong_AsInt(itm); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *qv = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned int val = sipLong_AsUnsignedInt(itm); if (PyErr_Occurred()) { Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %If (Qt_6_1_0 -) %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *qv = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned short val = sipLong_AsUnsignedShort(itm); if (PyErr_Occurred()) { Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End %If (Qt_6_5_0 -) %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyLong_FromLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); qsizetype val = PyLong_AsLongLong(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %MappedType QList /TypeHintIn="Iterable[float]", TypeHintOut="List[float]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'float' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[float]", TypeHintOut="List[float]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *pobj = PyFloat_FromDouble(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); double val = PyFloat_AsDouble(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'float' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[Qt.DayOfWeek]", TypeHintOut="List[Qt.DayOfWeek]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_Qt_DayOfWeek); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_Qt_DayOfWeek); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'Qt.DayOfWeek' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; // This is an explicit QList implementation that is identical // to the template above except for the /NoRelease/ annotation. The only use // of this is in a QModelDataRowSpan ctor where we handle the lifetime of the // C++ instance returned. An alternative would be to implement a /NoRelease/ // argument annotation in SIP. %MappedType QList /NoRelease, TypeHintIn="Iterable[QModelRoleData]", TypeHintOut="List[QModelRoleData]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QModelRoleData *t = new QModelRoleData(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QModelRoleData, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QModelRoleData *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QModelRoleData, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QModelRoleData' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QModelRoleData, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7041008 PyQt6-6.6.1/sip/QtCore/qpycore_qmap.sip0000644000076500000240000002356414532160402016602 0ustar00philstaff// This is the SIP interface definition for the majority of the QMap and // QMultiMap based mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType QMap<_TYPE1_, _TYPE2_> /TypeHint="Dict[_TYPE1_, _TYPE2_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap<_TYPE1_, _TYPE2_>::const_iterator it = sipCpp->constBegin(); QMap<_TYPE1_, _TYPE2_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE1_ *k = new _TYPE1_(it.key()); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } _TYPE2_ *v = new _TYPE2_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE2_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap<_TYPE1_, _TYPE2_> *qm = new QMap<_TYPE1_, _TYPE2_>; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qm; return 0; } int vstate; _TYPE2_ *v = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(vobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(vobj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } qm->insert(*k, *v); sipReleaseType(v, sipType__TYPE2_, vstate); sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template %MappedType QMap /TypeHint="Dict[int, _TYPE_]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QMap::const_iterator it = sipCpp->constBegin(); QMap::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = PyLong_FromLong(it.key()); if (!kobj) { Py_DECREF(d); return 0; } _TYPE_ *v = new _TYPE_(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType__TYPE_, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QMap *qm = new QMap; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipLong_AsInt(kobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qm; *sipIsErr = 1; return 0; } int vstate; _TYPE_ *v = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(vobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(vobj))); delete qm; return 0; } qm->insert(k, *v); sipReleaseType(v, sipType__TYPE_, vstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; template<_TYPE1_, _TYPE2_> %MappedType QMultiMap<_TYPE1_, _TYPE2_> /TypeHintIn="Dict[_TYPE1_, Sequence[_TYPE2_]]", TypeHintOut="Dict[_TYPE1_, List[_TYPE2_]]", TypeHintValue="{}"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QList<_TYPE1_> keys = sipCpp->keys(); QList<_TYPE1_>::const_iterator kit = keys.constBegin(); QList<_TYPE1_>::const_iterator kit_end = keys.constEnd(); while (kit != kit_end) { _TYPE1_ *k = new _TYPE1_(*kit); PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE1_, sipTransferObj); if (!kobj) { delete k; Py_DECREF(d); return 0; } // Create a Python list as the dictionary value. QList<_TYPE2_> values = sipCpp->values(*kit); PyObject *vobj = PyList_New(values.count()); if (!vobj) { Py_DECREF(kobj); Py_DECREF(d); return 0; } QList<_TYPE2_>::const_iterator vit = values.constBegin(); QList<_TYPE2_>::const_iterator vit_end = values.constEnd(); for (int i = 0; vit != vit_end; ++i) { _TYPE2_ *sv = new _TYPE2_(*vit); PyObject *svobj = sipConvertFromNewType(sv, sipType__TYPE2_, sipTransferObj); if (!svobj) { delete sv; Py_DECREF(vobj); Py_DECREF(kobj); Py_DECREF(d); return 0; } PyList_SetItem(vobj, i, svobj); ++vit; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++kit; } return d; %End %ConvertToTypeCode if (sipIsErr == NULL) return PyDict_Check(sipPy); QMultiMap<_TYPE1_, _TYPE2_> *qm = new QMultiMap<_TYPE1_, _TYPE2_>; Py_ssize_t i = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &i, &kobj, &vobj)) { int kstate; _TYPE1_ *k = reinterpret_cast<_TYPE1_ *>(sipConvertToType(kobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &kstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a dict key has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qm; return 0; } Py_ssize_t vi = PySequence_Size(vobj); if (vi < 0) { PyErr_Format(PyExc_TypeError, "a dict value has type '%s' but a sequence is expected", sipPyTypeName(Py_TYPE(vobj))); *sipIsErr = 1; sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } // We go through the sequence backwards to maintain the Qt semantics of // later items appearing first. while (vi--) { PyObject *itm_obj = PySequence_GetItem(vobj, vi); if (!itm_obj) { *sipIsErr = 1; sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } int itm_state; _TYPE2_ *itm = reinterpret_cast<_TYPE2_ *>(sipConvertToType(itm_obj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &itm_state, sipIsErr)); Py_DECREF(itm_obj); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "a sequence element has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(itm_obj))); sipReleaseType(k, sipType__TYPE1_, kstate); delete qm; return 0; } qm->insert(*k, *itm); sipReleaseType(itm, sipType__TYPE2_, itm_state); } sipReleaseType(k, sipType__TYPE1_, kstate); } *sipCppPtr = qm; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6179376 PyQt6-6.6.1/sip/QtCore/qpycore_qset.sip0000644000076500000240000001215514532160402016612 0ustar00philstaff// This is the SIP interface definition for the majority of the QSet based // mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE_> %MappedType QSet<_TYPE_> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="Set[_TYPE_]", TypeHintValue="set()"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *s = PySet_New(0); if (!s) return 0; QSet<_TYPE_>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_>::const_iterator end = sipCpp->constEnd(); while (it != end) { _TYPE_ *t = new _TYPE_(*it); PyObject *tobj = sipConvertFromNewType(t, sipType__TYPE_, sipTransferObj); if (!tobj) { delete t; Py_DECREF(s); return 0; } PySet_Add(s, tobj); ++it; } return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_> *qs = new QSet<_TYPE_>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(*t); sipReleaseType(t, sipType__TYPE_, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType QSet<_TYPE_ *> /TypeHintIn="Iterable[_TYPE_]", TypeHintOut="Set[_TYPE_]", TypeHintValue="set()"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode int gc_enabled = sipEnableGC(0); PyObject *s = PySet_New(0); if (s) { QSet<_TYPE_ *>::const_iterator it = sipCpp->constBegin(); QSet<_TYPE_ *>::const_iterator end = sipCpp->constEnd(); while (it != end) { // The explicit (void *) cast allows _TYPE_ to be const. PyObject *tobj = sipConvertFromType((void *)*it, sipType__TYPE_, sipTransferObj); if (!tobj) { Py_DECREF(s); s = 0; break; } PySet_Add(s, tobj); ++it; } } sipEnableGC(gc_enabled); return s; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QSet<_TYPE_ *> *qs = new QSet<_TYPE_ *>; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qs; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } _TYPE_ *t = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(itm, sipType__TYPE_, sipTransferObj, 0, 0, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but '_TYPE_' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qs; Py_DECREF(iter); return 0; } qs->insert(t); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qs; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6129825 PyQt6-6.6.1/sip/QtCore/qpycore_std_pair.sip0000644000076500000240000002654314532160402017451 0ustar00philstaff// This is the SIP interface definition for the majority of the std::pair based // mapped types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. template<_TYPE1_, _TYPE2_> %MappedType std::pair<_TYPE1_, _TYPE2_> /TypeHint="Tuple[_TYPE1_, _TYPE2_]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode _TYPE1_ *first = new _TYPE1_(sipCpp->first); _TYPE2_ *second = new _TYPE2_(sipCpp->second); PyObject *t = sipBuildResult(NULL, "(NN)", first, sipType__TYPE1_, sipTransferObj, second, sipType__TYPE2_, sipTransferObj); if (!t) { delete first; delete second; return 0; } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firststate; _TYPE1_ *first = reinterpret_cast<_TYPE1_ *>( sipForceConvertToType(firstobj, sipType__TYPE1_, sipTransferObj, SIP_NOT_NONE, &firststate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but '_TYPE1_' is expected", sipPyTypeName(Py_TYPE(firstobj))); return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int secondstate; _TYPE2_ *second = reinterpret_cast<_TYPE2_ *>( sipForceConvertToType(secondobj, sipType__TYPE2_, sipTransferObj, SIP_NOT_NONE, &secondstate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but '_TYPE2_' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair<_TYPE1_, _TYPE2_>(*first, *second); sipReleaseType(second, sipType__TYPE2_, secondstate); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE1_, firststate); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; template<_TYPE_> %MappedType std::pair<_TYPE_, int> /TypeHint="Tuple[_TYPE_, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode _TYPE_ *first = new _TYPE_(sipCpp->first); PyObject *t = sipBuildResult(NULL, "(Ni)", first, sipType__TYPE_, sipTransferObj, sipCpp->second); if (!t) { delete first; return 0; } return t; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firststate; _TYPE_ *first = reinterpret_cast<_TYPE_ *>( sipForceConvertToType(firstobj, sipType__TYPE_, sipTransferObj, SIP_NOT_NONE, &firststate, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but '_TYPE_' is expected", sipPyTypeName(Py_TYPE(firstobj))); return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(secondobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair<_TYPE_, int>(*first, second); Py_DECREF(secondobj); sipReleaseType(first, sipType__TYPE_, firststate); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %MappedType std::pair /TypeHint="Tuple[int, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ii)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int first = sipLong_AsInt(firstobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int second = sipLong_AsInt(secondobj); if (PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_TypeError)) PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'int' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair(first, second); Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %MappedType std::pair /TypeHint="Tuple[float, float]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ff)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } PyErr_Clear(); double first = PyFloat_AsDouble(firstobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); double second = PyFloat_AsDouble(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair(first, second);; Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %If (Qt_6_2_0 -) %MappedType std::pair /TypeHint="Tuple[float, float]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return Py_BuildValue("(ff)", sipCpp->first, sipCpp->second); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } PyErr_Clear(); double first = PyFloat_AsDouble(firstobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } PyErr_Clear(); double second = PyFloat_AsDouble(secondobj); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'float' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair(first, second);; Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6914678 PyQt6-6.6.1/sip/QtCore/qpycore_virtual_error_handler.sip0000644000076500000240000000172014532160402022226 0ustar00philstaff// This is the implementation of the PyQt-specific virtual error handler. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %VirtualErrorHandler PyQt6 pyqt6_err_print(); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6187794 PyQt6-6.6.1/sip/QtCore/qrandom.sip0000644000076500000240000000350714532160402015536 0ustar00philstaff// qrandom.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRandomGenerator { %TypeHeaderCode #include %End public: QRandomGenerator(quint32 seed = 1); QRandomGenerator(const QRandomGenerator &other); quint32 generate(); quint64 generate64(); double generateDouble(); double bounded(double highest /Constrained/); qint64 bounded(qint64 lowest, qint64 highest); qint64 bounded(qint64 highest); typedef quint32 result_type; QRandomGenerator::result_type operator()(); void seed(quint32 seed = 1); void discard(unsigned long long z); static QRandomGenerator::result_type min(); static QRandomGenerator::result_type max(); static QRandomGenerator *system(); static QRandomGenerator *global(); static QRandomGenerator securelySeeded(); }; bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2); bool operator!=(const QRandomGenerator &rng1, const QRandomGenerator &rng2); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6791818 PyQt6-6.6.1/sip/QtCore/qreadwritelock.sip0000644000076500000240000000556114532160402017117 0ustar00philstaff// qreadwritelock.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QReadWriteLock { %TypeHeaderCode #include %End public: enum RecursionMode { NonRecursive, Recursive, }; explicit QReadWriteLock(QReadWriteLock::RecursionMode recursionMode = QReadWriteLock::NonRecursive); ~QReadWriteLock(); void lockForRead() /ReleaseGIL/; %If (Qt_6_6_0 -) bool tryLockForRead(QDeadlineTimer timeout = {}) /ReleaseGIL/; %End %If (- Qt_6_6_0) bool tryLockForRead(); %End bool tryLockForRead(int timeout) /ReleaseGIL/; void lockForWrite() /ReleaseGIL/; %If (Qt_6_6_0 -) bool tryLockForWrite(QDeadlineTimer timeout = {}) /ReleaseGIL/; %End %If (- Qt_6_6_0) bool tryLockForWrite(); %End bool tryLockForWrite(int timeout) /ReleaseGIL/; void unlock(); private: QReadWriteLock(const QReadWriteLock &); }; class QReadLocker { %TypeHeaderCode #include %End public: QReadLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QReadLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QReadLocker(const QReadLocker &); }; class QWriteLocker { %TypeHeaderCode #include %End public: QWriteLocker(QReadWriteLock *areadWriteLock) /ReleaseGIL/; ~QWriteLocker(); void unlock(); void relock() /ReleaseGIL/; QReadWriteLock *readWriteLock() const; SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->unlock(); %End private: QWriteLocker(const QWriteLocker &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6961925 PyQt6-6.6.1/sip/QtCore/qrect.sip0000644000076500000240000002266614532160402015222 0ustar00philstaff// qrect.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRect { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRect(); QRect normalized() const; void moveCenter(const QPoint &p); QRect operator|(const QRect &r) const; QRect operator&(const QRect &r) const; bool contains(const QPoint &point, bool proper = false) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &rectangle, bool proper = false) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRect &r) const; QRect(int aleft, int atop, int awidth, int aheight); QRect(const QPoint &atopLeft, const QPoint &abottomRight); QRect(const QPoint &atopLeft, const QSize &asize); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QRect()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QRect(%i, %i, %i, %i)", sipCpp->left(), sipCpp->top(), sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End int left() const; int top() const; int right() const; int bottom() const; int x() const; int y() const; void setLeft(int pos); void setTop(int pos); void setRight(int pos); void setBottom(int pos); void setTopLeft(const QPoint &p); void setBottomRight(const QPoint &p); void setTopRight(const QPoint &p); void setBottomLeft(const QPoint &p); void setX(int ax); void setY(int ay); QPoint topLeft() const; QPoint bottomRight() const; QPoint topRight() const; QPoint bottomLeft() const; QPoint center() const; int width() const; int height() const; QSize size() const; void translate(int dx, int dy); void translate(const QPoint &p); QRect translated(int dx, int dy) const; QRect translated(const QPoint &p) const; void moveTo(int ax, int ay); void moveTo(const QPoint &p); void moveLeft(int pos); void moveTop(int pos); void moveRight(int pos); void moveBottom(int pos); void moveTopLeft(const QPoint &p); void moveBottomRight(const QPoint &p); void moveTopRight(const QPoint &p); void moveBottomLeft(const QPoint &p); void getRect(int *ax, int *ay, int *aw, int *ah) const; void setRect(int ax, int ay, int aw, int ah); void getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const; void setCoords(int xp1, int yp1, int xp2, int yp2); QRect adjusted(int xp1, int yp1, int xp2, int yp2) const; void adjust(int dx1, int dy1, int dx2, int dy2); void setWidth(int w); void setHeight(int h); void setSize(const QSize &s); bool contains(int ax, int ay, bool aproper) const; bool contains(int ax, int ay) const; QRect &operator|=(const QRect &r); QRect &operator&=(const QRect &r); QRect intersected(const QRect &other) const; QRect united(const QRect &r) const; QRect marginsAdded(const QMargins &margins) const; QRect marginsRemoved(const QMargins &margins) const; QRect &operator+=(const QMargins &margins); QRect &operator-=(const QMargins &margins); QRect transposed() const; static QRect span(const QPoint &p1, const QPoint &p2); %If (Qt_6_4_0 -) QRectF toRectF() const; %End }; QDataStream &operator<<(QDataStream &, const QRect &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRect & /Constrained/) /ReleaseGIL/; bool operator==(const QRect &r1, const QRect &r2); bool operator!=(const QRect &r1, const QRect &r2); class QRectF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("dddd", sipCpp->x(), sipCpp->y(), sipCpp->width(), sipCpp->height()); %End public: QRectF(); QRectF(const QPointF &atopLeft, const QSizeF &asize); QRectF(const QPointF &atopLeft, const QPointF &abottomRight); QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight); QRectF(const QRect &r); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QRectF()"); } else { PyObject *l = PyFloat_FromDouble(sipCpp->left()); PyObject *t = PyFloat_FromDouble(sipCpp->top()); PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (l && t && w && h) sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QRectF(%R, %R, %R, %R)", l, t, w, h); Py_XDECREF(l); Py_XDECREF(t); Py_XDECREF(w); Py_XDECREF(h); } %End QRectF normalized() const; qreal left() const; qreal top() const; qreal right() const; qreal bottom() const; void setX(qreal pos); void setY(qreal pos); QPointF topLeft() const; QPointF bottomRight() const; QPointF topRight() const; QPointF bottomLeft() const; QRectF operator|(const QRectF &r) const; QRectF operator&(const QRectF &r) const; bool contains(const QPointF &p) const; int __contains__(const QPointF &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRectF &r) const; int __contains__(const QRectF &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool intersects(const QRectF &r) const; bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal x() const; qreal y() const; void setLeft(qreal pos); void setRight(qreal pos); void setTop(qreal pos); void setBottom(qreal pos); void setTopLeft(const QPointF &p); void setTopRight(const QPointF &p); void setBottomLeft(const QPointF &p); void setBottomRight(const QPointF &p); QPointF center() const; void moveLeft(qreal pos); void moveTop(qreal pos); void moveRight(qreal pos); void moveBottom(qreal pos); void moveTopLeft(const QPointF &p); void moveTopRight(const QPointF &p); void moveBottomLeft(const QPointF &p); void moveBottomRight(const QPointF &p); void moveCenter(const QPointF &p); qreal width() const; qreal height() const; QSizeF size() const; void translate(qreal dx, qreal dy); void translate(const QPointF &p); void moveTo(qreal ax, qreal ay); void moveTo(const QPointF &p); QRectF translated(qreal dx, qreal dy) const; QRectF translated(const QPointF &p) const; void getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const; void setRect(qreal ax, qreal ay, qreal aaw, qreal aah); void getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const; void setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2); void adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2); QRectF adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const; void setWidth(qreal aw); void setHeight(qreal ah); void setSize(const QSizeF &s); bool contains(qreal ax, qreal ay) const; QRectF &operator|=(const QRectF &r); QRectF &operator&=(const QRectF &r); QRectF intersected(const QRectF &r) const; QRectF united(const QRectF &r) const; QRect toAlignedRect() const; QRect toRect() const; QRectF marginsAdded(const QMarginsF &margins) const; QRectF marginsRemoved(const QMarginsF &margins) const; QRectF &operator+=(const QMarginsF &margins); QRectF &operator-=(const QMarginsF &margins); QRectF transposed() const; }; QDataStream &operator<<(QDataStream &, const QRectF &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRectF & /Constrained/) /ReleaseGIL/; bool operator==(const QRectF &r1, const QRectF &r2); bool operator!=(const QRectF &r1, const QRectF &r2); QRect operator+(const QRect &rectangle, const QMargins &margins); QRect operator+(const QMargins &margins, const QRect &rectangle); QRect operator-(const QRect &lhs, const QMargins &rhs); QRectF operator+(const QRectF &lhs, const QMarginsF &rhs); QRectF operator+(const QMarginsF &lhs, const QRectF &rhs); QRectF operator-(const QRectF &lhs, const QMarginsF &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7117355 PyQt6-6.6.1/sip/QtCore/qregularexpression.sip0000644000076500000240000001622214532160402020035 0ustar00philstaff// qregularexpression.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegularExpression { %TypeHeaderCode #include %End public: enum PatternOption /BaseType=Flag/ { NoPatternOption, CaseInsensitiveOption, DotMatchesEverythingOption, MultilineOption, ExtendedPatternSyntaxOption, InvertedGreedinessOption, DontCaptureOption, UseUnicodePropertiesOption, }; typedef QFlags PatternOptions; QRegularExpression::PatternOptions patternOptions() const; void setPatternOptions(QRegularExpression::PatternOptions options); QRegularExpression(); QRegularExpression(const QString &pattern, QRegularExpression::PatternOptions options = QRegularExpression::NoPatternOption); QRegularExpression(const QRegularExpression &re); ~QRegularExpression(); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->pattern()); if (uni) { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QRegularExpression(%R", uni); if (sipCpp->patternOptions() != QRegularExpression::NoPatternOption) { qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromFormat( ", PyQt6.QtCore.QRegularExpression.PatternOptions(%i)", (int)sipCpp->patternOptions())); } qpycore_Unicode_ConcatAndDel(&sipRes, PyUnicode_FromString(")")); Py_DECREF(uni); } else { sipRes = 0; } %End void swap(QRegularExpression &re /Constrained/); QString pattern() const; void setPattern(const QString &pattern); bool isValid() const; qsizetype patternErrorOffset() const; QString errorString() const; int captureCount() const; enum MatchType { NormalMatch, PartialPreferCompleteMatch, PartialPreferFirstMatch, NoMatch, }; enum MatchOption /BaseType=Flag/ { NoMatchOption, AnchorAtOffsetMatchOption, DontCheckSubjectStringMatchOption, }; typedef QFlags MatchOptions; QRegularExpressionMatch match(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; %If (Qt_6_5_0 -) QRegularExpressionMatch matchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; %End QRegularExpressionMatchIterator globalMatch(const QString &subject, qsizetype offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; %If (Qt_6_5_0 -) QRegularExpressionMatchIterator globalMatchView(QStringView subjectView, qsizetype offset = 0, QRegularExpression::MatchType matchType = QRegularExpression::NormalMatch, QRegularExpression::MatchOptions matchOptions = QRegularExpression::NoMatchOption) const; %End static QString escape(const QString &str); QStringList namedCaptureGroups() const; bool operator==(const QRegularExpression &re) const; bool operator!=(const QRegularExpression &re) const; void optimize() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End static QString wildcardToRegularExpression(QStringView str, QRegularExpression::WildcardConversionOptions options = QRegularExpression::DefaultWildcardConversion); static QString anchoredPattern(const QString &expression); enum WildcardConversionOption /BaseType=Flag/ { DefaultWildcardConversion, UnanchoredWildcardConversion, %If (Qt_6_6_0 -) NonPathWildcardConversion, %End }; typedef QFlags WildcardConversionOptions; static QRegularExpression fromWildcard(QStringView pattern, Qt::CaseSensitivity cs = Qt::CaseInsensitive, QRegularExpression::WildcardConversionOptions options = QRegularExpression::DefaultWildcardConversion); }; QDataStream &operator<<(QDataStream &out, const QRegularExpression &re /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QRegularExpression &re /Constrained/) /ReleaseGIL/; class QRegularExpressionMatch { %TypeHeaderCode #include %End public: QRegularExpressionMatch(); ~QRegularExpressionMatch(); QRegularExpressionMatch(const QRegularExpressionMatch &match); void swap(QRegularExpressionMatch &match /Constrained/); QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QRegularExpression::MatchOptions matchOptions() const; bool hasMatch() const; bool hasPartialMatch() const; bool isValid() const; int lastCapturedIndex() const; QString captured(int nth = 0) const; QString captured(const QString &name) const; QStringList capturedTexts() const; qsizetype capturedStart(QStringView name) const; qsizetype capturedStart(int nth = 0) const; qsizetype capturedLength(QStringView name) const; qsizetype capturedLength(int nth = 0) const; qsizetype capturedEnd(QStringView name) const; qsizetype capturedEnd(int nth = 0) const; %If (Qt_6_3_0 -) bool hasCaptured(int nth) const; %End %If (Qt_6_3_0 -) bool hasCaptured(const QString &name) const; %End }; class QRegularExpressionMatchIterator { %TypeHeaderCode #include %End public: QRegularExpressionMatchIterator(); ~QRegularExpressionMatchIterator(); QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator); void swap(QRegularExpressionMatchIterator &iterator /Constrained/); bool isValid() const; bool hasNext() const; QRegularExpressionMatch next(); QRegularExpressionMatch peekNext() const; QRegularExpression regularExpression() const; QRegularExpression::MatchType matchType() const; QRegularExpression::MatchOptions matchOptions() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6315465 PyQt6-6.6.1/sip/QtCore/qresource.sip0000644000076500000240000000514514532160402016105 0ustar00philstaff// qresource.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QResource { %TypeHeaderCode #include %End public: QResource(const QString &fileName = QString(), const QLocale &locale = QLocale()); ~QResource(); QString absoluteFilePath() const; SIP_PYOBJECT data() const /TypeHint="bytes"/; %MethodCode // The data may contain embedded '\0's so set the size explicitly. if (sipCpp->data()) { if ((sipRes = PyBytes_FromStringAndSize((char *)sipCpp->data(), sipCpp->size())) == NULL) sipIsErr = 1; } else { Py_INCREF(Py_None); sipRes = Py_None; } %End QString fileName() const; bool isValid() const; QLocale locale() const; void setFileName(const QString &file); void setLocale(const QLocale &locale); qint64 size() const; static bool registerResource(const QString &rccFileName, const QString &mapRoot = QString()); static bool registerResource(const uchar *rccData, const QString &mapRoot = QString()) /PyName=registerResourceData/; static bool unregisterResource(const QString &rccFileName, const QString &mapRoot = QString()); static bool unregisterResource(const uchar *rccData, const QString &mapRoot = QString()) /PyName=unregisterResourceData/; protected: QStringList children() const; bool isDir() const; bool isFile() const; public: QDateTime lastModified() const; enum Compression { NoCompression, ZlibCompression, ZstdCompression, }; QResource::Compression compressionAlgorithm() const; qint64 uncompressedSize() const; QByteArray uncompressedData() const; private: QResource(const QResource &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6518314 PyQt6-6.6.1/sip/QtCore/qrunnable.sip0000644000076500000240000000326614532160402016066 0ustar00philstaff// qrunnable.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRunnable /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QRunnable(); virtual ~QRunnable(); virtual void run() = 0 /NewThread/; bool autoDelete() const; void setAutoDelete(bool _autoDelete); static QRunnable *create(SIP_PYCALLABLE functionToRun /KeepReference,TypeHint="Callable[[], None]"/) /Factory/; %MethodCode sipRes = QRunnable::create([a0]() { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallObject(a0, NULL); if (res) Py_DECREF(res); else pyqt6_err_print(); SIP_UNBLOCK_THREADS }); %End private: QRunnable(const QRunnable &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7055078 PyQt6-6.6.1/sip/QtCore/qsavefile.sip0000644000076500000240000000452614532160402016056 0ustar00philstaff// qsavefile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSaveFile : QFileDevice { %TypeHeaderCode #include %End public: explicit QSaveFile(const QString &name); explicit QSaveFile(QObject *parent /TransferThis/ = 0); QSaveFile(const QString &name, QObject *parent /TransferThis/); virtual ~QSaveFile(); virtual QString fileName() const; void setFileName(const QString &name); virtual bool open(QIODeviceBase::OpenMode flags) /ReleaseGIL/; bool commit(); void cancelWriting(); void setDirectWriteFallback(bool enabled); bool directWriteFallback() const; protected: virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QSaveFile::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End private: virtual void close(); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.688554 PyQt6-6.6.1/sip/QtCore/qsemaphore.sip0000644000076500000240000000325314532160402016237 0ustar00philstaff// qsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSemaphore { %TypeHeaderCode #include %End public: explicit QSemaphore(int n = 0); ~QSemaphore(); void acquire(int n = 1) /ReleaseGIL/; bool tryAcquire(int n = 1); %If (Qt_6_6_0 -) bool tryAcquire(int n, QDeadlineTimer timeout) /ReleaseGIL/; %End bool tryAcquire(int n, int timeout) /ReleaseGIL/; void release(int n = 1); int available() const; private: QSemaphore(const QSemaphore &); }; class QSemaphoreReleaser /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSemaphoreReleaser(); QSemaphoreReleaser(QSemaphore *sem, int n = 1); ~QSemaphoreReleaser(); void swap(QSemaphoreReleaser &other); QSemaphore *semaphore() const; QSemaphore *cancel(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6989427 PyQt6-6.6.1/sip/QtCore/qsequentialanimationgroup.sip0000644000076500000240000000327114532160402021403 0ustar00philstaff// qsequentialanimationgroup.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSequentialAnimationGroup : QAnimationGroup { %TypeHeaderCode #include %End public: QSequentialAnimationGroup(QObject *parent /TransferThis/ = 0); virtual ~QSequentialAnimationGroup(); QPauseAnimation *addPause(int msecs); QPauseAnimation *insertPause(int index, int msecs); QAbstractAnimation *currentAnimation() const; virtual int duration() const; signals: void currentAnimationChanged(QAbstractAnimation *current); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateDirection(QAbstractAnimation::Direction direction); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.664734 PyQt6-6.6.1/sip/QtCore/qsettings.sip0000644000076500000240000001176514532160402016123 0ustar00philstaff// qsettings.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSettings : QObject { %TypeHeaderCode #include %End public: enum Status { NoError, AccessError, FormatError, }; enum Format { NativeFormat, IniFormat, InvalidFormat, }; enum Scope { UserScope, SystemScope, }; QSettings(const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSettings(QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSettings(QSettings::Format format, QSettings::Scope scope, const QString &organization, const QString &application = QString(), QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSettings(const QString &fileName, QSettings::Format format, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSettings(QSettings::Scope scope, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; explicit QSettings(QObject *parent /TransferThis/ = 0) /ReleaseGIL/; virtual ~QSettings() /ReleaseGIL/; void clear() /ReleaseGIL/; void sync() /ReleaseGIL/; QSettings::Status status() const; %If (Qt_6_4_0 -) void beginGroup(QAnyStringView prefix); %End %If (- Qt_6_4_0) void beginGroup(const QString &prefix); %End void endGroup(); QString group() const; %If (Qt_6_4_0 -) int beginReadArray(QAnyStringView prefix); %End %If (- Qt_6_4_0) int beginReadArray(const QString &prefix); %End %If (Qt_6_4_0 -) void beginWriteArray(QAnyStringView prefix, int size = -1); %End %If (- Qt_6_4_0) void beginWriteArray(const QString &prefix, int size = -1); %End void endArray(); void setArrayIndex(int i); QStringList allKeys() const /ReleaseGIL/; QStringList childKeys() const /ReleaseGIL/; QStringList childGroups() const /ReleaseGIL/; bool isWritable() const; %If (Qt_6_4_0 -) void setValue(QAnyStringView key, const QVariant &value) /ReleaseGIL/; %End %If (- Qt_6_4_0) void setValue(const QString &key, const QVariant &value) /ReleaseGIL/; %End %If (Qt_6_4_0 -) SIP_PYOBJECT value(const QAnyStringView &key, const QVariant &defaultValue = QVariant(), SIP_PYOBJECT type /TypeHint="type", TypeHintValue="None"/ = 0) const /ReleaseGIL/; %MethodCode QVariant value; // QSettings has an internal mutex so release the GIL to avoid the possibility // of deadlocks. Py_BEGIN_ALLOW_THREADS value = sipCpp->value(*a0, *a1); Py_END_ALLOW_THREADS sipRes = pyqt6_from_qvariant_by_type(value, a2); sipIsErr = !sipRes; %End %End %If (- Qt_6_4_0) SIP_PYOBJECT value(const QString &key, const QVariant &defaultValue = QVariant(), SIP_PYOBJECT type /TypeHint="type", TypeHintValue="None"/ = 0) const /ReleaseGIL/; %MethodCode QVariant value; // QSettings has an internal mutex so release the GIL to avoid the possibility // of deadlocks. Py_BEGIN_ALLOW_THREADS value = sipCpp->value(*a0, *a1); Py_END_ALLOW_THREADS sipRes = pyqt6_from_qvariant_by_type(value, a2); sipIsErr = !sipRes; %End %End %If (Qt_6_4_0 -) void remove(QAnyStringView key) /ReleaseGIL/; %End %If (- Qt_6_4_0) void remove(const QString &key) /ReleaseGIL/; %End %If (Qt_6_4_0 -) bool contains(QAnyStringView key) const /ReleaseGIL/; %End %If (- Qt_6_4_0) bool contains(const QString &key) const /ReleaseGIL/; %End void setFallbacksEnabled(bool b); bool fallbacksEnabled() const; QString fileName() const; static void setPath(QSettings::Format format, QSettings::Scope scope, const QString &path) /ReleaseGIL/; QSettings::Format format() const; QSettings::Scope scope() const; QString organizationName() const; QString applicationName() const; static void setDefaultFormat(QSettings::Format format); static QSettings::Format defaultFormat(); bool isAtomicSyncRequired() const; void setAtomicSyncRequired(bool enable); protected: virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6500404 PyQt6-6.6.1/sip/QtCore/qsharedmemory.sip0000644000076500000240000000603714532160402016756 0ustar00philstaff// qsharedmemory.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSharedMemory : QObject { %TypeHeaderCode #include %End public: enum AccessMode { ReadOnly, ReadWrite, }; enum SharedMemoryError { NoError, PermissionDenied, InvalidSize, KeyError, AlreadyExists, NotFound, LockError, OutOfResources, UnknownError, }; QSharedMemory(QObject *parent /TransferThis/ = 0); %If (Qt_6_6_0 -) QSharedMemory(const QNativeIpcKey &key, QObject *parent /TransferThis/ = 0); %End QSharedMemory(const QString &key, QObject *parent /TransferThis/ = 0); virtual ~QSharedMemory(); void setKey(const QString &key); QString key() const; bool create(qsizetype size, QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); qsizetype size() const; bool attach(QSharedMemory::AccessMode mode = QSharedMemory::ReadWrite); bool isAttached() const; bool detach(); SIP_PYOBJECT data() /TypeHint="PyQt6.sip.voidptr"/; %MethodCode sipRes = sipConvertFromVoidPtrAndSize(sipCpp->data(), sipCpp->size()); %End SIP_PYOBJECT constData() const /TypeHint="PyQt6.sip.voidptr"/; %MethodCode sipRes = sipConvertFromConstVoidPtrAndSize(sipCpp->constData(), sipCpp->size()); %End bool lock(); bool unlock(); QSharedMemory::SharedMemoryError error() const; QString errorString() const; %If (Qt_6_6_0 -) void setNativeKey(const QNativeIpcKey &key); %End %If (Qt_6_6_0 -) void setNativeKey(const QString &key, QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs()); %End %If (- Qt_6_6_0) void setNativeKey(const QString &key); %End QString nativeKey() const; %If (Qt_6_6_0 -) QNativeIpcKey nativeIpcKey() const; %End %If (Qt_6_6_0 -) static bool isKeyTypeSupported(QNativeIpcKey::Type type); %End %If (Qt_6_6_0 -) static QNativeIpcKey platformSafeKey(const QString &key, QNativeIpcKey::Type type = QNativeIpcKey::DefaultTypeForOs); %End %If (Qt_6_6_0 -) static QNativeIpcKey legacyNativeKey(const QString &key, QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs()); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6859787 PyQt6-6.6.1/sip/QtCore/qsignalmapper.sip0000644000076500000240000000315114532160402016733 0ustar00philstaff// qsignalmapper.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalMapper : QObject { %TypeHeaderCode #include %End public: explicit QSignalMapper(QObject *parent /TransferThis/ = 0); virtual ~QSignalMapper(); void setMapping(QObject *sender, int id); void setMapping(QObject *sender, const QString &text); void setMapping(QObject *sender, QObject *object); void removeMappings(QObject *sender); QObject *mapping(int id) const; QObject *mapping(const QString &text) const; QObject *mapping(QObject *object) const; signals: void mappedInt(int); void mappedString(const QString &); void mappedObject(QObject *); public slots: void map(); void map(QObject *sender); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6639206 PyQt6-6.6.1/sip/QtCore/qsize.sip0000644000076500000240000001206514532160402015227 0ustar00philstaff// qsize.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSize { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("ii", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSize &s, Qt::AspectRatioMode mode); QSize(); QSize(int w, int h); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QSize()"); } else { sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QSize(%i, %i)", sipCpp->width(), sipCpp->height()); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End int width() const; int height() const; void setWidth(int w); void setHeight(int h); void scale(int w, int h, Qt::AspectRatioMode mode); QSize &operator+=(const QSize &s); QSize &operator-=(const QSize &s); QSize &operator*=(qreal c); QSize &operator/=(qreal c); QSize expandedTo(const QSize &otherSize) const; QSize boundedTo(const QSize &otherSize) const; QSize scaled(const QSize &s, Qt::AspectRatioMode mode) const; QSize scaled(int w, int h, Qt::AspectRatioMode mode) const; QSize transposed() const; QSize grownBy(QMargins m) const; QSize shrunkBy(QMargins m) const; %If (Qt_6_4_0 -) QSizeF toSizeF() const; %End }; QDataStream &operator<<(QDataStream &, const QSize &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSize & /Constrained/) /ReleaseGIL/; bool operator==(const QSize &s1, const QSize &s2); bool operator!=(const QSize &s1, const QSize &s2); QSize operator+(const QSize &s1, const QSize &s2); QSize operator-(const QSize &s1, const QSize &s2); QSize operator*(const QSize &s, qreal c); QSize operator*(qreal c, const QSize &s); QSize operator/(const QSize &s, qreal c); class QSizeF { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("dd", sipCpp->width(), sipCpp->height()); %End public: void transpose(); void scale(const QSizeF &s, Qt::AspectRatioMode mode); QSizeF(); QSizeF(const QSize &sz); QSizeF(qreal w, qreal h); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode if (sipCpp->isNull()) { sipRes = PyUnicode_FromString("PyQt6.QtCore.QSizeF()"); } else { PyObject *w = PyFloat_FromDouble(sipCpp->width()); PyObject *h = PyFloat_FromDouble(sipCpp->height()); if (w && h) sipRes = PyUnicode_FromFormat( "PyQt6.QtCore.QSizeF(%R, %R)", w, h); Py_XDECREF(w); Py_XDECREF(h); } %End bool isNull() const; bool isEmpty() const; bool isValid() const; int __bool__() const; %MethodCode sipRes = sipCpp->isValid(); %End qreal width() const; qreal height() const; void setWidth(qreal w); void setHeight(qreal h); void scale(qreal w, qreal h, Qt::AspectRatioMode mode); QSizeF &operator+=(const QSizeF &s); QSizeF &operator-=(const QSizeF &s); QSizeF &operator*=(qreal c); QSizeF &operator/=(qreal c); QSizeF expandedTo(const QSizeF &otherSize) const; QSizeF boundedTo(const QSizeF &otherSize) const; QSize toSize() const; QSizeF scaled(const QSizeF &s, Qt::AspectRatioMode mode) const; QSizeF scaled(qreal w, qreal h, Qt::AspectRatioMode mode) const; QSizeF transposed() const; QSizeF grownBy(QMarginsF m) const; QSizeF shrunkBy(QMarginsF m) const; }; QDataStream &operator<<(QDataStream &, const QSizeF &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizeF & /Constrained/) /ReleaseGIL/; bool operator==(const QSizeF &s1, const QSizeF &s2); bool operator!=(const QSizeF &s1, const QSizeF &s2); QSizeF operator+(const QSizeF &s1, const QSizeF &s2); QSizeF operator-(const QSizeF &s1, const QSizeF &s2); QSizeF operator*(const QSizeF &s, qreal c); QSizeF operator*(qreal c, const QSizeF &s); QSizeF operator/(const QSizeF &s, qreal c); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5984514 PyQt6-6.6.1/sip/QtCore/qsocketnotifier.sip0000644000076500000240000000321114532160402017276 0ustar00philstaff// qsocketnotifier.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSocketNotifier : QObject { %TypeHeaderCode #include %End public: enum Type { Read, Write, Exception, }; %If (Qt_6_1_0 -) QSocketNotifier(QSocketNotifier::Type, QObject *parent /TransferThis/ = 0); %End QSocketNotifier(qintptr socket, QSocketNotifier::Type, QObject *parent /TransferThis/ = 0); virtual ~QSocketNotifier(); qintptr socket() const; QSocketNotifier::Type type() const; bool isEnabled() const; void setEnabled(bool); %If (Qt_6_1_0 -) void setSocket(qintptr socket); %End %If (Qt_6_1_0 -) bool isValid() const; %End signals: void activated(int socket); protected: virtual bool event(QEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6508822 PyQt6-6.6.1/sip/QtCore/qsortfilterproxymodel.sip0000644000076500000240000001342414532160402020575 0ustar00philstaff// qsortfilterproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSortFilterProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QSortFilterProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QSortFilterProxyModel(); virtual void setSourceModel(QAbstractItemModel *sourceModel /KeepReference/); virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const; virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const; QRegularExpression filterRegularExpression() const; int filterKeyColumn() const; void setFilterKeyColumn(int column); Qt::CaseSensitivity filterCaseSensitivity() const; void setFilterCaseSensitivity(Qt::CaseSensitivity cs); public slots: void invalidate(); void setFilterFixedString(const QString &pattern); void setFilterRegularExpression(const QRegularExpression ®ularExpression); void setFilterRegularExpression(const QString &pattern); void setFilterWildcard(const QString &pattern); protected: virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const; virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; public: virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual void fetchMore(const QModelIndex &parent); virtual bool canFetchMore(const QModelIndex &parent) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QModelIndex buddy(const QModelIndex &index) const; virtual QSize span(const QModelIndex &index) const; virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith | Qt::MatchWrap)) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); Qt::CaseSensitivity sortCaseSensitivity() const; void setSortCaseSensitivity(Qt::CaseSensitivity cs); bool dynamicSortFilter() const; void setDynamicSortFilter(bool enable); int sortRole() const; void setSortRole(int role); int sortColumn() const; Qt::SortOrder sortOrder() const; int filterRole() const; void setFilterRole(int role); virtual QStringList mimeTypes() const; virtual Qt::DropActions supportedDropActions() const; bool isSortLocaleAware() const; void setSortLocaleAware(bool on); virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; bool isRecursiveFilteringEnabled() const; void setRecursiveFilteringEnabled(bool recursive); protected: void invalidateFilter(); signals: void dynamicSortFilterChanged(bool dynamicSortFilter); void filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity); void sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity); void sortLocaleAwareChanged(bool sortLocaleAware); void sortRoleChanged(int sortRole); void filterRoleChanged(int filterRole); void recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled); public: bool autoAcceptChildRows() const; void setAutoAcceptChildRows(bool accept); protected: void invalidateRowsFilter(); void invalidateColumnsFilter(); signals: void autoAcceptChildRowsChanged(bool autoAcceptChildRows); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6140878 PyQt6-6.6.1/sip/QtCore/qstandardpaths.sip0000644000076500000240000000504614532160402017116 0ustar00philstaff// qstandardpaths.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardPaths { %TypeHeaderCode #include %End public: enum StandardLocation { DesktopLocation, DocumentsLocation, FontsLocation, ApplicationsLocation, MusicLocation, MoviesLocation, PicturesLocation, TempLocation, HomeLocation, CacheLocation, GenericDataLocation, RuntimeLocation, ConfigLocation, DownloadLocation, GenericCacheLocation, GenericConfigLocation, AppDataLocation, AppLocalDataLocation, AppConfigLocation, %If (Qt_6_4_0 -) PublicShareLocation, %End %If (Qt_6_4_0 -) TemplatesLocation, %End }; static QString writableLocation(QStandardPaths::StandardLocation type); static QStringList standardLocations(QStandardPaths::StandardLocation type); enum LocateOption /BaseType=Flag/ { LocateFile, LocateDirectory, }; typedef QFlags LocateOptions; static QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); static QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); static QString displayName(QStandardPaths::StandardLocation type); static QString findExecutable(const QString &executableName, const QStringList &paths = QStringList()); static void setTestModeEnabled(bool testMode); private: QStandardPaths(); ~QStandardPaths(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6327322 PyQt6-6.6.1/sip/QtCore/qstorageinfo.sip0000644000076500000240000000365614532160402016603 0ustar00philstaff// qstorageinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStorageInfo { %TypeHeaderCode #include %End public: QStorageInfo(); explicit QStorageInfo(const QString &path); explicit QStorageInfo(const QDir &dir); QStorageInfo(const QStorageInfo &other); ~QStorageInfo(); void swap(QStorageInfo &other /Constrained/); void setPath(const QString &path); QString rootPath() const; QByteArray device() const; QByteArray fileSystemType() const; QString name() const; QString displayName() const; qint64 bytesTotal() const; qint64 bytesFree() const; qint64 bytesAvailable() const; bool isReadOnly() const; bool isReady() const; bool isValid() const; void refresh(); static QList mountedVolumes(); static QStorageInfo root(); bool isRoot() const; int blockSize() const; QByteArray subvolume() const; }; bool operator==(const QStorageInfo &first, const QStorageInfo &second); bool operator!=(const QStorageInfo &first, const QStorageInfo &second); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6006658 PyQt6-6.6.1/sip/QtCore/qstring.sip0000644000076500000240000000275614532160402015571 0ustar00philstaff// This is the SIP interface definition for the QString mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QString /AllowNone, TypeHintIn="Optional[str]", TypeHintOut="str", TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) return (sipPy == Py_None || PyUnicode_Check(sipPy)); if (sipPy == Py_None) { // None is the only way to create a null (as opposed to empty) QString. *sipCppPtr = new QString(); return sipGetState(sipTransferObj); } *sipCppPtr = new QString(qpycore_PyObject_AsQString(sipPy)); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(*sipCpp); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6108215 PyQt6-6.6.1/sip/QtCore/qstringconverter.sip0000644000076500000240000000620514532160402017512 0ustar00philstaff// qstringconverter.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (- Qt_6_4_0) class QStringConverterBase { %TypeHeaderCode #include %End public: enum class Flag /BaseType=Flag/ { Default, Stateless, ConvertInvalidToNull, WriteBom, ConvertInitialBom, }; typedef QFlags Flags; }; %End %If (- Qt_6_4_0) class QStringConverter : QStringConverterBase { %TypeHeaderCode #include %End public: enum Encoding { Utf8, Utf16, Utf16LE, Utf16BE, Utf32, Utf32LE, Utf32BE, Latin1, System, }; protected: QStringConverter(); QStringConverter(QStringConverter::Encoding encoding, QStringConverterBase::Flags f); QStringConverter(const char *name, QStringConverterBase::Flags f); public: bool isValid() const; void resetState(); bool hasError() const; const char *name() const; private: QStringConverter(const QStringConverter &); }; %End class QStringEncoder : QStringConverter { %TypeHeaderCode #include %End public: QStringEncoder(); QStringEncoder(QStringConverter::Encoding encoding, QStringConverterBase::Flags flags = QStringConverterBase::Flag::Default); QStringEncoder(const char *name, QStringConverterBase::Flags flags = QStringConverterBase::Flag::Default); QByteArray operator()(QStringView in) [QStringEncoder::DecodedData (QStringView in)]; QByteArray encode(QStringView in) [QStringEncoder::DecodedData (QStringView in)]; }; class QStringDecoder : QStringConverter { %TypeHeaderCode #include %End public: QStringDecoder(QStringConverter::Encoding encoding, QStringConverterBase::Flags flags = QStringConverterBase::Flag::Default); QStringDecoder(); QStringDecoder(const char *name, QStringConverterBase::Flags flags = QStringConverterBase::Flag::Default); QString operator()(QByteArrayView ba) [QStringDecoder::EncodedData (QByteArrayView ba)]; QString decode(QByteArrayView ba) [QStringDecoder::EncodedData (QByteArrayView ba)]; %If (Qt_6_4_0 -) static QStringDecoder decoderForHtml(QByteArrayView data); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6943924 PyQt6-6.6.1/sip/QtCore/qstringconverter_base.sip0000644000076500000240000000412614532160402020504 0ustar00philstaff// qstringconverter_base.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_4_0 -) class QStringConverterBase { %TypeHeaderCode #include %End public: enum class Flag /BaseType=Flag/ { Default, Stateless, ConvertInvalidToNull, WriteBom, ConvertInitialBom, UsesIcu, }; typedef QFlags Flags; protected: ~QStringConverterBase(); }; %End %If (Qt_6_4_0 -) class QStringConverter : QStringConverterBase { %TypeHeaderCode #include %End public: enum Encoding { Utf8, Utf16, Utf16LE, Utf16BE, Utf32, Utf32LE, Utf32BE, Latin1, System, }; protected: QStringConverter(); QStringConverter(QStringConverter::Encoding encoding, QStringConverterBase::Flags f); QStringConverter(const char *name, QStringConverterBase::Flags f); ~QStringConverter(); public: bool isValid() const; void resetState(); bool hasError() const; const char *name() const; static const char *nameForEncoding(QStringConverter::Encoding e); private: QStringConverter(const QStringConverter &); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.671681 PyQt6-6.6.1/sip/QtCore/qstringlist.sip0000644000076500000240000000557114532160402016463 0ustar00philstaff// This is the SIP interface definition for the QStringList mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QStringList /TypeHintIn="Iterable[QString]", TypeHintOut="List[QString]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { QString *t = new QString(sipCpp->at(i)); PyObject *tobj = sipConvertFromNewType(t, sipType_QString, sipTransferObj); if (!tobj) { delete t; Py_DECREF(l); return 0; } PyList_SetItem(l, i, tobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QStringList *ql = new QStringList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int state; QString *t = reinterpret_cast( sipForceConvertToType(itm, sipType_QString, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); if (*sipIsErr) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'str' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); return 0; } ql->append(*t); sipReleaseType(t, sipType_QString, state); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.648998 PyQt6-6.6.1/sip/QtCore/qstringlistmodel.sip0000644000076500000240000000454314532160402017502 0ustar00philstaff// qstringlistmodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStringListModel : QAbstractListModel { %TypeHeaderCode #include %End public: explicit QStringListModel(QObject *parent /TransferThis/ = 0); QStringListModel(const QStringList &strings, QObject *parent /TransferThis/ = 0); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); QStringList stringList() const; void setStringList(const QStringList &strings); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual Qt::DropActions supportedDropActions() const; virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual bool clearItemData(const QModelIndex &index); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6208532 PyQt6-6.6.1/sip/QtCore/qstringview.sip0000644000076500000240000000300114532160402016444 0ustar00philstaff// This is the SIP interface definition for the QStringView mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QStringView /TypeHint="str",TypeHintValue="''"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) return PyUnicode_Check(sipPy); // TODO: consider creating the view directly from the Python object if it is // using UTF-16. QString *qs = new QString(qpycore_PyObject_AsQString(sipPy)); *sipCppPtr = new QStringView(*qs); *sipUserStatePtr = qs; return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQString(sipCpp->toString()); %End %ReleaseCode delete sipCpp; delete reinterpret_cast(sipUserState); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5989022 PyQt6-6.6.1/sip/QtCore/qsysinfo.sip0000644000076500000240000000304414532160402015744 0ustar00philstaff// qsysinfo.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSysInfo { %TypeHeaderCode #include %End public: enum Sizes { WordSize, }; enum Endian { BigEndian, LittleEndian, ByteOrder, }; static QString buildCpuArchitecture(); static QString currentCpuArchitecture(); static QString buildAbi(); static QString kernelType(); static QString kernelVersion(); static QString productType(); static QString productVersion(); static QString prettyProductName(); static QString machineHostName(); static QByteArray machineUniqueId(); static QByteArray bootUniqueId(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6297066 PyQt6-6.6.1/sip/QtCore/qsystemsemaphore.sip0000644000076500000240000000530014532160402017477 0ustar00philstaff// qsystemsemaphore.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemSemaphore { %TypeHeaderCode #include %End public: enum AccessMode { Open, Create, }; enum SystemSemaphoreError { NoError, PermissionDenied, KeyError, AlreadyExists, NotFound, OutOfResources, UnknownError, }; %If (Qt_6_6_0 -) QSystemSemaphore(const QNativeIpcKey &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); %End QSystemSemaphore(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); ~QSystemSemaphore(); void setKey(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); QString key() const; bool acquire(); bool release(int n = 1); QSystemSemaphore::SystemSemaphoreError error() const; QString errorString() const; %If (Qt_6_6_0 -) void setNativeKey(const QNativeIpcKey &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open); %End %If (Qt_6_6_0 -) void setNativeKey(const QString &key, int initialValue = 0, QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open, QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs()); %End %If (Qt_6_6_0 -) QNativeIpcKey nativeIpcKey() const; %End %If (Qt_6_6_0 -) static bool isKeyTypeSupported(QNativeIpcKey::Type type); %End %If (Qt_6_6_0 -) static QNativeIpcKey platformSafeKey(const QString &key, QNativeIpcKey::Type type = QNativeIpcKey::DefaultTypeForOs); %End %If (Qt_6_6_0 -) static QNativeIpcKey legacyNativeKey(const QString &key, QNativeIpcKey::Type type = QNativeIpcKey::legacyDefaultTypeForOs()); %End private: QSystemSemaphore(const QSystemSemaphore &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6567562 PyQt6-6.6.1/sip/QtCore/qtemporarydir.sip0000644000076500000240000000266714532160402017005 0ustar00philstaff// qtemporarydir.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryDir { %TypeHeaderCode #include %End public: QTemporaryDir(); explicit QTemporaryDir(const QString &templateName); ~QTemporaryDir(); bool isValid() const; bool autoRemove() const; void setAutoRemove(bool b); bool remove(); QString path() const; QString errorString() const; QString filePath(const QString &fileName) const; %If (Qt_6_4_0 -) void swap(QTemporaryDir &other); %End private: QTemporaryDir(const QTemporaryDir &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6024284 PyQt6-6.6.1/sip/QtCore/qtemporaryfile.sip0000644000076500000240000000340614532160402017136 0ustar00philstaff// qtemporaryfile.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTemporaryFile : QFile { %TypeHeaderCode #include %End public: QTemporaryFile(); explicit QTemporaryFile(const QString &templateName); explicit QTemporaryFile(QObject *parent /TransferThis/); QTemporaryFile(const QString &templateName, QObject *parent /TransferThis/); virtual ~QTemporaryFile(); bool autoRemove() const; void setAutoRemove(bool b); bool open() /ReleaseGIL/; virtual QString fileName() const; QString fileTemplate() const; void setFileTemplate(const QString &name); static QTemporaryFile *createNativeFile(const QString &fileName) /Factory,ReleaseGIL/; static QTemporaryFile *createNativeFile(QFile &file) /Factory,ReleaseGIL/; bool rename(const QString &newName); protected: virtual bool open(QIODeviceBase::OpenMode flags) /ReleaseGIL/; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.641793 PyQt6-6.6.1/sip/QtCore/qtenvironmentvariables.sip0000644000076500000240000000265714532160402020704 0ustar00philstaff// qtenvironmentvariables.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) %ModuleCode #include %End %End %If (Qt_6_5_0 -) QString qEnvironmentVariable(const char *varName, const QString &defaultValue); %End %If (Qt_6_5_0 -) QString qEnvironmentVariable(const char *varName); %End %If (Qt_6_5_0 -) bool qEnvironmentVariableIsEmpty(const char *varName); %End %If (Qt_6_5_0 -) bool qEnvironmentVariableIsSet(const char *varName); %End %If (Qt_6_5_0 -) int qEnvironmentVariableIntValue(const char *varName, bool *ok = 0); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6879556 PyQt6-6.6.1/sip/QtCore/qtextboundaryfinder.sip0000644000076500000240000000371614532160402020200 0ustar00philstaff// qtextboundaryfinder.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBoundaryFinder { %TypeHeaderCode #include %End public: enum BoundaryReason /BaseType=Flag/ { NotAtBoundary, SoftHyphen, BreakOpportunity, StartOfItem, EndOfItem, MandatoryBreak, }; typedef QFlags BoundaryReasons; enum BoundaryType { Grapheme, Word, Line, Sentence, }; QTextBoundaryFinder(); QTextBoundaryFinder(const QTextBoundaryFinder &other); QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType type, const QString &string); ~QTextBoundaryFinder(); bool isValid() const; QTextBoundaryFinder::BoundaryType type() const; QString string() const; void toStart(); void toEnd(); qsizetype position() const; void setPosition(qsizetype position); qsizetype toNextBoundary(); qsizetype toPreviousBoundary(); bool isAtBoundary() const; QTextBoundaryFinder::BoundaryReasons boundaryReasons() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7017937 PyQt6-6.6.1/sip/QtCore/qtextstream.sip0000644000076500000240000001274314532160402016460 0ustar00philstaff// qtextstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTextStream : QIODeviceBase { %TypeHeaderCode #include %End public: enum RealNumberNotation { SmartNotation, FixedNotation, ScientificNotation, }; enum FieldAlignment { AlignLeft, AlignRight, AlignCenter, AlignAccountingStyle, }; enum Status { Ok, ReadPastEnd, ReadCorruptData, WriteFailed, }; enum NumberFlag /BaseType=Flag/ { ShowBase, ForcePoint, ForceSign, UppercaseBase, UppercaseDigits, }; typedef QFlags NumberFlags; QTextStream(); explicit QTextStream(QIODevice *device); QTextStream(QByteArray *array /Constrained/, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); virtual ~QTextStream(); void setEncoding(QStringConverter::Encoding encoding); QStringConverter::Encoding encoding() const; void setAutoDetectUnicode(bool enabled); bool autoDetectUnicode() const; void setGenerateByteOrderMark(bool generate); bool generateByteOrderMark() const; void setLocale(const QLocale &locale); QLocale locale() const; void setDevice(QIODevice *device); QIODevice *device() const; QTextStream::Status status() const; void setStatus(QTextStream::Status status); void resetStatus(); bool atEnd() const; void reset(); void flush() /ReleaseGIL/; bool seek(qint64 pos); qint64 pos() const; void skipWhiteSpace(); QString readLine(qint64 maxLength = 0) /ReleaseGIL/; QString readAll() /ReleaseGIL/; QString read(qint64 maxlen) /ReleaseGIL/; void setFieldAlignment(QTextStream::FieldAlignment alignment); QTextStream::FieldAlignment fieldAlignment() const; void setPadChar(QChar ch); QChar padChar() const; void setFieldWidth(int width); int fieldWidth() const; void setNumberFlags(QTextStream::NumberFlags flags); QTextStream::NumberFlags numberFlags() const; void setIntegerBase(int base); int integerBase() const; void setRealNumberNotation(QTextStream::RealNumberNotation notation); QTextStream::RealNumberNotation realNumberNotation() const; void setRealNumberPrecision(int precision); int realNumberPrecision() const; QTextStream &operator>>(QByteArray &array /Constrained/); QTextStream &operator<<(QStringView s); QTextStream &operator<<(const QByteArray &array); QTextStream &operator<<(double f /Constrained/); QTextStream &operator<<(SIP_PYOBJECT i /TypeHint="int"/); %MethodCode qlonglong val = sipLong_AsLongLong(a1); if (!PyErr_Occurred()) { sipRes = &(*a0 << val); } else { // If it is positive then it might fit an unsigned long long. qulonglong uval = sipLong_AsUnsignedLongLong(a1); if (!PyErr_Occurred()) { sipRes = &(*a0 << uval); } else { sipError = (PyErr_ExceptionMatches(PyExc_OverflowError) ? sipErrorFail : sipErrorContinue); } } %End private: QTextStream(const QTextStream &); }; class QTextStreamManipulator; QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m); QTextStreamManipulator qSetFieldWidth(int width); QTextStreamManipulator qSetPadChar(QChar ch); QTextStreamManipulator qSetRealNumberPrecision(int precision); namespace Qt { %TypeHeaderCode #include %End QTextStream &bin(QTextStream &s); QTextStream &oct(QTextStream &s); QTextStream &dec(QTextStream &s); QTextStream &hex(QTextStream &s); QTextStream &showbase(QTextStream &s); QTextStream &forcesign(QTextStream &s); QTextStream &forcepoint(QTextStream &s); QTextStream &noshowbase(QTextStream &s); QTextStream &noforcesign(QTextStream &s); QTextStream &noforcepoint(QTextStream &s); QTextStream &uppercasebase(QTextStream &s); QTextStream &uppercasedigits(QTextStream &s); QTextStream &lowercasebase(QTextStream &s); QTextStream &lowercasedigits(QTextStream &s); QTextStream &fixed(QTextStream &s); QTextStream &scientific(QTextStream &s); QTextStream &left(QTextStream &s); QTextStream &right(QTextStream &s); QTextStream ¢er(QTextStream &s); QTextStream &endl(QTextStream &s); QTextStream &flush(QTextStream &s); QTextStream &reset(QTextStream &s); QTextStream &bom(QTextStream &s); QTextStream &ws(QTextStream &s); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6413462 PyQt6-6.6.1/sip/QtCore/qthread.sip0000644000076500000240000000520314532160402015520 0ustar00philstaff// qthread.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThread : QObject { %TypeHeaderCode #include %End public: static QThread *currentThread(); static Qt::HANDLE currentThreadId(); static int idealThreadCount(); static void yieldCurrentThread() /ReleaseGIL/; explicit QThread(QObject *parent /TransferThis/ = 0); virtual ~QThread(); enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority, TimeCriticalPriority, InheritPriority, }; bool isFinished() const; bool isRunning() const; void setPriority(QThread::Priority priority); QThread::Priority priority() const; void setStackSize(uint stackSize); uint stackSize() const; void exit(int returnCode = 0) /ReleaseGIL/; public slots: void start(QThread::Priority priority = QThread::InheritPriority) /ReleaseGIL/; void terminate(); void quit(); public: bool wait(QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever)) /ReleaseGIL/; bool wait(unsigned long time) /ReleaseGIL/; signals: void started(); void finished(); protected: virtual void run() /NewThread,ReleaseGIL/; int exec() /ReleaseGIL/; static void setTerminationEnabled(bool enabled = true); public: virtual bool event(QEvent *event); static void sleep(unsigned long) /ReleaseGIL/; static void msleep(unsigned long) /ReleaseGIL/; static void usleep(unsigned long) /ReleaseGIL/; QAbstractEventDispatcher *eventDispatcher() const; void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher /Transfer/); void requestInterruption(); bool isInterruptionRequested() const; int loopLevel() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.619825 PyQt6-6.6.1/sip/QtCore/qthreadpool.sip0000644000076500000240000001160214532160402016412 0ustar00philstaff// qthreadpool.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QThreadPool : QObject { %TypeHeaderCode #include %End public: QThreadPool(QObject *parent /TransferThis/ = 0); virtual ~QThreadPool() /ReleaseGIL/; static QThreadPool *globalInstance() /KeepReference/; void start(QRunnable *runnable /GetWrapper/, int priority = 0) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipCpp->start(a0, a1); Py_END_ALLOW_THREADS %End void start(SIP_PYCALLABLE functionToRun /TypeHint="Callable[[], None]"/, int priority = 0) /ReleaseGIL/; %MethodCode Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->start([a0]() { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallObject(a0, NULL); Py_DECREF(a0); if (res) Py_DECREF(res); else pyqt6_err_print(); SIP_UNBLOCK_THREADS }, a1); Py_END_ALLOW_THREADS %End bool tryStart(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryStart(a0); Py_END_ALLOW_THREADS %End bool tryStart(SIP_PYCALLABLE functionToRun /TypeHint="Callable[[], None]"/) /ReleaseGIL/; %MethodCode Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryStart([a0]() { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallObject(a0, NULL); Py_DECREF(a0); if (res) Py_DECREF(res); else pyqt6_err_print(); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End bool tryTake(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->tryTake(a0); Py_END_ALLOW_THREADS // We have to handle the object ownership manually. if (sipRes) sipTransferBack(a0Wrapper); %End int expiryTimeout() const; void setExpiryTimeout(int expiryTimeout); int maxThreadCount() const; void setMaxThreadCount(int maxThreadCount) /ReleaseGIL/; int activeThreadCount() const /ReleaseGIL/; void reserveThread() /ReleaseGIL/; void releaseThread() /ReleaseGIL/; bool waitForDone(int msecs = -1) /ReleaseGIL/; void clear() /ReleaseGIL/; void setStackSize(uint stackSize); uint stackSize() const; bool contains(const QThread *thread) const; %If (Qt_6_2_0 -) void setThreadPriority(QThread::Priority priority); %End %If (Qt_6_2_0 -) QThread::Priority threadPriority() const; %End %If (Qt_6_3_0 -) void startOnReservedThread(QRunnable *runnable /GetWrapper/) /ReleaseGIL/; %MethodCode // We have to handle the object ownership manually. if (a0->autoDelete()) sipTransferTo(a0Wrapper, sipSelf); Py_BEGIN_ALLOW_THREADS sipCpp->startOnReservedThread(a0); Py_END_ALLOW_THREADS %End %End %If (Qt_6_3_0 -) void startOnReservedThread(SIP_PYCALLABLE functionToRun /TypeHint="Callable[[], None]"/) /ReleaseGIL/; %MethodCode Py_INCREF(a0); Py_BEGIN_ALLOW_THREADS sipCpp->startOnReservedThread([a0]() { SIP_BLOCK_THREADS PyObject *res; res = PyObject_CallObject(a0, NULL); Py_DECREF(a0); if (res) Py_DECREF(res); else pyqt6_err_print(); SIP_UNBLOCK_THREADS }); Py_END_ALLOW_THREADS %End %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5937772 PyQt6-6.6.1/sip/QtCore/qtimeline.sip0000644000076500000240000000457714532160402016074 0ustar00philstaff// qtimeline.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimeLine : QObject { %TypeHeaderCode #include %End public: enum Direction { Forward, Backward, }; enum State { NotRunning, Paused, Running, }; QTimeLine(int duration = 1000, QObject *parent /TransferThis/ = 0); virtual ~QTimeLine(); QTimeLine::State state() const; int loopCount() const; void setLoopCount(int count); QTimeLine::Direction direction() const; void setDirection(QTimeLine::Direction direction); int duration() const; void setDuration(int duration); int startFrame() const; void setStartFrame(int frame); int endFrame() const; void setEndFrame(int frame); void setFrameRange(int startFrame, int endFrame); int updateInterval() const; void setUpdateInterval(int interval); int currentTime() const; int currentFrame() const; qreal currentValue() const; int frameForTime(int msec) const; virtual qreal valueForTime(int msec) const; public slots: void resume(); void setCurrentTime(int msec); void setPaused(bool paused); void start(); void stop(); void toggleDirection(); signals: void finished(); void frameChanged(int); void stateChanged(QTimeLine::State newState); void valueChanged(qreal x); protected: virtual void timerEvent(QTimerEvent *event); public: QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &curve); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6203792 PyQt6-6.6.1/sip/QtCore/qtimer.sip0000644000076500000240000000503114532160402015370 0ustar00philstaff// qtimer.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimer : QObject { %TypeHeaderCode #include %End public: explicit QTimer(QObject *parent /TransferThis/ = 0); virtual ~QTimer(); bool isActive() const; int timerId() const; void setInterval(int msec); int interval() const; bool isSingleShot() const; void setSingleShot(bool asingleShot); static void singleShot(int msec, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_get_connection_parts(a1, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void singleShot(int msec, Qt::TimerType timerType, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_get_connection_parts(a2, 0, "()", true, &receiver, slot_signature)) == sipErrorNone) { QTimer::singleShot(a0, a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End public slots: void start(int msec); void start(); void stop(); signals: void timeout(); protected: virtual void timerEvent(QTimerEvent *); public: void setTimerType(Qt::TimerType atype); Qt::TimerType timerType() const; int remainingTime() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6001904 PyQt6-6.6.1/sip/QtCore/qtimezone.sip0000644000076500000240000001270014532160402016103 0ustar00philstaff// qtimezone.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTimeZone { %TypeHeaderCode #include %End public: enum TimeType { StandardTime, DaylightTime, GenericTime, }; enum NameType { DefaultName, LongName, ShortName, OffsetName, }; struct OffsetData { %TypeHeaderCode #include %End QString abbreviation; QDateTime atUtc; int offsetFromUtc; int standardTimeOffset; int daylightTimeOffset; }; typedef QList OffsetDataList; %If (Qt_6_5_0 -) QTimeZone(QTimeZone::Initialization spec); %End %If (Qt_6_2_0 -) QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Territory territory = QLocale::AnyTerritory, const QString &comment = QString()); %End %If (- Qt_6_2_0) QTimeZone(const QByteArray &zoneId, int offsetSeconds, const QString &name, const QString &abbreviation, QLocale::Country country = QLocale::AnyCountry, const QString &comment = QString()); %End explicit QTimeZone(const QByteArray &ianaId); explicit QTimeZone(int offsetSeconds); QTimeZone(const QTimeZone &other); QTimeZone(); ~QTimeZone(); void swap(QTimeZone &other /Constrained/); bool operator==(const QTimeZone &other) const; bool operator!=(const QTimeZone &other) const; bool isValid() const; QByteArray id() const; QLocale::Country country() const; %If (Qt_6_2_0 -) QLocale::Territory territory() const; %End QString comment() const; QString displayName(const QDateTime &atDateTime, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString displayName(QTimeZone::TimeType timeType, QTimeZone::NameType nameType = QTimeZone::DefaultName, const QLocale &locale = QLocale()) const; QString abbreviation(const QDateTime &atDateTime) const; int offsetFromUtc(const QDateTime &atDateTime) const; int standardTimeOffset(const QDateTime &atDateTime) const; int daylightTimeOffset(const QDateTime &atDateTime) const; bool hasDaylightTime() const; bool isDaylightTime(const QDateTime &atDateTime) const; QTimeZone::OffsetData offsetData(const QDateTime &forDateTime) const; bool hasTransitions() const; QTimeZone::OffsetData nextTransition(const QDateTime &afterDateTime) const; QTimeZone::OffsetData previousTransition(const QDateTime &beforeDateTime) const; QTimeZone::OffsetDataList transitions(const QDateTime &fromDateTime, const QDateTime &toDateTime) const; static QByteArray systemTimeZoneId(); static bool isTimeZoneIdAvailable(const QByteArray &ianaId); %If (Qt_6_2_0 -) static QList availableTimeZoneIds(QLocale::Territory territory /Constrained/); %End %If (- Qt_6_2_0) static QList availableTimeZoneIds(QLocale::Country country /Constrained/); %End static QList availableTimeZoneIds(int offsetSeconds); static QList availableTimeZoneIds(); static QByteArray ianaIdToWindowsId(const QByteArray &ianaId); static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId); %If (Qt_6_2_0 -) static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Territory territory); %End %If (- Qt_6_2_0) static QByteArray windowsIdToDefaultIanaId(const QByteArray &windowsId, QLocale::Country country); %End static QList windowsIdToIanaIds(const QByteArray &windowsId); %If (Qt_6_2_0 -) static QList windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Territory territory); %End %If (- Qt_6_2_0) static QList windowsIdToIanaIds(const QByteArray &windowsId, QLocale::Country country); %End static QTimeZone systemTimeZone(); static QTimeZone utc(); %If (Qt_6_5_0 -) enum Initialization { LocalTime, UTC, }; %End %If (Qt_6_5_0 -) static QTimeZone fromSecondsAheadOfUtc(int offset); %End %If (Qt_6_5_0 -) Qt::TimeSpec timeSpec() const; %End %If (Qt_6_5_0 -) int fixedSecondsAheadOfUtc() const; %End %If (Qt_6_5_0 -) bool isUtcOrFixedOffset() const; %End %If (Qt_6_5_0 -) static bool isUtcOrFixedOffset(Qt::TimeSpec spec); %End %If (Qt_6_5_0 -) QTimeZone asBackendZone() const; %End %If (Qt_6_6_0 -) static const int MinUtcOffsetSecs; %End %If (Qt_6_6_0 -) static const int MaxUtcOffsetSecs; %End }; QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz) /ReleaseGIL/; QDataStream &operator>>(QDataStream &ds, QTimeZone &tz /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6982625 PyQt6-6.6.1/sip/QtCore/qtipccommon.sip0000644000076500000240000000410214532160402016416 0ustar00philstaff// qtipccommon.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_6_0 -) class QNativeIpcKey { %TypeHeaderCode #include %End public: enum class Type { SystemV, PosixRealtime, Windows, }; static const QNativeIpcKey::Type DefaultTypeForOs; static QNativeIpcKey::Type legacyDefaultTypeForOs(); QNativeIpcKey(); explicit QNativeIpcKey(QNativeIpcKey::Type type); QNativeIpcKey(const QString &k, QNativeIpcKey::Type type = QNativeIpcKey::DefaultTypeForOs); QNativeIpcKey(const QNativeIpcKey &other); ~QNativeIpcKey(); void swap(QNativeIpcKey &other /Constrained/); bool isEmpty() const; bool isValid() const; QNativeIpcKey::Type type() const; void setType(QNativeIpcKey::Type type); QString nativeKey() const; void setNativeKey(const QString &newKey); QString toString() const; static QNativeIpcKey fromString(const QString &string); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_6_0 -) bool operator==(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs); %End %If (Qt_6_6_0 -) bool operator!=(const QNativeIpcKey &lhs, const QNativeIpcKey &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6494114 PyQt6-6.6.1/sip/QtCore/qtranslator.sip0000644000076500000240000000345514532160402016451 0ustar00philstaff// qtranslator.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTranslator : QObject { %TypeHeaderCode #include %End public: explicit QTranslator(QObject *parent /TransferThis/ = 0); virtual ~QTranslator(); virtual QString translate(const char *context, const char *sourceText, const char *disambiguation = 0, int n = -1) const; virtual bool isEmpty() const; bool load(const QString &fileName, const QString &directory = QString(), const QString &searchDelimiters = QString(), const QString &suffix = QString()) /ReleaseGIL/; bool load(const QLocale &locale, const QString &fileName, const QString &prefix = QString(), const QString &directory = QString(), const QString &suffix = QString()) /ReleaseGIL/; bool load(const uchar *data /Array/, int len /ArraySize/, const QString &directory = QString()) /PyName=loadFromData,ReleaseGIL/; QString language() const; QString filePath() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6402202 PyQt6-6.6.1/sip/QtCore/qtransposeproxymodel.sip0000644000076500000240000000560114532160402020414 0ustar00philstaff// qtransposeproxymodel.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTransposeProxyModel : QAbstractProxyModel { %TypeHeaderCode #include %End public: explicit QTransposeProxyModel(QObject *parent /TransferThis/ = 0); virtual ~QTransposeProxyModel(); virtual void setSourceModel(QAbstractItemModel *newSourceModel /KeepReference/); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual QSize span(const QModelIndex &index) const; virtual QMap itemData(const QModelIndex &index) const; virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6727653 PyQt6-6.6.1/sip/QtCore/qtversion.sip0000644000076500000240000000204114532160402016117 0ustar00philstaff// qtversion.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) %ModuleCode #include %End %End %If (Qt_6_5_0 -) const char *qVersion(); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5968137 PyQt6-6.6.1/sip/QtCore/qtypes.sip0000644000076500000240000000350314532160402015416 0ustar00philstaff// qtypes.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) typedef unsigned char uchar; %End %If (Qt_6_5_0 -) typedef unsigned short ushort; %End %If (Qt_6_5_0 -) typedef unsigned int uint; %End %If (Qt_6_5_0 -) typedef unsigned long ulong; %End %If (Qt_6_5_0 -) typedef signed char qint8 /PyInt/; %End %If (Qt_6_5_0 -) typedef unsigned char quint8 /PyInt/; %End %If (Qt_6_5_0 -) typedef short qint16; %End %If (Qt_6_5_0 -) typedef unsigned short quint16; %End %If (Qt_6_5_0 -) typedef int qint32; %End %If (Qt_6_5_0 -) typedef unsigned int quint32; %End %If (Qt_6_5_0 -) typedef long long qint64; %End %If (Qt_6_5_0 -) typedef unsigned long long quint64; %End %If (Qt_6_5_0 -) typedef qint64 qlonglong; %End %If (Qt_6_5_0 -) typedef quint64 qulonglong; %End %If (Qt_6_5_0 -) %If (PyQt_qreal_double) typedef double qreal; %End %End %If (Qt_6_5_0 -) %If (!PyQt_qreal_double) typedef float qreal; %End %End %If (Qt_6_5_0 -) typedef long long qsizetype; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6704366 PyQt6-6.6.1/sip/QtCore/qurl.sip0000644000076500000240000001626014532160402015060 0ustar00philstaff// qurl.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUrl { %TypeHeaderCode #include %End %TypeCode #include %End public: enum ParsingMode { TolerantMode, StrictMode, DecodedMode, }; QUrl(); QUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); QUrl(const QUrl ©); ~QUrl(); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QUrl(%R)", uni); Py_DECREF(uni); } %End enum UrlFormattingOption /BaseType=IntFlag/ { None, RemoveScheme, RemovePassword, RemoveUserInfo, RemovePort, RemoveAuthority, RemovePath, RemoveQuery, RemoveFragment, PreferLocalFile, StripTrailingSlash, RemoveFilename, NormalizePathSegments, }; typedef QFlags FormattingOptions; enum ComponentFormattingOption /BaseType=IntFlag/ { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, EncodeReserved, DecodeReserved, FullyEncoded, FullyDecoded, }; typedef QFlags ComponentFormattingOptions; QString url(QUrl::FormattingOptions options = QUrl::FormattingOptions(QUrl::PrettyDecoded)) const; void setUrl(const QString &url, QUrl::ParsingMode mode = QUrl::TolerantMode); bool isValid() const; bool isEmpty() const; void clear(); void setScheme(const QString &scheme); QString scheme() const; void setAuthority(const QString &authority, QUrl::ParsingMode mode = QUrl::TolerantMode); QString authority(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = QUrl::TolerantMode); QString userInfo(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setUserName(const QString &userName, QUrl::ParsingMode mode = QUrl::DecodedMode); QString userName(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; void setPassword(const QString &password, QUrl::ParsingMode mode = QUrl::DecodedMode); QString password(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); QString host(QUrl::ComponentFormattingOptions = QUrl::FullyDecoded) const; void setPort(int port); int port(int defaultPort = -1) const; void setPath(const QString &path, QUrl::ParsingMode mode = QUrl::DecodedMode); QString path(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; void setFragment(const QString &fragment, QUrl::ParsingMode mode = QUrl::TolerantMode); QString fragment(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; QUrl resolved(const QUrl &relative) const; bool isRelative() const; bool isParentOf(const QUrl &url) const; static QUrl fromLocalFile(const QString &localfile); QString toLocalFile() const; QString toString(QUrl::FormattingOptions options = QUrl::FormattingOptions(QUrl::PrettyDecoded)) const; QString toString(QUrl::ComponentFormattingOptions options) const; QByteArray toEncoded(QUrl::FormattingOptions options = QUrl::FullyEncoded) const; QByteArray toEncoded(QUrl::ComponentFormattingOptions options) const; static QUrl fromEncoded(const QByteArray &u, QUrl::ParsingMode mode = QUrl::TolerantMode); void detach(); bool isDetached() const; bool operator<(const QUrl &url) const; bool operator==(const QUrl &url) const; bool operator!=(const QUrl &url) const; static QString fromPercentEncoding(const QByteArray &); static QByteArray toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()); bool hasQuery() const; bool hasFragment() const; QString errorString() const; %If (Qt_6_3_0 -) static QString fromAce(const QByteArray &domain, QUrl::AceProcessingOptions options = {}); %End %If (- Qt_6_3_0) static QString fromAce(const QByteArray &); %End %If (Qt_6_3_0 -) static QByteArray toAce(const QString &domain, QUrl::AceProcessingOptions options = {}); %End %If (- Qt_6_3_0) static QByteArray toAce(const QString &); %End static QStringList idnWhitelist(); static void setIdnWhitelist(const QStringList &); static QUrl fromUserInput(const QString &userInput, const QString &workingDirectory = QString(), QUrl::UserInputResolutionOptions options = QUrl::DefaultResolution); void swap(QUrl &other /Constrained/); bool isLocalFile() const; QString toDisplayString(QUrl::FormattingOptions options = QUrl::FormattingOptions(QUrl::PrettyDecoded)) const; QString toDisplayString(QUrl::ComponentFormattingOptions options) const; void setQuery(const QString &query, QUrl::ParsingMode mode = QUrl::TolerantMode); void setQuery(const QUrlQuery &query); QString query(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; static QStringList toStringList(const QList &uris, QUrl::FormattingOptions options = QUrl::FormattingOptions(QUrl::PrettyDecoded)); static QList fromStringList(const QStringList &uris, QUrl::ParsingMode mode = QUrl::TolerantMode); QUrl adjusted(QUrl::FormattingOptions options) const; QString fileName(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; bool matches(const QUrl &url, QUrl::FormattingOptions options) const; enum UserInputResolutionOption /BaseType=Flag/ { DefaultResolution, AssumeLocalFile, }; typedef QFlags UserInputResolutionOptions; %If (Qt_6_3_0 -) enum AceProcessingOption /BaseType=Flag/ { IgnoreIDNWhitelist, AceTransitionalProcessing, }; %End %If (Qt_6_3_0 -) typedef QFlags AceProcessingOptions; %End }; QDataStream &operator<<(QDataStream &, const QUrl &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUrl & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6322386 PyQt6-6.6.1/sip/QtCore/qurlquery.sip0000644000076500000240000000534014532160402016143 0ustar00philstaff// qurlquery.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUrlQuery { %TypeHeaderCode #include %End public: QUrlQuery(); explicit QUrlQuery(const QUrl &url); explicit QUrlQuery(const QString &queryString); QUrlQuery(const QUrlQuery &other); ~QUrlQuery(); bool operator==(const QUrlQuery &other) const; bool operator!=(const QUrlQuery &other) const; void swap(QUrlQuery &other /Constrained/); bool isEmpty() const; bool isDetached() const; void clear(); QString query(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setQuery(const QString &queryString); QString toString(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter); QChar queryValueDelimiter() const; QChar queryPairDelimiter() const; void setQueryItems(const QList> &query); QList> queryItems(QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; bool hasQueryItem(const QString &key) const; void addQueryItem(const QString &key, const QString &value); void removeQueryItem(const QString &key); QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions options = QUrl::PrettyDecoded) const; void removeAllQueryItems(const QString &key); static QChar defaultQueryValueDelimiter(); %MethodCode sipRes = new QChar(QUrlQuery::defaultQueryValueDelimiter()); %End static QChar defaultQueryPairDelimiter(); %MethodCode sipRes = new QChar(QUrlQuery::defaultQueryPairDelimiter()); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7103019 PyQt6-6.6.1/sip/QtCore/quuid.sip0000644000076500000240000000714214532160402015223 0ustar00philstaff// quuid.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUuid { %TypeHeaderCode #include %End public: enum Variant { VarUnknown, NCS, DCE, Microsoft, Reserved, }; enum Version { VerUnknown, Time, EmbeddedPOSIX, Md5, Name, Random, Sha1, }; enum StringFormat { WithBraces, WithoutBraces, Id128, }; QUuid(); %If (Qt_6_6_0 -) QUuid(QUuid::Id128Bytes id128, QSysInfo::Endian order = QSysInfo::BigEndian); %End QUuid(uint l, ushort w1, ushort w2, uchar b1 /PyInt/, uchar b2 /PyInt/, uchar b3 /PyInt/, uchar b4 /PyInt/, uchar b5 /PyInt/, uchar b6 /PyInt/, uchar b7 /PyInt/, uchar b8 /PyInt/); %If (Qt_6_4_0 -) explicit QUuid(QAnyStringView string); %End %If (- Qt_6_4_0) explicit QUuid(const QString &); %End %If (- Qt_6_4_0) explicit QUuid(const QByteArray &); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *uni = qpycore_PyObject_FromQString(sipCpp->toString()); if (uni) { sipRes = PyUnicode_FromFormat("PyQt6.QtCore.QUuid(%R)", uni); Py_DECREF(uni); } %End QString toString(QUuid::StringFormat mode = QUuid::WithBraces) const; bool isNull() const; bool operator==(const QUuid &orig) const; bool operator!=(const QUuid &orig) const; bool operator<(const QUuid &other) const; bool operator>(const QUuid &other) const; static QUuid createUuid(); static QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData); static QUuid createUuidV3(const QUuid &ns, const QString &baseData); static QUuid createUuidV5(const QUuid &ns, const QString &baseData); QUuid::Variant variant() const; QUuid::Version version() const; QByteArray toByteArray(QUuid::StringFormat mode = QUuid::WithBraces) const; QByteArray toRfc4122() const; %If (Qt_6_3_0 -) static QUuid fromRfc4122(QByteArrayView); %End %If (- Qt_6_3_0) static QUuid fromRfc4122(const QByteArray &); %End %If (Qt_6_4_0 -) static QUuid fromString(QAnyStringView string); %End %If (- Qt_6_4_0) static QUuid fromString(QStringView string); %End %If (Qt_6_6_0 -) struct Id128Bytes { %TypeHeaderCode #include %End }; %End }; QDataStream &operator<<(QDataStream &, const QUuid & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QUuid & /Constrained/) /ReleaseGIL/; bool operator<=(const QUuid &lhs, const QUuid &rhs); bool operator>=(const QUuid &lhs, const QUuid &rhs); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.637051 PyQt6-6.6.1/sip/QtCore/qvariant.sip0000644000076500000240000000614114532160402015717 0ustar00philstaff// qvariant.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariant /AllowNone,TypeHint="Any",TypeHintValue="None"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (sipIsErr == NULL) // We can convert everything to a QVariant. return 1; // If it is already a QVariant then just return it. if (Py_TYPE(sipPy) == sipTypeAsPyTypeObject(sipType_QVariant)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QVariant, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } // Convert it to a QVariant. QVariant var = qpycore_PyObject_AsQVariant(sipPy, sipIsErr); if (*sipIsErr) return 0; *sipCppPtr = new QVariant(var); return sipGetState(sipTransferObj); %End %ConvertFromTypeCode return qpycore_PyObject_FromQVariant(*sipCpp); %End public: QVariant(); QVariant(SIP_PYOBJECT obj); %MethodCode int is_err = 0; QVariant var = qpycore_PyObject_AsQVariant(a0, &is_err); if (is_err) sipCpp = 0; else sipCpp = new QVariant(var); %End ~QVariant(); SIP_PYOBJECT value() const; %MethodCode sipRes = qpycore_PyObject_FromQVariant(*sipCpp); %End int userType() const; const char *typeName() const; bool canConvert(QMetaType targetType) const; bool convert(QMetaType type); bool isValid() const; bool isNull() const; void clear(); void load(QDataStream &ds) /ReleaseGIL/; void save(QDataStream &ds) const /ReleaseGIL/; void swap(QVariant &other /Constrained/); QMetaType metaType() const; bool canView(QMetaType targetType) const; int typeId() const; }; QDataStream &operator>>(QDataStream &s, QVariant &p /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &s, const QVariant &p /Constrained/) /ReleaseGIL/; bool operator==(const QVariant &a, const QVariant &b); bool operator!=(const QVariant &a, const QVariant &b); typedef QHash QVariantHash /TypeHint="Dict[QString, QVariant]"/; typedef QList QVariantList /TypeHint="List[QVariant]"/; typedef QMap QVariantMap /TypeHint="Dict[QString, QVariant]"/; typedef std::pair QVariantPair /TypeHint="Tuple[QVariant, QVariant]"/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7129152 PyQt6-6.6.1/sip/QtCore/qvariantanimation.sip0000644000076500000240000000422514532160402017620 0ustar00philstaff// qvariantanimation.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVariantAnimation : QAbstractAnimation { %TypeHeaderCode #include %End public: typedef QList > KeyValues; QVariantAnimation(QObject *parent /TransferThis/ = 0); virtual ~QVariantAnimation(); QVariant startValue() const; void setStartValue(const QVariant &value); QVariant endValue() const; void setEndValue(const QVariant &value); QVariant keyValueAt(qreal step) const; void setKeyValueAt(qreal step, const QVariant &value); QVariantAnimation::KeyValues keyValues() const; void setKeyValues(const QVariantAnimation::KeyValues &values); QVariant currentValue() const; virtual int duration() const; void setDuration(int msecs); QEasingCurve easingCurve() const; void setEasingCurve(const QEasingCurve &easing); signals: void valueChanged(const QVariant &value); protected: virtual bool event(QEvent *event); virtual void updateCurrentTime(int); virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); virtual void updateCurrentValue(const QVariant &value); virtual QVariant interpolated(const QVariant &from, const QVariant &to, qreal progress) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.693812 PyQt6-6.6.1/sip/QtCore/qversionnumber.sip0000644000076500000240000000742014532160402017152 0ustar00philstaff// qversionnumber.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. QDataStream &operator<<(QDataStream &out, const QTypeRevision &revision) /ReleaseGIL/; QDataStream &operator<<(QDataStream &out, const QVersionNumber &version) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QTypeRevision &revision /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QVersionNumber &version /Constrained/) /ReleaseGIL/; class QVersionNumber { %TypeHeaderCode #include %End public: QVersionNumber(); explicit QVersionNumber(const QList &seg); explicit QVersionNumber(int maj); QVersionNumber(int maj, int min); QVersionNumber(int maj, int min, int mic); bool isNull() const; bool isNormalized() const; int majorVersion() const; int minorVersion() const; int microVersion() const; QVersionNumber normalized() const; QList segments() const; %If (Qt_6_4_0 -) int segmentAt(qsizetype index) const; %End %If (- Qt_6_4_0) int segmentAt(int index) const; %End %If (Qt_6_4_0 -) qsizetype segmentCount() const; %End %If (- Qt_6_4_0) int segmentCount() const; %End bool isPrefixOf(const QVersionNumber &other) const; static int compare(const QVersionNumber &v1, const QVersionNumber &v2); static QVersionNumber commonPrefix(const QVersionNumber &v1, const QVersionNumber &v2); QString toString() const; %If (Qt_6_4_0 -) static QVersionNumber fromString(QAnyStringView string, qsizetype *suffixIndex = 0); %End %If (- Qt_6_4_0) static QVersionNumber fromString(const QString &string, int *suffixIndex = 0); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; bool operator>(QTypeRevision lhs, QTypeRevision rhs); bool operator>(const QVersionNumber &lhs, const QVersionNumber &rhs); bool operator>=(QTypeRevision lhs, QTypeRevision rhs); bool operator>=(const QVersionNumber &lhs, const QVersionNumber &rhs); bool operator<(QTypeRevision lhs, QTypeRevision rhs); bool operator<(const QVersionNumber &lhs, const QVersionNumber &rhs); bool operator<=(QTypeRevision lhs, QTypeRevision rhs); bool operator<=(const QVersionNumber &lhs, const QVersionNumber &rhs); bool operator==(QTypeRevision lhs, QTypeRevision rhs); bool operator==(const QVersionNumber &lhs, const QVersionNumber &rhs); bool operator!=(QTypeRevision lhs, QTypeRevision rhs); bool operator!=(const QVersionNumber &lhs, const QVersionNumber &rhs); class QTypeRevision { %TypeHeaderCode #include %End public: static QTypeRevision zero(); QTypeRevision(); bool hasMajorVersion() const; quint8 majorVersion() const; bool hasMinorVersion() const; quint8 minorVersion() const; bool isValid() const; unsigned short toEncodedVersion() const; %MethodCode sipRes = sipCpp->toEncodedVersion(); %End Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6485395 PyQt6-6.6.1/sip/QtCore/qwaitcondition.sip0000644000076500000240000000305214532160402017124 0ustar00philstaff// qwaitcondition.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWaitCondition { %TypeHeaderCode #include %End public: QWaitCondition(); ~QWaitCondition(); bool wait(QMutex *lockedMutex, QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever)) /ReleaseGIL/; bool wait(QMutex *lockedMutex, unsigned long time) /ReleaseGIL/; bool wait(QReadWriteLock *lockedReadWriteLock, QDeadlineTimer deadline = QDeadlineTimer(QDeadlineTimer::Forever)) /ReleaseGIL/; bool wait(QReadWriteLock *lockedReadWriteLock, unsigned long time) /ReleaseGIL/; void wakeOne(); void wakeAll(); private: QWaitCondition(const QWaitCondition &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6709385 PyQt6-6.6.1/sip/QtCore/qwineventnotifier.sip0000644000076500000240000000305114532160402017647 0ustar00philstaff// This is the SIP specification of the QWinEventNotifier class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Windows) // This hack is for the activated() signal. typedef Qt::HANDLE HANDLE; class QWinEventNotifier: QObject { %TypeHeaderCode #include %End public: explicit QWinEventNotifier(QObject *parent /TransferThis/ = 0); explicit QWinEventNotifier(Qt::HANDLE hEvent, QObject *parent /TransferThis/ = 0); ~QWinEventNotifier(); Qt::HANDLE handle() const; bool isEnabled() const; void setHandle(Qt::HANDLE hEvent); public slots: void setEnabled(bool enable); signals: void activated(HANDLE hEvent); protected: bool event(QEvent *e); private: QWinEventNotifier(const QWinEventNotifier &); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.6670172 PyQt6-6.6.1/sip/QtCore/qxmlstream.sip0000644000076500000240000003732714532160402016301 0ustar00philstaff// qxmlstream.sip generated by MetaSIP // // This file is part of the QtCore Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QXmlStreamAttribute { %TypeHeaderCode #include %End public: QXmlStreamAttribute(); QXmlStreamAttribute(const QString &qualifiedName, const QString &value); QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value); QStringView namespaceUri() const; QStringView name() const; QStringView qualifiedName() const; QStringView prefix() const; QStringView value() const; bool isDefault() const; bool operator==(const QXmlStreamAttribute &other) const; bool operator!=(const QXmlStreamAttribute &other) const; }; class QXmlStreamNamespaceDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNamespaceDeclaration(); QXmlStreamNamespaceDeclaration(const QString &prefix, const QString &namespaceUri); QStringView prefix() const; QStringView namespaceUri() const; bool operator==(const QXmlStreamNamespaceDeclaration &other) const; bool operator!=(const QXmlStreamNamespaceDeclaration &other) const; }; typedef QList QXmlStreamNamespaceDeclarations; class QXmlStreamNotationDeclaration { %TypeHeaderCode #include %End public: QXmlStreamNotationDeclaration(); QStringView name() const; QStringView systemId() const; QStringView publicId() const; bool operator==(const QXmlStreamNotationDeclaration &other) const; bool operator!=(const QXmlStreamNotationDeclaration &other) const; }; typedef QList QXmlStreamNotationDeclarations; class QXmlStreamEntityDeclaration { %TypeHeaderCode #include %End public: QXmlStreamEntityDeclaration(); QStringView name() const; QStringView notationName() const; QStringView systemId() const; QStringView publicId() const; QStringView value() const; bool operator==(const QXmlStreamEntityDeclaration &other) const; bool operator!=(const QXmlStreamEntityDeclaration &other) const; }; typedef QList QXmlStreamEntityDeclarations; class QXmlStreamEntityResolver { %TypeHeaderCode #include %End public: virtual ~QXmlStreamEntityResolver(); virtual QString resolveUndeclaredEntity(const QString &name); }; class QXmlStreamReader { %TypeHeaderCode #include %End public: enum TokenType { NoToken, Invalid, StartDocument, EndDocument, StartElement, EndElement, Characters, Comment, DTD, EntityReference, ProcessingInstruction, }; QXmlStreamReader(); explicit QXmlStreamReader(QIODevice *device); %If (Qt_6_5_0 -) explicit QXmlStreamReader(QAnyStringView data); %End %If (- Qt_6_5_0) explicit QXmlStreamReader(const QByteArray &data); %End %If (- Qt_6_5_0) explicit QXmlStreamReader(const QString &data); %End ~QXmlStreamReader(); void setDevice(QIODevice *device); QIODevice *device() const; %If (Qt_6_5_0 -) void addData(QAnyStringView data); %End %If (- Qt_6_5_0) void addData(const QByteArray &data); %End %If (- Qt_6_5_0) void addData(const QString &data); %End void clear(); bool atEnd() const; QXmlStreamReader::TokenType readNext(); QXmlStreamReader::TokenType tokenType() const; QString tokenString() const; void setNamespaceProcessing(bool); bool namespaceProcessing() const; bool isStartDocument() const; bool isEndDocument() const; bool isStartElement() const; bool isEndElement() const; bool isCharacters() const; bool isWhitespace() const; bool isCDATA() const; bool isComment() const; bool isDTD() const; bool isEntityReference() const; bool isProcessingInstruction() const; bool isStandaloneDocument() const; QStringView documentVersion() const; QStringView documentEncoding() const; qint64 lineNumber() const; qint64 columnNumber() const; qint64 characterOffset() const; QXmlStreamAttributes attributes() const; enum ReadElementTextBehaviour { ErrorOnUnexpectedElement, IncludeChildElements, SkipChildElements, }; QString readElementText(QXmlStreamReader::ReadElementTextBehaviour behaviour = QXmlStreamReader::ErrorOnUnexpectedElement); QStringView name() const; QStringView namespaceUri() const; QStringView qualifiedName() const; QStringView prefix() const; QStringView processingInstructionTarget() const; QStringView processingInstructionData() const; QStringView text() const; QXmlStreamNamespaceDeclarations namespaceDeclarations() const; void addExtraNamespaceDeclaration(const QXmlStreamNamespaceDeclaration &extraNamespaceDeclaraction); void addExtraNamespaceDeclarations(const QXmlStreamNamespaceDeclarations &extraNamespaceDeclaractions); QXmlStreamNotationDeclarations notationDeclarations() const; QXmlStreamEntityDeclarations entityDeclarations() const; QStringView dtdName() const; QStringView dtdPublicId() const; QStringView dtdSystemId() const; enum Error { NoError, UnexpectedElementError, CustomError, NotWellFormedError, PrematureEndOfDocumentError, }; void raiseError(const QString &message = QString()); QString errorString() const; QXmlStreamReader::Error error() const; bool hasError() const; void setEntityResolver(QXmlStreamEntityResolver *resolver /KeepReference/); QXmlStreamEntityResolver *entityResolver() const; bool readNextStartElement(); void skipCurrentElement(); int entityExpansionLimit() const; void setEntityExpansionLimit(int limit); %If (Qt_6_6_0 -) bool hasStandaloneDeclaration() const; %End private: QXmlStreamReader(const QXmlStreamReader &); }; class QXmlStreamWriter { %TypeHeaderCode #include %End public: QXmlStreamWriter(); explicit QXmlStreamWriter(QIODevice *device); explicit QXmlStreamWriter(QByteArray *array); ~QXmlStreamWriter(); void setDevice(QIODevice *device); QIODevice *device() const; void setAutoFormatting(bool); bool autoFormatting() const; void setAutoFormattingIndent(int spaces); int autoFormattingIndent() const; %If (Qt_6_5_0 -) void writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value); %End %If (Qt_6_5_0 -) void writeAttribute(QAnyStringView qualifiedName, QAnyStringView value); %End %If (- Qt_6_5_0) void writeAttribute(const QString &qualifiedName, const QString &value); %End %If (- Qt_6_5_0) void writeAttribute(const QString &namespaceUri, const QString &name, const QString &value); %End void writeAttribute(const QXmlStreamAttribute &attribute); void writeAttributes(const QXmlStreamAttributes &attributes); %If (Qt_6_5_0 -) void writeCDATA(QAnyStringView text); %End %If (- Qt_6_5_0) void writeCDATA(const QString &text); %End %If (Qt_6_5_0 -) void writeCharacters(QAnyStringView text); %End %If (- Qt_6_5_0) void writeCharacters(const QString &text); %End %If (Qt_6_5_0 -) void writeComment(QAnyStringView text); %End %If (- Qt_6_5_0) void writeComment(const QString &text); %End %If (Qt_6_5_0 -) void writeDTD(QAnyStringView dtd); %End %If (- Qt_6_5_0) void writeDTD(const QString &dtd); %End %If (Qt_6_5_0 -) void writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name); %End %If (Qt_6_5_0 -) void writeEmptyElement(QAnyStringView qualifiedName); %End %If (- Qt_6_5_0) void writeEmptyElement(const QString &qualifiedName); %End %If (- Qt_6_5_0) void writeEmptyElement(const QString &namespaceUri, const QString &name); %End %If (Qt_6_5_0 -) void writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text); %End %If (Qt_6_5_0 -) void writeTextElement(QAnyStringView qualifiedName, QAnyStringView text); %End %If (- Qt_6_5_0) void writeTextElement(const QString &qualifiedName, const QString &text); %End %If (- Qt_6_5_0) void writeTextElement(const QString &namespaceUri, const QString &name, const QString &text); %End void writeEndDocument(); void writeEndElement(); %If (Qt_6_5_0 -) void writeEntityReference(QAnyStringView name); %End %If (- Qt_6_5_0) void writeEntityReference(const QString &name); %End %If (Qt_6_5_0 -) void writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {}); %End %If (- Qt_6_5_0) void writeNamespace(const QString &namespaceUri, const QString &prefix = QString()); %End %If (Qt_6_5_0 -) void writeDefaultNamespace(QAnyStringView namespaceUri); %End %If (- Qt_6_5_0) void writeDefaultNamespace(const QString &namespaceUri); %End %If (Qt_6_5_0 -) void writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {}); %End %If (- Qt_6_5_0) void writeProcessingInstruction(const QString &target, const QString &data = QString()); %End %If (Qt_6_5_0 -) void writeStartDocument(QAnyStringView version, bool standalone); %End %If (Qt_6_5_0 -) void writeStartDocument(QAnyStringView version); %End void writeStartDocument(); %If (- Qt_6_5_0) void writeStartDocument(const QString &version); %End %If (- Qt_6_5_0) void writeStartDocument(const QString &version, bool standalone); %End %If (Qt_6_5_0 -) void writeStartElement(QAnyStringView namespaceUri, QAnyStringView name); %End %If (Qt_6_5_0 -) void writeStartElement(QAnyStringView qualifiedName); %End %If (- Qt_6_5_0) void writeStartElement(const QString &qualifiedName); %End %If (- Qt_6_5_0) void writeStartElement(const QString &namespaceUri, const QString &name); %End void writeCurrentToken(const QXmlStreamReader &reader); bool hasError() const; private: QXmlStreamWriter(const QXmlStreamWriter &); }; class QXmlStreamAttributes { %TypeHeaderCode #include %End public: QXmlStreamAttributes(); %If (Qt_6_6_0 -) QStringView value(QAnyStringView namespaceUri, QAnyStringView name) const; %End %If (- Qt_6_6_0) QStringView value(const QString &namespaceUri, const QString &name) const; %End %If (Qt_6_6_0 -) QStringView value(QAnyStringView qualifiedName) const; %End %If (- Qt_6_6_0) QStringView value(const QString &qualifiedName) const; %End void append(const QString &namespaceUri, const QString &name, const QString &value); void append(const QString &qualifiedName, const QString &value); %If (Qt_6_6_0 -) bool hasAttribute(QAnyStringView namespaceUri, QAnyStringView name) const; %End %If (- Qt_6_6_0) bool hasAttribute(const QString &namespaceUri, const QString &name) const; %End %If (Qt_6_6_0 -) bool hasAttribute(QAnyStringView qualifiedName) const; %End %If (- Qt_6_6_0) bool hasAttribute(const QString &qualifiedName) const; %End // Methods inherited from QList and Python special methods. // Keep in sync with QPolygon and QPolygonF. void append(const QXmlStreamAttribute &value); const QXmlStreamAttribute &at(int i) const; void clear(); bool contains(const QXmlStreamAttribute &value) const; int count(const QXmlStreamAttribute &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QXmlStreamAttribute &value, int size = -1); QXmlStreamAttribute &first(); int indexOf(const QXmlStreamAttribute &value, int from = 0) const; void insert(int i, const QXmlStreamAttribute &value); bool isEmpty() const; QXmlStreamAttribute &last(); int lastIndexOf(const QXmlStreamAttribute &value, int from = -1) const; // Note the Qt return type is QList. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QList argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes mid(int pos, int length = -1) const; void prepend(const QXmlStreamAttribute &value); void remove(int i); void remove(int i, int count); void resize(qsizetype size); void replace(int i, const QXmlStreamAttribute &value); int size() const; // These are hidden by other implementations in QXmlStreamAttributes. //QXmlStreamAttribute value(int i) const; //QXmlStreamAttribute value(int i, const QXmlStreamAttribute &defaultValue) const; bool operator!=(const QXmlStreamAttributes &other) const; // Note the Qt return type is QList. We can't do the // usual trick because there is no QXmlStreamAttributes ctor that takes a // QList argument. We could use handwritten code but we // don't bother. //QXmlStreamAttributes operator+(const QXmlStreamAttributes &other) const; QXmlStreamAttributes &operator+=(const QXmlStreamAttributes &other); QXmlStreamAttributes &operator+=(const QXmlStreamAttribute &value); bool operator==(const QXmlStreamAttributes &other) const; QXmlStreamAttribute &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = &sipCpp->operator[]((int)idx); %End // Some additional Python special methods. void __setitem__(int i, const QXmlStreamAttribute &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QXmlStreamAttributes &list); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QList::const_iterator it = a1->begin(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { for (Py_ssize_t i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } } %End QXmlStreamAttributes operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QXmlStreamAttributes(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QXmlStreamAttribute &value); %MethodCode // It looks like you can't assign QBool to int. sipRes = bool(sipCpp->contains(*a0)); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.599191 PyQt6-6.6.1/sip/QtDBus/0000755000076500000240000000000014532160403013321 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4591858 PyQt6-6.6.1/sip/QtDBus/QtDBusmod.sip0000644000076500000240000000444414532160401015704 0ustar00philstaff// QtDBusmod.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtDBus, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qdbusabstractadaptor.sip %Include qdbusabstractinterface.sip %Include qdbusargument.sip %Include qdbusconnection.sip %Include qdbusconnectioninterface.sip %Include qdbuserror.sip %Include qdbusextratypes.sip %Include qdbusinterface.sip %Include qdbusmessage.sip %Include qdbuspendingcall.sip %Include qdbusservicewatcher.sip %Include qdbusunixfiledescriptor.sip %Include qpydbusreply.sip %Include qpydbuspendingreply.sip ././@PaxHeader0000000000000000000000000000003000000000000010206 xustar0024 mtime=1701372161.454 PyQt6-6.6.1/sip/QtDBus/qdbusabstractadaptor.sip0000644000076500000240000000236714532160401020261 0ustar00philstaff// qdbusabstractadaptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractAdaptor : QObject { %TypeHeaderCode #include %End protected: explicit QDBusAbstractAdaptor(QObject *parent /TransferThis/); public: virtual ~QDBusAbstractAdaptor(); protected: void setAutoRelaySignals(bool enable); bool autoRelaySignals() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4578176 PyQt6-6.6.1/sip/QtDBus/qdbusabstractinterface.sip0000644000076500000240000001634214532160401020565 0ustar00philstaff// qdbusabstractinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusAbstractInterface : QObject { %TypeHeaderCode #include %End %TypeCode // Convert a Python tuple to a list of QVarients. static QList QtDBus_marshal(PyObject *py_args, int *is_err) { QList cpp_args; Py_ssize_t nr_args = PyTuple_Size(py_args); for (Py_ssize_t i = 0; i < nr_args; ++i) { int state; void *var; var = sipForceConvertToType(PyTuple_GetItem(py_args, i), sipType_QVariant, NULL, 0, &state, is_err); if (*is_err) break; cpp_args.append(*reinterpret_cast(var)); sipReleaseType(var, sipType_QVariant, state); } return cpp_args; } %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QDBusPendingCallWatcher, &sipType_QDBusPendingCallWatcher, -1, 1}, {sipName_QDBusAbstractAdaptor, &sipType_QDBusAbstractAdaptor, -1, 2}, {sipName_QDBusAbstractInterface, &sipType_QDBusAbstractInterface, 4, 3}, {sipName_QDBusServiceWatcher, &sipType_QDBusServiceWatcher, -1, -1}, {sipName_QDBusConnectionInterface, &sipType_QDBusConnectionInterface, -1, 5}, {sipName_QDBusInterface, &sipType_QDBusInterface, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: virtual ~QDBusAbstractInterface(); bool isValid() const; QDBusConnection connection() const; QString service() const; QString path() const; QString interface() const; QDBusError lastError() const; void setTimeout(int timeout); int timeout() const; QDBusMessage call(const QString &method, ...); %MethodCode QList args; args = QtDBus_marshal(a1, &sipIsErr); if (!sipIsErr) { Py_BEGIN_ALLOW_THREADS sipRes = new QDBusMessage(sipCpp->callWithArgumentList(QDBus::AutoDetect, *a0, args)); Py_END_ALLOW_THREADS } %End QDBusMessage call(QDBus::CallMode mode, const QString &method, ...); %MethodCode QList args; args = QtDBus_marshal(a2, &sipIsErr); if (!sipIsErr) { Py_BEGIN_ALLOW_THREADS sipRes = new QDBusMessage(sipCpp->callWithArgumentList(a0, *a1, args)); Py_END_ALLOW_THREADS } %End QDBusMessage callWithArgumentList(QDBus::CallMode mode, const QString &method, const QList &args) /ReleaseGIL/; bool callWithCallback(const QString &method, const QList &args, SIP_PYOBJECT returnMethod /TypeHint="PYQT_SLOT"/, SIP_PYOBJECT errorMethod /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a2, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a3, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, return_slot.constData(), error_slot.constData()); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End bool callWithCallback(const QString &method, QList &args, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a2, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->callWithCallback(*a0, *a1, receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End QDBusPendingCall asyncCall(const QString &method, ...); %MethodCode QList args; args = QtDBus_marshal(a1, &sipIsErr); if (!sipIsErr) { Py_BEGIN_ALLOW_THREADS sipRes = new QDBusPendingCall(sipCpp->asyncCallWithArgumentList(*a0, args)); Py_END_ALLOW_THREADS } %End QDBusPendingCall asyncCallWithArgumentList(const QString &method, const QList &args); protected: QDBusAbstractInterface(const QString &service, const QString &path, const char *interface, const QDBusConnection &connection, QObject *parent /TransferThis/); virtual void connectNotify(const QMetaMethod &signal); virtual void disconnectNotify(const QMetaMethod &signal); }; %ModuleHeaderCode #include "qpydbus_api.h" // Imports from QtCore. typedef PyObject *(*pyqt6_qtdbus_from_qvariant_by_type_t)(QVariant &, PyObject *); extern pyqt6_qtdbus_from_qvariant_by_type_t pyqt6_qtdbus_from_qvariant_by_type; typedef sipErrorState (*pyqt6_qtdbus_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt6_qtdbus_get_pyqtslot_parts_t pyqt6_qtdbus_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtdbus_from_qvariant_by_type_t pyqt6_qtdbus_from_qvariant_by_type; pyqt6_qtdbus_get_pyqtslot_parts_t pyqt6_qtdbus_get_pyqtslot_parts; %End %PostInitialisationCode qpydbus_post_init(); // Imports from QtCore. pyqt6_qtdbus_from_qvariant_by_type = (pyqt6_qtdbus_from_qvariant_by_type_t)sipImportSymbol("pyqt6_from_qvariant_by_type"); Q_ASSERT(pyqt6_qtdbus_from_qvariant_by_type); pyqt6_qtdbus_get_pyqtslot_parts = (pyqt6_qtdbus_get_pyqtslot_parts_t)sipImportSymbol("pyqt6_get_pyqtslot_parts"); Q_ASSERT(pyqt6_qtdbus_get_pyqtslot_parts); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4550724 PyQt6-6.6.1/sip/QtDBus/qdbusargument.sip0000644000076500000240000001140714532160401016720 0ustar00philstaff// qdbusargument.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusArgument { %TypeHeaderCode #include %End %TypeCode #include static PyObject *qdbusargument_add(QDBusArgument *arg, PyObject *obj, int mtype) { int iserr = 0; if (PyLong_CheckExact(obj)) { if (mtype == QMetaType::UChar || mtype == QMetaType::UShort || mtype == QMetaType::UInt || mtype == QMetaType::ULongLong) { // Handle the unsigned values. unsigned long long v = PyLong_AsUnsignedLongLongMask(obj); switch (mtype) { case QMetaType::UChar: *arg << (uchar)v; break; case QMetaType::UShort: *arg << (ushort)v; break; case QMetaType::UInt: *arg << (uint)v; break; case QMetaType::ULongLong: *arg << (qulonglong)v; break; } } else if (mtype == QMetaType::Short || mtype == QMetaType::Int || mtype == QMetaType::LongLong) { // Handle the signed values. long long v = PyLong_AsLongLong(obj); switch (mtype) { case QMetaType::Short: *arg << (short)v; break; case QMetaType::Int: *arg << (int)v; break; case QMetaType::LongLong: *arg << (qlonglong)v; break; } } else { PyErr_Format(PyExc_ValueError, "%d is an invalid QMetaType::Type for an integer object", mtype); iserr = 1; } } else if (mtype == QMetaType::QStringList) { // A QStringList has to be handled explicitly to prevent it being seen // as a vialiant list. int value_state; QStringList *qsl = reinterpret_cast( sipForceConvertToType(obj, sipType_QStringList, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { arg->beginArray(QMetaType::QString); for (int i = 0; i < qsl->count(); ++i) *arg << qsl->at(i); arg->endArray(); sipReleaseType(qsl, sipType_QStringList, value_state); } } else { int value_state; QVariant *qv = reinterpret_cast( sipForceConvertToType(obj, sipType_QVariant, 0, SIP_NOT_NONE, &value_state, &iserr)); if (!iserr) { // This is an internal method. If it proves to be a problem then we // will have to handle each type explicitly. arg->appendVariant(*qv); sipReleaseType(qv, sipType_QVariant, value_state); } } if (iserr) return 0; Py_INCREF(Py_None); return Py_None; } %End public: QDBusArgument(); QDBusArgument(const QDBusArgument &other); QDBusArgument(SIP_PYOBJECT arg, int id = QMetaType::Int); %MethodCode sipCpp = new QDBusArgument(); PyObject *res = qdbusargument_add(sipCpp, a0, a1); if (res) { Py_DECREF(res); } else { delete sipCpp; sipCpp = 0; } %End ~QDBusArgument(); SIP_PYOBJECT add(SIP_PYOBJECT arg, int id = QMetaType::Int) /TypeHint=""/; %MethodCode sipRes = qdbusargument_add(sipCpp, a0, a1); %End void beginStructure(); void endStructure(); void beginArray(QMetaType elementMetaType); void beginArray(int id); void endArray(); void beginMap(QMetaType keyMetaType, QMetaType valueMetaType); void beginMap(int kid, int vid); void endMap(); void beginMapEntry(); void endMapEntry(); void swap(QDBusArgument &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4524093 PyQt6-6.6.1/sip/QtDBus/qdbusconnection.sip0000644000076500000240000002232414532160401017235 0ustar00philstaff// qdbusconnection.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QDBus { %TypeHeaderCode #include %End enum CallMode { NoBlock, Block, BlockWithGui, AutoDetect, }; }; class QDBusConnection { %TypeHeaderCode #include %End public: enum BusType { SessionBus, SystemBus, ActivationBus, }; enum RegisterOption /BaseType=Flag/ { ExportAdaptors, ExportScriptableSlots, ExportScriptableSignals, ExportScriptableProperties, ExportScriptableInvokables, ExportScriptableContents, ExportNonScriptableSlots, ExportNonScriptableSignals, ExportNonScriptableProperties, ExportNonScriptableInvokables, ExportNonScriptableContents, ExportAllSlots, ExportAllSignals, ExportAllProperties, ExportAllInvokables, ExportAllContents, ExportAllSignal, ExportChildObjects, }; typedef QFlags RegisterOptions; enum UnregisterMode { UnregisterNode, UnregisterTree, }; enum ConnectionCapability /BaseType=Flag/ { UnixFileDescriptorPassing, }; typedef QFlags ConnectionCapabilities; explicit QDBusConnection(const QString &name); QDBusConnection(const QDBusConnection &other); ~QDBusConnection(); bool isConnected() const; QString baseService() const; QDBusError lastError() const; QString name() const; QDBusConnection::ConnectionCapabilities connectionCapabilities() const; bool send(const QDBusMessage &message) const; bool callWithCallback(const QDBusMessage &message, SIP_PYOBJECT returnMethod /TypeHint="PYQT_SLOT"/, SIP_PYOBJECT errorMethod /TypeHint="PYQT_SLOT"/, int timeout = -1) const; %MethodCode QObject *receiver; QByteArray return_slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a1, &receiver, return_slot)) == sipErrorNone) { QObject *error_receiver; QByteArray error_slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a2, &error_receiver, error_slot)) == sipErrorNone) { if (receiver == error_receiver) { sipRes = sipCpp->callWithCallback(*a0, receiver, return_slot.constData(), error_slot.constData(), a3); } else { PyErr_SetString(PyExc_ValueError, "the return and error methods must be bound to the same QObject instance"); sipError = sipErrorFail; } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End QDBusMessage call(const QDBusMessage &message, QDBus::CallMode mode = QDBus::Block, int timeout = -1) const /ReleaseGIL/; QDBusPendingCall asyncCall(const QDBusMessage &message, int timeout = -1) const; bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->connect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a4, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(4, a4); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a5, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(5, a5); } %End bool disconnect(const QString &service, const QString &path, const QString &interface, const QString &name, const QStringList &argumentMatch, const QString &signature, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /ReleaseGIL/; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtdbus_get_pyqtslot_parts(a6, &receiver, slot)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->disconnect(*a0, *a1, *a2, *a3, *a4, *a5, receiver, slot.constData()); Py_END_ALLOW_THREADS } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(6, a6); } %End bool registerObject(const QString &path, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); bool registerObject(const QString &path, const QString &interface, QObject *object, QDBusConnection::RegisterOptions options = QDBusConnection::ExportAdaptors); void unregisterObject(const QString &path, QDBusConnection::UnregisterMode mode = QDBusConnection::UnregisterNode); QObject *objectRegisteredAt(const QString &path) const; bool registerService(const QString &serviceName); bool unregisterService(const QString &serviceName); QDBusConnectionInterface *interface() const; static QDBusConnection connectToBus(QDBusConnection::BusType type, const QString &name) /ReleaseGIL/; static QDBusConnection connectToBus(const QString &address, const QString &name) /ReleaseGIL/; static QDBusConnection connectToPeer(const QString &address, const QString &name) /ReleaseGIL/; static void disconnectFromBus(const QString &name) /ReleaseGIL/; static void disconnectFromPeer(const QString &name) /ReleaseGIL/; static QByteArray localMachineId(); static QDBusConnection sessionBus(); static QDBusConnection systemBus(); void swap(QDBusConnection &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.456085 PyQt6-6.6.1/sip/QtDBus/qdbusconnectioninterface.sip0000644000076500000240000000564014532160401021120 0ustar00philstaff// qdbusconnectioninterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusConnectionInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End QDBusConnectionInterface(const QDBusConnection &connection, QObject *parent /TransferThis/); virtual ~QDBusConnectionInterface(); public: enum ServiceQueueOptions { DontQueueService, QueueService, ReplaceExistingService, }; enum ServiceReplacementOptions { DontAllowReplacement, AllowReplacement, }; enum RegisterServiceReply { ServiceNotRegistered, ServiceRegistered, ServiceQueued, }; QDBusReply registeredServiceNames() const /ReleaseGIL/; QDBusReply activatableServiceNames() const /ReleaseGIL/; QDBusReply isServiceRegistered(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceOwner(const QString &name) const /ReleaseGIL/; QDBusReply unregisterService(const QString &serviceName) /ReleaseGIL/; QDBusReply registerService(const QString &serviceName, QDBusConnectionInterface::ServiceQueueOptions qoption = QDBusConnectionInterface::DontQueueService, QDBusConnectionInterface::ServiceReplacementOptions roption = QDBusConnectionInterface::DontAllowReplacement) /ReleaseGIL/; QDBusReply servicePid(const QString &serviceName) const /ReleaseGIL/; QDBusReply serviceUid(const QString &serviceName) const /ReleaseGIL/; QDBusReply startService(const QString &name) /ReleaseGIL/; signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); void callWithCallbackFailed(const QDBusError &error, const QDBusMessage &call); protected: virtual void connectNotify(const QMetaMethod &); virtual void disconnectNotify(const QMetaMethod &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4587667 PyQt6-6.6.1/sip/QtDBus/qdbuserror.sip0000644000076500000240000000361514532160401016231 0ustar00philstaff// qdbuserror.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, Other, Failed, NoMemory, ServiceUnknown, NoReply, BadAddress, NotSupported, LimitsExceeded, AccessDenied, NoServer, Timeout, NoNetwork, AddressInUse, Disconnected, InvalidArgs, UnknownMethod, TimedOut, InvalidSignature, UnknownInterface, InternalError, UnknownObject, InvalidService, InvalidObjectPath, InvalidInterface, InvalidMember, UnknownProperty, PropertyReadOnly, }; QDBusError(const QDBusError &other); QDBusError::ErrorType type() const; QString name() const; QString message() const; bool isValid() const; static QString errorString(QDBusError::ErrorType error); void swap(QDBusError &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4531112 PyQt6-6.6.1/sip/QtDBus/qdbusextratypes.sip0000644000076500000240000000471314532160401017310 0ustar00philstaff// qdbusextratypes.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusObjectPath { %TypeHeaderCode #include %End public: QDBusObjectPath(); explicit QDBusObjectPath(const QString &objectPath); QString path() const; void setPath(const QString &objectPath); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End void swap(QDBusObjectPath &other /Constrained/); }; bool operator==(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator!=(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); bool operator<(const QDBusObjectPath &lhs, const QDBusObjectPath &rhs); class QDBusSignature { %TypeHeaderCode #include %End public: QDBusSignature(); explicit QDBusSignature(const QString &dBusSignature); QString signature() const; void setSignature(const QString &dBusSignature); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp, 0); %End void swap(QDBusSignature &other /Constrained/); }; bool operator==(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator!=(const QDBusSignature &lhs, const QDBusSignature &rhs); bool operator<(const QDBusSignature &lhs, const QDBusSignature &rhs); class QDBusVariant { %TypeHeaderCode #include %End public: QDBusVariant(); explicit QDBusVariant(const QVariant &dBusVariant); QVariant variant() const; void setVariant(const QVariant &dBusVariant); void swap(QDBusVariant &other /Constrained/); }; bool operator==(const QDBusVariant &v1, const QDBusVariant &v2); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4564621 PyQt6-6.6.1/sip/QtDBus/qdbusinterface.sip0000644000076500000240000000242314532160401017034 0ustar00philstaff// qdbusinterface.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusInterface : QDBusAbstractInterface { %TypeHeaderCode #include %End public: QDBusInterface(const QString &service, const QString &path, const QString &interface = QString(), const QDBusConnection &connection = QDBusConnection::sessionBus(), QObject *parent /TransferThis/ = 0); virtual ~QDBusInterface(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4536195 PyQt6-6.6.1/sip/QtDBus/qdbusmessage.sip0000644000076500000240000000570714532160401016530 0ustar00philstaff// qdbusmessage.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusMessage { %TypeHeaderCode #include %End public: enum MessageType { InvalidMessage, MethodCallMessage, ReplyMessage, ErrorMessage, SignalMessage, }; QDBusMessage(); QDBusMessage(const QDBusMessage &other); ~QDBusMessage(); static QDBusMessage createSignal(const QString &path, const QString &interface, const QString &name); static QDBusMessage createMethodCall(const QString &service, const QString &path, const QString &interface, const QString &method); static QDBusMessage createError(const QString &name, const QString &msg); static QDBusMessage createError(const QDBusError &error); static QDBusMessage createError(QDBusError::ErrorType type, const QString &msg); QDBusMessage createReply(const QList &arguments = QList()) const; QDBusMessage createReply(const QVariant &argument) const; QDBusMessage createErrorReply(const QString &name, const QString &msg) const; QDBusMessage createErrorReply(const QDBusError &error) const; QDBusMessage createErrorReply(QDBusError::ErrorType type, const QString &msg) const; QString service() const; QString path() const; QString interface() const; QString member() const; QString errorName() const; QString errorMessage() const; QDBusMessage::MessageType type() const; QString signature() const; bool isReplyRequired() const; void setDelayedReply(bool enable) const; bool isDelayedReply() const; void setAutoStartService(bool enable); bool autoStartService() const; void setArguments(const QList &arguments); QList arguments() const; QDBusMessage &operator<<(const QVariant &arg); void swap(QDBusMessage &other /Constrained/); static QDBusMessage createTargetedSignal(const QString &service, const QString &path, const QString &interface, const QString &name); void setInteractiveAuthorizationAllowed(bool enable); bool isInteractiveAuthorizationAllowed() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4555562 PyQt6-6.6.1/sip/QtDBus/qdbuspendingcall.sip0000644000076500000240000000332114532160401017352 0ustar00philstaff// qdbuspendingcall.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCall(const QDBusPendingCall &other); ~QDBusPendingCall(); static QDBusPendingCall fromError(const QDBusError &error); static QDBusPendingCall fromCompletedCall(const QDBusMessage &message); void swap(QDBusPendingCall &other /Constrained/); private: QDBusPendingCall(); }; class QDBusPendingCallWatcher : QObject, QDBusPendingCall { %TypeHeaderCode #include %End public: QDBusPendingCallWatcher(const QDBusPendingCall &call, QObject *parent /TransferThis/ = 0); virtual ~QDBusPendingCallWatcher(); bool isFinished() const; void waitForFinished() /ReleaseGIL/; signals: void finished(QDBusPendingCallWatcher *watcher = 0); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4582665 PyQt6-6.6.1/sip/QtDBus/qdbusservicewatcher.sip0000644000076500000240000000426114532160401020114 0ustar00philstaff// qdbusservicewatcher.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusServiceWatcher : QObject { %TypeHeaderCode #include %End public: enum WatchModeFlag /BaseType=Flag/ { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange, }; typedef QFlags WatchMode; explicit QDBusServiceWatcher(QObject *parent /TransferThis/ = 0); QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = QDBusServiceWatcher::WatchForOwnerChange, QObject *parent /TransferThis/ = 0); virtual ~QDBusServiceWatcher(); QStringList watchedServices() const; void setWatchedServices(const QStringList &services); void addWatchedService(const QString &newService); bool removeWatchedService(const QString &service); QDBusServiceWatcher::WatchMode watchMode() const; void setWatchMode(QDBusServiceWatcher::WatchMode mode); QDBusConnection connection() const; void setConnection(const QDBusConnection &connection); signals: void serviceRegistered(const QString &service); void serviceUnregistered(const QString &service); void serviceOwnerChanged(const QString &service, const QString &oldOwner, const QString &newOwner); }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.45066 PyQt6-6.6.1/sip/QtDBus/qdbusunixfiledescriptor.sip0000644000076500000240000000265214532160401021022 0ustar00philstaff// qdbusunixfiledescriptor.sip generated by MetaSIP // // This file is part of the QtDBus Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDBusUnixFileDescriptor { %TypeHeaderCode #include %End public: QDBusUnixFileDescriptor(); explicit QDBusUnixFileDescriptor(int fileDescriptor); QDBusUnixFileDescriptor(const QDBusUnixFileDescriptor &other); ~QDBusUnixFileDescriptor(); bool isValid() const; int fileDescriptor() const; void setFileDescriptor(int fileDescriptor); static bool isSupported(); void swap(QDBusUnixFileDescriptor &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4511096 PyQt6-6.6.1/sip/QtDBus/qpydbuspendingreply.sip0000644000076500000240000000331314532160401020144 0ustar00philstaff// This is the SIP specification of the QPyDBusPendingReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusPendingReply : QDBusPendingCall /PyName=QDBusPendingReply/ { %TypeHeaderCode #include %End public: QPyDBusPendingReply(); QPyDBusPendingReply(const QPyDBusPendingReply &other); QPyDBusPendingReply(const QDBusPendingCall &call); QPyDBusPendingReply(const QDBusMessage &reply); // The /ReleaseGIL/ annotation is needed because QDBusPendingCall has an // internal mutex. QVariant argumentAt(int index) const /ReleaseGIL/; QDBusError error() const /ReleaseGIL/; bool isError() const /ReleaseGIL/; bool isFinished() const /ReleaseGIL/; bool isValid() const /ReleaseGIL/; QDBusMessage reply() const /ReleaseGIL/; void waitForFinished() /ReleaseGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /TypeHintValue="None"/ = 0) const /HoldGIL/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4502683 PyQt6-6.6.1/sip/QtDBus/qpydbusreply.sip0000644000076500000240000001225314532160401016602 0ustar00philstaff// This is the SIP specification of the QPyDBusReply class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDBusReply /PyName=QDBusReply/ { %TypeHeaderCode #include %End public: QPyDBusReply(const QDBusMessage &reply) /HoldGIL/; QPyDBusReply(const QDBusPendingCall &call) /HoldGIL/; QPyDBusReply(const QDBusError &error); QPyDBusReply(const QPyDBusReply &other) /HoldGIL/; ~QPyDBusReply() /HoldGIL/; const QDBusError &error() const /HoldGIL/; bool isValid() const /HoldGIL/; SIP_PYOBJECT value(SIP_PYOBJECT type /TypeHintValue="None"/ = 0) const /HoldGIL/; }; template %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { // Convert the value to a Python object. TYPE *value = new TYPE(sipCpp->value()); if ((value_obj = sipConvertFromNewType(value, sipType_TYPE, NULL)) == NULL) { delete value; return NULL; } } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode Py_INCREF(Py_None); QPyDBusReply *reply = new QPyDBusReply(Py_None, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyBool_FromLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = PyLong_FromUnsignedLong(sipCpp->value())) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; %MappedType QDBusReply /TypeHint="QDBusReply"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *value_obj; if (sipCpp->isValid()) { if ((value_obj = sipConvertFromEnum(sipCpp->value(), sipType_QDBusConnectionInterface_RegisterServiceReply)) == NULL) return NULL; } else { value_obj = 0; } QPyDBusReply *reply = new QPyDBusReply(value_obj, sipCpp->isValid(), sipCpp->error()); PyObject *reply_obj = sipConvertFromNewType(reply, sipType_QPyDBusReply, sipTransferObj); if (reply_obj == NULL) { delete reply; return NULL; } return reply_obj; %End %ConvertToTypeCode // We never create a QDBusReply from Python. return 0; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5171118 PyQt6-6.6.1/sip/QtDesigner/0000755000076500000240000000000014532160403014224 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3042798 PyQt6-6.6.1/sip/QtDesigner/QtDesignermod.sip0000644000076500000240000000537114532160401017512 0ustar00philstaff// QtDesignermod.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtDesigner, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include abstractactioneditor.sip %Include abstractformbuilder.sip %Include abstractformeditor.sip %Include abstractformwindow.sip %Include abstractformwindowcursor.sip %Include abstractformwindowmanager.sip %Include abstractobjectinspector.sip %Include abstractpropertyeditor.sip %Include abstractwidgetbox.sip %Include container.sip %Include customwidget.sip %Include default_extensionfactory.sip %Include extension.sip %Include formbuilder.sip %Include membersheet.sip %Include propertysheet.sip %Include qextensionmanager.sip %Include taskmenu.sip %Include qpydesignercontainerextension.sip %Include qpydesignercustomwidgetcollectionplugin.sip %Include qpydesignercustomwidgetplugin.sip %Include qpydesignertaskmenuextension.sip %Include qpydesignerpropertysheetextension.sip %Include qpydesignermembersheetextension.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2968075 PyQt6-6.6.1/sip/QtDesigner/abstractactioneditor.sip0000644000076500000240000000272514532160401021155 0ustar00philstaff// abstractactioneditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerActionEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerActionEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = {}); virtual ~QDesignerActionEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual void manageAction(QAction *action) = 0; virtual void unmanageAction(QAction *action) = 0; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3051612 PyQt6-6.6.1/sip/QtDesigner/abstractformbuilder.sip0000644000076500000240000000266114532160401021002 0ustar00philstaff// abstractformbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractFormBuilder { %TypeHeaderCode #include %End public: QAbstractFormBuilder(); virtual ~QAbstractFormBuilder(); virtual QWidget *load(QIODevice *device, QWidget *parent /TransferThis/ = 0) /Factory/; virtual void save(QIODevice *dev, QWidget *widget); void setWorkingDirectory(const QDir &directory); QDir workingDirectory() const; QString errorString() const; private: QAbstractFormBuilder(const QAbstractFormBuilder &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3024006 PyQt6-6.6.1/sip/QtDesigner/abstractformeditor.sip0000644000076500000240000000374514532160401020646 0ustar00philstaff// abstractformeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormEditorInterface : QObject { %TypeHeaderCode #include %End public: explicit QDesignerFormEditorInterface(QObject *parent /TransferThis/ = 0); virtual ~QDesignerFormEditorInterface(); QExtensionManager *extensionManager() const; QWidget *topLevel() const; QDesignerWidgetBoxInterface *widgetBox() const; QDesignerPropertyEditorInterface *propertyEditor() const; QDesignerObjectInspectorInterface *objectInspector() const; QDesignerFormWindowManagerInterface *formWindowManager() const; QDesignerActionEditorInterface *actionEditor() const; void setWidgetBox(QDesignerWidgetBoxInterface *widgetBox /KeepReference/); void setPropertyEditor(QDesignerPropertyEditorInterface *propertyEditor /KeepReference/); void setObjectInspector(QDesignerObjectInspectorInterface *objectInspector /KeepReference/); void setActionEditor(QDesignerActionEditorInterface *actionEditor /KeepReference/); private: QDesignerFormEditorInterface(const QDesignerFormEditorInterface &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2974455 PyQt6-6.6.1/sip/QtDesigner/abstractformwindow.sip0000644000076500000240000001120114532160401020651 0ustar00philstaff// abstractformwindow.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: enum FeatureFlag /BaseType=Flag/ { EditFeature, GridFeature, TabOrderFeature, DefaultFeature, }; typedef QFlags Feature; QDesignerFormWindowInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = {}); virtual ~QDesignerFormWindowInterface(); virtual QString fileName() const = 0; virtual QDir absoluteDir() const = 0; virtual QString contents() const = 0; virtual bool setContents(QIODevice *dev, QString *errorMessage = 0) = 0; virtual QDesignerFormWindowInterface::Feature features() const = 0; virtual bool hasFeature(QDesignerFormWindowInterface::Feature f) const = 0; virtual QString author() const = 0; virtual void setAuthor(const QString &author) = 0; virtual QString comment() const = 0; virtual void setComment(const QString &comment) = 0; virtual void layoutDefault(int *margin, int *spacing) = 0; virtual void setLayoutDefault(int margin, int spacing) = 0; virtual void layoutFunction(QString *margin /Out/, QString *spacing /Out/) = 0; virtual void setLayoutFunction(const QString &margin, const QString &spacing) = 0; virtual QString pixmapFunction() const = 0; virtual void setPixmapFunction(const QString &pixmapFunction) = 0; virtual QString exportMacro() const = 0; virtual void setExportMacro(const QString &exportMacro) = 0; virtual QStringList includeHints() const = 0; virtual void setIncludeHints(const QStringList &includeHints) = 0; virtual QDesignerFormEditorInterface *core() const; virtual QDesignerFormWindowCursorInterface *cursor() const = 0; virtual QPoint grid() const = 0; virtual QWidget *mainContainer() const = 0; virtual void setMainContainer(QWidget *mainContainer /KeepReference/) = 0; virtual bool isManaged(QWidget *widget) const = 0; virtual bool isDirty() const = 0; static QDesignerFormWindowInterface *findFormWindow(QWidget *w); static QDesignerFormWindowInterface *findFormWindow(QObject *obj); virtual void emitSelectionChanged() = 0; virtual QStringList resourceFiles() const = 0; virtual void addResourceFile(const QString &path) = 0; virtual void removeResourceFile(const QString &path) = 0; public slots: virtual void manageWidget(QWidget *widget) = 0; virtual void unmanageWidget(QWidget *widget) = 0; virtual void setFeatures(QDesignerFormWindowInterface::Feature f) = 0; virtual void setDirty(bool dirty) = 0; virtual void clearSelection(bool update = true) = 0; virtual void selectWidget(QWidget *widget, bool select = true) = 0; virtual void setGrid(const QPoint &grid) = 0; virtual void setFileName(const QString &fileName) = 0; virtual bool setContents(const QString &contents) = 0; signals: void mainContainerChanged(QWidget *mainContainer); void fileNameChanged(const QString &fileName); void featureChanged(QDesignerFormWindowInterface::Feature f /ScopesStripped=1/); void selectionChanged(); void geometryChanged(); void resourceFilesChanged(); void widgetManaged(QWidget *widget); void widgetUnmanaged(QWidget *widget); void aboutToUnmanageWidget(QWidget *widget); void activated(QWidget *widget); void changed(); void widgetRemoved(QWidget *w); void objectRemoved(QObject *o); public: virtual QStringList checkContents() const = 0; QStringList activeResourceFilePaths() const; virtual QWidget *formContainer() const = 0; void activateResourceFilePaths(const QStringList &paths, int *errorCount = 0, QString *errorMessages /Out/ = 0); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3006704 PyQt6-6.6.1/sip/QtDesigner/abstractformwindowcursor.sip0000644000076500000240000000474414532160401022125 0ustar00philstaff// abstractformwindowcursor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowCursorInterface { %TypeHeaderCode #include %End public: enum MoveOperation { NoMove, Start, End, Next, Prev, Left, Right, Up, Down, }; enum MoveMode { MoveAnchor, KeepAnchor, }; QDesignerFormWindowCursorInterface(); virtual ~QDesignerFormWindowCursorInterface(); virtual QDesignerFormWindowInterface *formWindow() const = 0; virtual bool movePosition(QDesignerFormWindowCursorInterface::MoveOperation op, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual int position() const = 0; virtual void setPosition(int pos, QDesignerFormWindowCursorInterface::MoveMode mode = QDesignerFormWindowCursorInterface::MoveAnchor) = 0; virtual QWidget *current() const = 0; virtual int widgetCount() const = 0; virtual QWidget *widget(int index) const = 0; virtual bool hasSelection() const = 0; virtual int selectedWidgetCount() const = 0; virtual QWidget *selectedWidget(int index) const = 0; virtual void setProperty(const QString &name, const QVariant &value) = 0; virtual void setWidgetProperty(QWidget *widget, const QString &name, const QVariant &value) = 0; virtual void resetWidgetProperty(QWidget *widget, const QString &name) = 0; bool isWidgetSelected(QWidget *widget) const; private: QDesignerFormWindowCursorInterface(const QDesignerFormWindowCursorInterface &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2944777 PyQt6-6.6.1/sip/QtDesigner/abstractformwindowmanager.sip0000644000076500000240000000632614532160401022220 0ustar00philstaff// abstractformwindowmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerFormWindowManagerInterface : QObject /Abstract/ { %TypeHeaderCode #include %End public: explicit QDesignerFormWindowManagerInterface(QObject *parent /TransferThis/ = 0); virtual ~QDesignerFormWindowManagerInterface(); QAction *actionFormLayout() const /Transfer/; QAction *actionSimplifyLayout() const /Transfer/; virtual QDesignerFormWindowInterface *activeFormWindow() const = 0; virtual int formWindowCount() const = 0; virtual QDesignerFormWindowInterface *formWindow(int index) const = 0 /Transfer/; virtual QDesignerFormWindowInterface *createFormWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()) = 0; virtual QDesignerFormEditorInterface *core() const = 0; signals: void formWindowAdded(QDesignerFormWindowInterface *formWindow); void formWindowRemoved(QDesignerFormWindowInterface *formWindow); void activeFormWindowChanged(QDesignerFormWindowInterface *formWindow); void formWindowSettingsChanged(QDesignerFormWindowInterface *fw); public slots: virtual void addFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void removeFormWindow(QDesignerFormWindowInterface *formWindow) = 0; virtual void setActiveFormWindow(QDesignerFormWindowInterface *formWindow) = 0; public: enum Action { CutAction, CopyAction, PasteAction, DeleteAction, SelectAllAction, LowerAction, RaiseAction, UndoAction, RedoAction, HorizontalLayoutAction, VerticalLayoutAction, SplitHorizontalAction, SplitVerticalAction, GridLayoutAction, FormLayoutAction, BreakLayoutAction, AdjustSizeAction, SimplifyLayoutAction, DefaultPreviewAction, FormWindowSettingsDialogAction, }; enum ActionGroup { StyledPreviewActionGroup, }; virtual QAction *action(QDesignerFormWindowManagerInterface::Action action) const = 0 /Transfer/; virtual QActionGroup *actionGroup(QDesignerFormWindowManagerInterface::ActionGroup actionGroup) const = 0 /Transfer/; public slots: virtual void showPreview() = 0; virtual void closeAllPreviews() = 0; virtual void showPluginDialog() = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3031886 PyQt6-6.6.1/sip/QtDesigner/abstractobjectinspector.sip0000644000076500000240000000257214532160401021666 0ustar00philstaff// abstractobjectinspector.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerObjectInspectorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerObjectInspectorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = {}); virtual ~QDesignerObjectInspectorInterface(); virtual QDesignerFormEditorInterface *core() const; public slots: virtual void setFormWindow(QDesignerFormWindowInterface *formWindow /KeepReference/) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3037643 PyQt6-6.6.1/sip/QtDesigner/abstractpropertyeditor.sip0000644000076500000240000000331014532160401021553 0ustar00philstaff// abstractpropertyeditor.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertyEditorInterface : QWidget { %TypeHeaderCode #include %End public: QDesignerPropertyEditorInterface(QWidget *parent /TransferThis/, Qt::WindowFlags flags = {}); virtual ~QDesignerPropertyEditorInterface(); virtual QDesignerFormEditorInterface *core() const; virtual bool isReadOnly() const = 0; virtual QObject *object() const = 0; virtual QString currentPropertyName() const = 0; signals: void propertyChanged(const QString &name, const QVariant &value); public slots: virtual void setObject(QObject *object /KeepReference/) = 0; virtual void setPropertyValue(const QString &name, const QVariant &value, bool changed = true) = 0; virtual void setReadOnly(bool readOnly) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3014865 PyQt6-6.6.1/sip/QtDesigner/abstractwidgetbox.sip0000644000076500000240000000256514532160401020467 0ustar00philstaff// abstractwidgetbox.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerWidgetBoxInterface : QWidget /Abstract/ { %TypeHeaderCode #include %End public: QDesignerWidgetBoxInterface(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QDesignerWidgetBoxInterface(); virtual void setFileName(const QString &file_name) = 0; virtual QString fileName() const = 0; virtual bool load() = 0; virtual bool save() = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3019805 PyQt6-6.6.1/sip/QtDesigner/container.sip0000644000076500000240000000314114532160401016720 0ustar00philstaff// container.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerContainerExtension { %TypeHeaderCode #include %End public: QDesignerContainerExtension(); virtual ~QDesignerContainerExtension(); virtual int count() const = 0 /__len__/; virtual QWidget *widget(int index) const = 0; virtual int currentIndex() const = 0; virtual void setCurrentIndex(int index) = 0; virtual void addWidget(QWidget *widget) = 0; virtual void insertWidget(int index, QWidget *widget) = 0; virtual void remove(int index) = 0; virtual bool canAddWidget() const = 0; virtual bool canRemove(int index) const = 0; private: QDesignerContainerExtension(const QDesignerContainerExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2996411 PyQt6-6.6.1/sip/QtDesigner/customwidget.sip0000644000076500000240000000353414532160401017462 0ustar00philstaff// customwidget.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetInterface(); virtual QString name() const = 0; virtual QString group() const = 0; virtual QString toolTip() const = 0; virtual QString whatsThis() const = 0; virtual QString includeFile() const = 0; virtual QIcon icon() const = 0; virtual bool isContainer() const = 0; virtual QWidget *createWidget(QWidget *parent /TransferThis/) = 0 /Factory/; virtual bool isInitialized() const; virtual void initialize(QDesignerFormEditorInterface *core); virtual QString domXml() const; virtual QString codeTemplate() const; }; class QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: virtual ~QDesignerCustomWidgetCollectionInterface(); virtual QList customWidgets() const = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3027878 PyQt6-6.6.1/sip/QtDesigner/default_extensionfactory.sip0000644000076500000240000000263614532160401022056 0ustar00philstaff// default_extensionfactory.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionFactory : QObject, QAbstractExtensionFactory { %TypeHeaderCode #include %End public: explicit QExtensionFactory(QExtensionManager *parent /TransferThis/ = 0); virtual QObject *extension(QObject *object, const QString &iid) const; QExtensionManager *extensionManager() const; protected: virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent /TransferThis/) const /Factory/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3001637 PyQt6-6.6.1/sip/QtDesigner/extension.sip0000644000076500000240000000304314532160401016753 0ustar00philstaff// extension.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractExtensionFactory { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionFactory(); virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; class QAbstractExtensionManager { %TypeHeaderCode #include %End public: virtual ~QAbstractExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; virtual QObject *extension(QObject *object, const QString &iid) const = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2983584 PyQt6-6.6.1/sip/QtDesigner/formbuilder.sip0000644000076500000240000000250114532160401017247 0ustar00philstaff// formbuilder.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormBuilder : QAbstractFormBuilder { %TypeHeaderCode #include %End public: QFormBuilder(); virtual ~QFormBuilder(); QStringList pluginPaths() const; void clearPluginPaths(); void addPluginPath(const QString &pluginPath); void setPluginPath(const QStringList &pluginPaths); QList customWidgets() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2992053 PyQt6-6.6.1/sip/QtDesigner/membersheet.sip0000644000076500000240000000371114532160401017241 0ustar00philstaff// membersheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: QDesignerMemberSheetExtension(); virtual ~QDesignerMemberSheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString memberName(int index) const = 0; virtual QString memberGroup(int index) const = 0; virtual void setMemberGroup(int index, const QString &group) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isSignal(int index) const = 0; virtual bool isSlot(int index) const = 0; virtual bool inheritedFromWidget(int index) const = 0; virtual QString declaredInClass(int index) const = 0; virtual QString signature(int index) const = 0; virtual QList parameterTypes(int index) const = 0; virtual QList parameterNames(int index) const = 0; private: QDesignerMemberSheetExtension(const QDesignerMemberSheetExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2958891 PyQt6-6.6.1/sip/QtDesigner/propertysheet.sip0000644000076500000240000000404414532160401017656 0ustar00philstaff// propertysheet.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: QDesignerPropertySheetExtension(); virtual ~QDesignerPropertySheetExtension(); virtual int count() const = 0 /__len__/; virtual int indexOf(const QString &name) const = 0; virtual QString propertyName(int index) const = 0; virtual QString propertyGroup(int index) const = 0; virtual void setPropertyGroup(int index, const QString &group) = 0; virtual bool hasReset(int index) const = 0; virtual bool reset(int index) = 0; virtual bool isVisible(int index) const = 0; virtual void setVisible(int index, bool b) = 0; virtual bool isAttribute(int index) const = 0; virtual void setAttribute(int index, bool b) = 0; virtual QVariant property(int index) const = 0; virtual void setProperty(int index, const QVariant &value) = 0; virtual bool isChanged(int index) const = 0; virtual void setChanged(int index, bool changed) = 0; virtual bool isEnabled(int index) const = 0; private: QDesignerPropertySheetExtension(const QDesignerPropertySheetExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2964175 PyQt6-6.6.1/sip/QtDesigner/qextensionmanager.sip0000644000076500000240000000650514532160401020475 0ustar00philstaff// qextensionmanager.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QExtensionManager : QObject, QAbstractExtensionManager { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QPyDesignerCustomWidgetPlugin, &sipType_QPyDesignerCustomWidgetPlugin, -1, 1}, {sipName_QExtensionFactory, &sipType_QExtensionFactory, -1, 2}, {sipName_QPyDesignerMemberSheetExtension, &sipType_QPyDesignerMemberSheetExtension, -1, 3}, {sipName_QDesignerFormEditorInterface, &sipType_QDesignerFormEditorInterface, -1, 4}, {sipName_QDesignerWidgetBoxInterface, &sipType_QDesignerWidgetBoxInterface, -1, 5}, {sipName_QDesignerFormWindowInterface, &sipType_QDesignerFormWindowInterface, -1, 6}, {sipName_QDesignerActionEditorInterface, &sipType_QDesignerActionEditorInterface, -1, 7}, {sipName_QPyDesignerContainerExtension, &sipType_QPyDesignerContainerExtension, -1, 8}, {sipName_QDesignerPropertyEditorInterface, &sipType_QDesignerPropertyEditorInterface, -1, 9}, {sipName_QDesignerFormWindowManagerInterface, &sipType_QDesignerFormWindowManagerInterface, -1, 10}, {sipName_QPyDesignerTaskMenuExtension, &sipType_QPyDesignerTaskMenuExtension, -1, 11}, {sipName_QPyDesignerPropertySheetExtension, &sipType_QPyDesignerPropertySheetExtension, -1, 12}, {sipName_QDesignerObjectInspectorInterface, &sipType_QDesignerObjectInspectorInterface, -1, 13}, {sipName_QPyDesignerCustomWidgetCollectionPlugin, &sipType_QPyDesignerCustomWidgetCollectionPlugin, -1, 14}, {sipName_QExtensionManager, &sipType_QExtensionManager, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QExtensionManager(QObject *parent /TransferThis/ = 0); virtual ~QExtensionManager(); virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()); virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid = QString()); virtual QObject *extension(QObject *object, const QString &iid) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2938929 PyQt6-6.6.1/sip/QtDesigner/qpydesignercontainerextension.sip0000644000076500000240000000231414532160401023131 0ustar00philstaff// This is the SIP specification of the QPyDesignerContainerExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerContainerExtension : QObject, QDesignerContainerExtension { %TypeHeaderCode #include %End public: QPyDesignerContainerExtension(QObject *parent /TransferThis/); private: QPyDesignerContainerExtension(const QPyDesignerContainerExtension &); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.295283 PyQt6-6.6.1/sip/QtDesigner/qpydesignercustomwidgetcollectionplugin.sip0000644000076500000240000000243414532160401025226 0ustar00philstaff// This is the SIP specification of the QPyDesignerCustomWidgetCollectionPlugin // class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetCollectionPlugin : QObject, QDesignerCustomWidgetCollectionInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetCollectionPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetCollectionPlugin(const QPyDesignerCustomWidgetCollectionPlugin &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2979758 PyQt6-6.6.1/sip/QtDesigner/qpydesignercustomwidgetplugin.sip0000644000076500000240000000232314532160401023147 0ustar00philstaff// This is the SIP specification of the QPyDesignerCustomWidgetPlugin class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerCustomWidgetPlugin : QObject, QDesignerCustomWidgetInterface { %TypeHeaderCode #include %End public: QPyDesignerCustomWidgetPlugin(QObject *parent /TransferThis/ = 0); private: QPyDesignerCustomWidgetPlugin(const QPyDesignerCustomWidgetPlugin &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3047533 PyQt6-6.6.1/sip/QtDesigner/qpydesignermembersheetextension.sip0000644000076500000240000000233214532160401023447 0ustar00philstaff// This is the SIP specification of the QPyDesignerMemberSheetExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerMemberSheetExtension : QObject, QDesignerMemberSheetExtension { %TypeHeaderCode #include %End public: QPyDesignerMemberSheetExtension(QObject *parent /TransferThis/); private: QPyDesignerMemberSheetExtension(const QPyDesignerMemberSheetExtension &); }; ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1701372161.3011 PyQt6-6.6.1/sip/QtDesigner/qpydesignerpropertysheetextension.sip0000644000076500000240000000235314532160401024067 0ustar00philstaff// This is the SIP specification of the QPyDesignerPropertySheetExtension // class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerPropertySheetExtension : QObject, QDesignerPropertySheetExtension { %TypeHeaderCode #include %End public: QPyDesignerPropertySheetExtension(QObject *parent /TransferThis/); private: QPyDesignerPropertySheetExtension(const QPyDesignerPropertySheetExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2987728 PyQt6-6.6.1/sip/QtDesigner/qpydesignertaskmenuextension.sip0000644000076500000240000000230514532160401022776 0ustar00philstaff// This is the SIP specification of the QPyDesignerTaskMenuExtension class. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPyDesignerTaskMenuExtension : QObject, QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: QPyDesignerTaskMenuExtension(QObject *parent /TransferThis/); private: QPyDesignerTaskMenuExtension(const QPyDesignerTaskMenuExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2948692 PyQt6-6.6.1/sip/QtDesigner/taskmenu.sip0000644000076500000240000000242414532160401016570 0ustar00philstaff// taskmenu.sip generated by MetaSIP // // This file is part of the QtDesigner Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesignerTaskMenuExtension { %TypeHeaderCode #include %End public: QDesignerTaskMenuExtension(); virtual ~QDesignerTaskMenuExtension(); virtual QList taskActions() const = 0; virtual QAction *preferredEditAction() const; private: QDesignerTaskMenuExtension(const QDesignerTaskMenuExtension &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5782738 PyQt6-6.6.1/sip/QtGui/0000755000076500000240000000000014532160403013210 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4065907 PyQt6-6.6.1/sip/QtGui/QtGuimod.sip0000644000076500000240000001012214532160401015450 0ustar00philstaff// QtGuimod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtGui, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qabstractfileiconprovider.sip %Include qabstracttextdocumentlayout.sip %Include qaction.sip %Include qactiongroup.sip %Include qbackingstore.sip %Include qbitmap.sip %Include qcolor.sip %Include qbrush.sip %Include qclipboard.sip %Include qcolorspace.sip %Include qcolortransform.sip %Include qcursor.sip %Include qdesktopservices.sip %Include qdrag.sip %Include qevent.sip %Include qeventpoint.sip %Include qfilesystemmodel.sip %Include qfont.sip %Include qfontdatabase.sip %Include qfontinfo.sip %Include qfontmetrics.sip %Include qgenericmatrix.sip %Include qglyphrun.sip %Include qguiapplication.sip %Include qicon.sip %Include qiconengine.sip %Include qimage.sip %Include qimageiohandler.sip %Include qimagereader.sip %Include qimagewriter.sip %Include qinputdevice.sip %Include qinputmethod.sip %Include qkeysequence.sip %Include qmatrix4x4.sip %Include qmovie.sip %Include qoffscreensurface.sip %Include qopenglcontext.sip %Include qpagedpaintdevice.sip %Include qpagelayout.sip %Include qpageranges.sip %Include qpagesize.sip %Include qpaintdevice.sip %Include qpaintdevicewindow.sip %Include qpaintengine.sip %Include qpainter.sip %Include qpainterpath.sip %Include qpalette.sip %Include qpdfwriter.sip %Include qpen.sip %Include qpicture.sip %Include qpixelformat.sip %Include qpixmap.sip %Include qpixmapcache.sip %Include qpointingdevice.sip %Include qpolygon.sip %Include qquaternion.sip %Include qrasterwindow.sip %Include qrawfont.sip %Include qregion.sip %Include qrgba64.sip %Include qrgb.sip %Include qscreen.sip %Include qsessionmanager.sip %Include qshortcut.sip %Include qstandarditemmodel.sip %Include qstatictext.sip %Include qstylehints.sip %Include qsurface.sip %Include qsurfaceformat.sip %Include qsyntaxhighlighter.sip %Include qtextcursor.sip %Include qtextdocument.sip %Include qtextdocumentfragment.sip %Include qtextdocumentwriter.sip %Include qtextformat.sip %Include qtextlayout.sip %Include qtextlist.sip %Include qtextobject.sip %Include qtextoption.sip %Include qtexttable.sip %Include qtransform.sip %Include qundogroup.sip %Include qundostack.sip %Include qutimimeconverter.sip %Include qvalidator.sip %Include qvectornd.sip %Include qwindow.sip %Include qwindowdefs.sip %Include qpygui_qlist.sip %Include opengl_types.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4042163 PyQt6-6.6.1/sip/QtGui/opengl_types.sip0000644000076500000240000000257414532160401016443 0ustar00philstaff// This implements the typedefs for the OpenGL data types. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) typedef char GLchar; typedef qint8 GLbyte; typedef quint8 GLubyte; typedef quint8 GLboolean; typedef qint16 GLshort; typedef quint16 GLushort; typedef qint32 GLint; typedef qint32 GLsizei; typedef quint32 GLuint; typedef quint32 GLenum; typedef quint32 GLbitfield; %If (!PyQt_OpenGL_ES2) typedef quint64 GLuint64; // This is in OpenGL ES v3. typedef double GLdouble; %End typedef float GLfloat; typedef float GLclampf; typedef long GLintptr; typedef long GLsizeiptr; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.352288 PyQt6-6.6.1/sip/QtGui/qabstractfileiconprovider.sip0000644000076500000240000000342114532160401021173 0ustar00philstaff// qabstractfileiconprovider.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractFileIconProvider { %TypeHeaderCode #include %End public: enum IconType { Computer, Desktop, Trashcan, Network, Drive, Folder, File, }; enum Option /BaseType=Flag/ { DontUseCustomDirectoryIcons, }; typedef QFlags Options; QAbstractFileIconProvider(); virtual ~QAbstractFileIconProvider(); virtual QIcon icon(QAbstractFileIconProvider::IconType) const; virtual QIcon icon(const QFileInfo &) const; virtual QString type(const QFileInfo &) const; virtual void setOptions(QAbstractFileIconProvider::Options); virtual QAbstractFileIconProvider::Options options() const; private: QAbstractFileIconProvider(const QAbstractFileIconProvider &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3490658 PyQt6-6.6.1/sip/QtGui/qabstracttextdocumentlayout.sip0000644000076500000240000000721614532160401021617 0ustar00philstaff// qabstracttextdocumentlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractTextDocumentLayout : QObject { %TypeHeaderCode #include %End public: explicit QAbstractTextDocumentLayout(QTextDocument *doc); virtual ~QAbstractTextDocumentLayout(); struct Selection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; struct PaintContext { %TypeHeaderCode #include %End PaintContext(); int cursorPosition; QPalette palette; QRectF clip; QList selections; }; virtual void draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0; virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0; QString anchorAt(const QPointF &pos) const; virtual int pageCount() const = 0; virtual QSizeF documentSize() const = 0; virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0; virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0; void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; QTextDocument *document() const; void registerHandler(int objectType, QObject *component); void unregisterHandler(int objectType, QObject *component = 0); QTextObjectInterface *handlerForObject(int objectType) const; signals: void update(const QRectF &rect = QRectF(0., 0., 1.0E+9, 1.0E+9)); void documentSizeChanged(const QSizeF &newSize); void pageCountChanged(int newPages); void updateBlock(const QTextBlock &block); protected: virtual void documentChanged(int from, int charsRemoved, int charsAdded) = 0; virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format); virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format); QTextCharFormat format(int pos); public: QString imageAt(const QPointF &pos) const; QTextFormat formatAt(const QPointF &pos) const; QTextBlock blockWithMarkerAt(const QPointF &pos) const; }; class QTextObjectInterface /Mixin,PyQtInterface="org.qt-project.Qt.QTextObjectInterface"/ { %TypeHeaderCode #include %End public: virtual ~QTextObjectInterface(); virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.389028 PyQt6-6.6.1/sip/QtGui/qaction.sip0000644000076500000240000001110014532160401015352 0ustar00philstaff// qaction.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenu /External/; class QAction : QObject { %TypeHeaderCode #include %End public: explicit QAction(QObject *parent /TransferThis/ = 0); QAction(const QString &text, QObject *parent /TransferThis/ = 0); QAction(const QIcon &icon, const QString &text, QObject *parent /TransferThis/ = 0); virtual ~QAction(); void setActionGroup(QActionGroup *group /KeepReference/); QActionGroup *actionGroup() const; void setIcon(const QIcon &icon); QIcon icon() const; void setText(const QString &text); QString text() const; void setIconText(const QString &text); QString iconText() const; void setToolTip(const QString &tip); QString toolTip() const; void setStatusTip(const QString &statusTip); QString statusTip() const; void setWhatsThis(const QString &what); QString whatsThis() const; void setSeparator(bool b); bool isSeparator() const; void setShortcut(const QKeySequence &shortcut); QKeySequence shortcut() const; void setShortcutContext(Qt::ShortcutContext context); Qt::ShortcutContext shortcutContext() const; void setFont(const QFont &font); QFont font() const; void setCheckable(bool); bool isCheckable() const; QVariant data() const; void setData(const QVariant &var); bool isChecked() const; bool isEnabled() const; bool isVisible() const; enum ActionEvent { Trigger, Hover, }; void activate(QAction::ActionEvent event); bool showStatusText(QObject *object = 0); protected: virtual bool event(QEvent *); public slots: void trigger(); void hover(); void setChecked(bool); void toggle(); void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); signals: void changed(); void triggered(bool checked = false); void hovered(); void toggled(bool); public: enum MenuRole { NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, AboutRole, PreferencesRole, QuitRole, }; void setShortcuts(const QList &shortcuts); void setShortcuts(QKeySequence::StandardKey); QList shortcuts() const; void setAutoRepeat(bool); bool autoRepeat() const; void setMenuRole(QAction::MenuRole menuRole); QAction::MenuRole menuRole() const; QMenu *menu() const; %MethodCode typedef QMenu *(*pyqt6_qtgui_qaction_menu_t)(const QAction *); pyqt6_qtgui_qaction_menu_t pyqt6_qtgui_qaction_menu = (pyqt6_qtgui_qaction_menu_t)sipImportSymbol("pyqt6_qaction_menu"); sipRes = (pyqt6_qtgui_qaction_menu ? pyqt6_qtgui_qaction_menu(sipCpp) : SIP_NULLPTR); %End void setMenu(QMenu *menu); %MethodCode typedef void *(*pyqt6_qtgui_qaction_set_menu_t)(QAction *, QMenu *); pyqt6_qtgui_qaction_set_menu_t pyqt6_qtgui_qaction_set_menu = (pyqt6_qtgui_qaction_set_menu_t)sipImportSymbol("pyqt6_qaction_set_menu"); if (pyqt6_qtgui_qaction_set_menu) pyqt6_qtgui_qaction_set_menu(sipCpp, a0); %End void setIconVisibleInMenu(bool visible); bool isIconVisibleInMenu() const; enum Priority { LowPriority, NormalPriority, HighPriority, }; void setPriority(QAction::Priority priority); QAction::Priority priority() const; void setShortcutVisibleInContextMenu(bool show); bool isShortcutVisibleInContextMenu() const; QList associatedObjects() const; public slots: void resetEnabled(); signals: void enabledChanged(bool enabled); void checkableChanged(bool checkable); void visibleChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3535209 PyQt6-6.6.1/sip/QtGui/qactiongroup.sip0000644000076500000240000000363214532160401016442 0ustar00philstaff// qactiongroup.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QActionGroup : QObject { %TypeHeaderCode #include %End public: explicit QActionGroup(QObject *parent /TransferThis/); virtual ~QActionGroup(); QAction *addAction(QAction *a /Transfer/); QAction *addAction(const QString &text) /Transfer/; QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; void removeAction(QAction *a /TransferBack/); QList actions() const; QAction *checkedAction() const; bool isExclusive() const; bool isEnabled() const; bool isVisible() const; enum class ExclusionPolicy { None, Exclusive, ExclusiveOptional, }; QActionGroup::ExclusionPolicy exclusionPolicy() const; public slots: void setEnabled(bool); void setDisabled(bool b); void setVisible(bool); void setExclusive(bool); void setExclusionPolicy(QActionGroup::ExclusionPolicy policy); signals: void triggered(QAction *); void hovered(QAction *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4096715 PyQt6-6.6.1/sip/QtGui/qbackingstore.sip0000644000076500000240000000304014532160401016554 0ustar00philstaff// qbackingstore.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBackingStore /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QBackingStore(QWindow *window); ~QBackingStore(); QWindow *window() const; QPaintDevice *paintDevice(); void flush(const QRegion ®ion, QWindow *window = 0, const QPoint &offset = QPoint()); void resize(const QSize &size); QSize size() const; bool scroll(const QRegion &area, int dx, int dy); void beginPaint(const QRegion &); void endPaint(); void setStaticContents(const QRegion ®ion); QRegion staticContents() const; bool hasStaticContents() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3645282 PyQt6-6.6.1/sip/QtGui/qbitmap.sip0000644000076500000240000000347014532160401015364 0ustar00philstaff// qbitmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBitmap : QPixmap { %TypeHeaderCode #include %End public: QBitmap(); QBitmap(int w, int h); explicit QBitmap(const QSize &); QBitmap(const QString &fileName, const char *format = 0); QBitmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQBitmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End %If (Qt_6_3_0 -) virtual ~QBitmap(); %End void clear(); static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QBitmap fromPixmap(const QPixmap &pixmap); static QBitmap fromData(const QSize &size, const uchar *bits, QImage::Format format = QImage::Format_MonoLSB); QBitmap transformed(const QTransform &matrix) const; void swap(QBitmap &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.421228 PyQt6-6.6.1/sip/QtGui/qbrush.sip0000644000076500000240000002476314532160401015243 0ustar00philstaff// qbrush.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBrush /TypeHintIn="Union[QBrush, QColor, QGradient]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor or a QGradient to be used whenever a QBrush is expected. Note that // SIP must process QColor before QBrush so that the former's QVariant cast // operator is applied before the latter's. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0) || sipCanConvertToType(sipPy, sipType_QGradient, 0)); if (sipCanConvertToType(sipPy, sipType_QBrush, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QBrush, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; if (sipCanConvertToType(sipPy, sipType_QColor, 0)) { QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QBrush(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); } QGradient *g = reinterpret_cast(sipConvertToType(sipPy, sipType_QGradient, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(g, sipType_QGradient, state); return 0; } *sipCppPtr = new QBrush(*g); sipReleaseType(g, sipType_QGradient, state); return sipGetState(sipTransferObj); %End public: QBrush(); QBrush(Qt::BrushStyle bs); QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern); QBrush(const QColor &color, const QPixmap &pixmap); QBrush(const QPixmap &pixmap); QBrush(const QImage &image); QBrush(const QBrush &brush); QBrush(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QBrush(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QBrush(); void setStyle(Qt::BrushStyle); QPixmap texture() const; void setTexture(const QPixmap &pixmap); void setColor(const QColor &color); const QGradient *gradient() const; bool isOpaque() const; bool operator==(const QBrush &b) const; bool operator!=(const QBrush &b) const; void setColor(Qt::GlobalColor acolor); Qt::BrushStyle style() const; const QColor &color() const; void setTextureImage(const QImage &image); QImage textureImage() const; void setTransform(const QTransform &); QTransform transform() const; void swap(QBrush &other /Constrained/); }; QDataStream &operator>>(QDataStream &, QBrush & /Constrained/) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, const QBrush & /Constrained/) /ReleaseGIL/; typedef QList> QGradientStops; class QGradient { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QGradient::ConicalGradient: sipType = sipType_QConicalGradient; break; case QGradient::LinearGradient: sipType = sipType_QLinearGradient; break; case QGradient::RadialGradient: sipType = sipType_QRadialGradient; break; default: sipType = 0; } %End public: enum CoordinateMode { LogicalMode, StretchToDeviceMode, ObjectBoundingMode, ObjectMode, }; enum Type { LinearGradient, RadialGradient, ConicalGradient, NoGradient, }; enum Spread { PadSpread, ReflectSpread, RepeatSpread, }; enum Preset { WarmFlame, NightFade, SpringWarmth, JuicyPeach, YoungPassion, LadyLips, SunnyMorning, RainyAshville, FrozenDreams, WinterNeva, DustyGrass, TemptingAzure, HeavyRain, AmyCrisp, MeanFruit, DeepBlue, RipeMalinka, CloudyKnoxville, MalibuBeach, NewLife, TrueSunset, MorpheusDen, RareWind, NearMoon, WildApple, SaintPetersburg, PlumPlate, EverlastingSky, HappyFisher, Blessing, SharpeyeEagle, LadogaBottom, LemonGate, ItmeoBranding, ZeusMiracle, OldHat, StarWine, HappyAcid, AwesomePine, NewYork, ShyRainbow, MixedHopes, FlyHigh, StrongBliss, FreshMilk, SnowAgain, FebruaryInk, KindSteel, SoftGrass, GrownEarly, SharpBlues, ShadyWater, DirtyBeauty, GreatWhale, TeenNotebook, PoliteRumors, SweetPeriod, WideMatrix, SoftCherish, RedSalvation, BurningSpring, NightParty, SkyGlider, HeavenPeach, PurpleDivision, AquaSplash, SpikyNaga, LoveKiss, CleanMirror, PremiumDark, ColdEvening, CochitiLake, SummerGames, PassionateBed, MountainRock, DesertHump, JungleDay, PhoenixStart, OctoberSilence, FarawayRiver, AlchemistLab, OverSun, PremiumWhite, MarsParty, EternalConstance, JapanBlush, SmilingRain, CloudyApple, BigMango, HealthyWater, AmourAmour, RiskyConcrete, StrongStick, ViciousStance, PaloAlto, HappyMemories, MidnightBloom, Crystalline, PartyBliss, ConfidentCloud, LeCocktail, RiverCity, FrozenBerry, ChildCare, FlyingLemon, NewRetrowave, HiddenJaguar, AboveTheSky, Nega, DenseWater, Seashore, MarbleWall, CheerfulCaramel, NightSky, MagicLake, YoungGrass, ColorfulPeach, GentleCare, PlumBath, HappyUnicorn, AfricanField, SolidStone, OrangeJuice, GlassWater, NorthMiracle, FruitBlend, MillenniumPine, HighFlight, MoleHall, SpaceShift, ForestInei, RoyalGarden, RichMetal, JuicyCake, SmartIndigo, SandStrike, NorseBeauty, AquaGuidance, SunVeggie, SeaLord, BlackSea, GrassShampoo, LandingAircraft, WitchDance, SleeplessNight, AngelCare, CrystalRiver, SoftLipstick, SaltMountain, PerfectWhite, FreshOasis, StrictNovember, MorningSalad, DeepRelief, SeaStrike, NightCall, SupremeSky, LightBlue, MindCrawl, LilyMeadow, SugarLollipop, SweetDessert, MagicRay, TeenParty, FrozenHeat, GagarinView, FabledSunset, PerfectBlue, NumPresets, }; QGradient(); QGradient(QGradient::Preset); ~QGradient(); QGradient::Type type() const; QGradient::Spread spread() const; void setColorAt(qreal pos, const QColor &color); void setStops(const QGradientStops &stops); QGradientStops stops() const; bool operator==(const QGradient &gradient) const; bool operator!=(const QGradient &other) const; void setSpread(QGradient::Spread aspread); QGradient::CoordinateMode coordinateMode() const; void setCoordinateMode(QGradient::CoordinateMode mode); }; class QLinearGradient : QGradient { %TypeHeaderCode #include %End public: QLinearGradient(); QLinearGradient(const QPointF &start, const QPointF &finalStop); QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop); ~QLinearGradient(); QPointF start() const; QPointF finalStop() const; void setStart(const QPointF &start); void setStart(qreal x, qreal y); void setFinalStop(const QPointF &stop); void setFinalStop(qreal x, qreal y); }; class QRadialGradient : QGradient { %TypeHeaderCode #include %End public: QRadialGradient(); QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint); QRadialGradient(const QPointF ¢er, qreal centerRadius, const QPointF &focalPoint, qreal focalRadius); QRadialGradient(const QPointF ¢er, qreal radius); QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy); QRadialGradient(qreal cx, qreal cy, qreal centerRadius, qreal fx, qreal fy, qreal focalRadius); QRadialGradient(qreal cx, qreal cy, qreal radius); ~QRadialGradient(); QPointF center() const; QPointF focalPoint() const; qreal radius() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setFocalPoint(const QPointF &focalPoint); void setFocalPoint(qreal x, qreal y); void setRadius(qreal radius); qreal centerRadius() const; void setCenterRadius(qreal radius); qreal focalRadius() const; void setFocalRadius(qreal radius); }; class QConicalGradient : QGradient { %TypeHeaderCode #include %End public: QConicalGradient(); QConicalGradient(const QPointF ¢er, qreal startAngle); QConicalGradient(qreal cx, qreal cy, qreal startAngle); ~QConicalGradient(); QPointF center() const; qreal angle() const; void setCenter(const QPointF ¢er); void setCenter(qreal x, qreal y); void setAngle(qreal angle); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4218082 PyQt6-6.6.1/sip/QtGui/qclipboard.sip0000644000076500000240000000664414532160401016055 0ustar00philstaff// qclipboard.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QClipboard : QObject { %TypeHeaderCode #include %End explicit QClipboard(QObject *parent /TransferThis/); virtual ~QClipboard(); public: enum Mode { Clipboard, Selection, FindBuffer, }; void clear(QClipboard::Mode mode = QClipboard::Clipboard); bool supportsFindBuffer() const; bool supportsSelection() const; bool ownsClipboard() const; bool ownsFindBuffer() const; bool ownsSelection() const; QString text(QClipboard::Mode mode = QClipboard::Clipboard) const; SIP_PYTUPLE text(const QString &subtype, QClipboard::Mode mode = QClipboard::Clipboard) const /TypeHint="Tuple[QString, QString]"/; %MethodCode QString *text; QString *subtype = new QString(*a0); Py_BEGIN_ALLOW_THREADS text = new QString(sipCpp->text(*subtype, a1)); Py_END_ALLOW_THREADS PyObject *text_obj = sipConvertFromNewType(text, sipType_QString, NULL); PyObject *subtype_obj = sipConvertFromNewType(subtype, sipType_QString, NULL); if (text_obj && subtype_obj) sipRes = PyTuple_Pack(2, text_obj, subtype_obj); Py_XDECREF(text_obj); Py_XDECREF(subtype_obj); %End void setText(const QString &, QClipboard::Mode mode = QClipboard::Clipboard); const QMimeData *mimeData(QClipboard::Mode mode = QClipboard::Clipboard) const; void setMimeData(QMimeData *data /GetWrapper/, QClipboard::Mode mode = QClipboard::Clipboard); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMimeData(a0, a1); Py_END_ALLOW_THREADS // Transfer ownership to C++ and make sure the Python object stays alive by // giving it a reference to itself. The cycle will be broken by QMimeData's // virtual dtor. The reason we don't do the obvious and just use /Transfer/ is // that the QClipboard Python object we would transfer ownership to is likely // to be garbage collected immediately afterwards. sipTransferTo(a0Wrapper, a0Wrapper); %End QImage image(QClipboard::Mode mode = QClipboard::Clipboard) const; QPixmap pixmap(QClipboard::Mode mode = QClipboard::Clipboard) const; void setImage(const QImage &, QClipboard::Mode mode = QClipboard::Clipboard); void setPixmap(const QPixmap &, QClipboard::Mode mode = QClipboard::Clipboard); signals: void changed(QClipboard::Mode mode); void dataChanged(); void findBufferChanged(); void selectionChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3798106 PyQt6-6.6.1/sip/QtGui/qcolor.sip0000644000076500000240000003007714532160401015231 0ustar00philstaff// qcolor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColor /TypeHintIn="Union[QColor, Qt.GlobalColor, int]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::GlobalColor or an (unsigned) int to be used whenever a QColor is // expected. Note that SIP must process QColor before QBrush so that the // former's QVariant cast operator is applied before the latter's. if (PyLong_Check(sipPy)) { if (sipIsErr == NULL) return 1; unsigned long argb = PyLong_AsUnsignedLong(sipPy); if (PyErr_Occurred()) { PyErr_Clear(); *sipIsErr = 1; return 0; } *sipCppPtr = new QColor(static_cast(argb)); return sipGetState(sipTransferObj); } bool is_global_color = true; int global_color = sipConvertToEnum(sipPy, sipType_Qt_GlobalColor); if (PyErr_Occurred()) { PyErr_Clear(); is_global_color = false; } if (sipIsErr == NULL) return (is_global_color || sipCanConvertToType(sipPy, sipType_QColor, SIP_NO_CONVERTORS)); if (is_global_color) { *sipCppPtr = new QColor(static_cast(global_color)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->red(), sipCpp->green(), sipCpp->blue(), sipCpp->alpha()); %End public: enum Spec { Invalid, Rgb, Hsv, Cmyk, Hsl, ExtendedRgb, }; QColor(Qt::GlobalColor color); QColor(QRgb rgb); QColor(QRgba64 rgba64); QColor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QColor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QString name(QColor::NameFormat format = QColor::HexRgb) const; void setNamedColor(QStringView name); static QStringList colorNames(); QColor::Spec spec() const; int alpha() const; void setAlpha(int alpha); float alphaF() const; void setAlphaF(float alpha); int red() const; int green() const; int blue() const; void setRed(int red); void setGreen(int green); void setBlue(int blue); float redF() const; float greenF() const; float blueF() const; void setRedF(float red); void setGreenF(float green); void setBlueF(float blue); void getRgb(int *r, int *g, int *b, int *alpha = 0) const; void setRgb(int r, int g, int b, int alpha = 255); void getRgbF(float *r, float *g, float *b, float *alpha = 0) const; void setRgbF(float r, float g, float b, float alpha = 1.); QRgb rgba() const; void setRgba(QRgb rgba); QRgb rgb() const; void setRgb(QRgb rgb); int hue() const; int saturation() const; int value() const; float hueF() const; float saturationF() const; float valueF() const; void getHsv(int *h, int *s, int *v, int *alpha = 0) const; void setHsv(int h, int s, int v, int alpha = 255); void getHsvF(float *h, float *s, float *v, float *alpha = 0) const; void setHsvF(float h, float s, float v, float alpha = 1.); int cyan() const; int magenta() const; int yellow() const; int black() const; float cyanF() const; float magentaF() const; float yellowF() const; float blackF() const; void getCmyk(int *c, int *m, int *y, int *k, int *alpha = 0) const; void setCmyk(int c, int m, int y, int k, int alpha = 255); void getCmykF(float *c, float *m, float *y, float *k, float *alpha = 0) const; void setCmykF(float c, float m, float y, float k, float alpha = 1.); QColor toRgb() const; QColor toHsv() const; QColor toCmyk() const; QColor convertTo(QColor::Spec colorSpec) const; static QColor fromRgb(QRgb rgb); static QColor fromRgba(QRgb rgba); static QColor fromRgb(int r, int g, int b, int alpha = 255); static QColor fromRgbF(float r, float g, float b, float alpha = 1.); static QColor fromHsv(int h, int s, int v, int alpha = 255); static QColor fromHsvF(float h, float s, float v, float alpha = 1.); static QColor fromCmyk(int c, int m, int y, int k, int alpha = 255); static QColor fromCmykF(float c, float m, float y, float k, float alpha = 1.); bool operator==(const QColor &c) const; bool operator!=(const QColor &c) const; QColor(); QColor(int r, int g, int b, int alpha = 255); explicit QColor(QStringView name); bool isValid() const; QColor lighter(int factor = 150) const; QColor darker(int factor = 200) const; int hsvHue() const; int hsvSaturation() const; float hsvHueF() const; float hsvSaturationF() const; int hslHue() const; int hslSaturation() const; int lightness() const; float hslHueF() const; float hslSaturationF() const; float lightnessF() const; void getHsl(int *h, int *s, int *l, int *alpha = 0) const; void setHsl(int h, int s, int l, int alpha = 255); void getHslF(float *h, float *s, float *l, float *alpha = 0) const; void setHslF(float h, float s, float l, float alpha = 1.); QColor toHsl() const; static QColor fromHsl(int h, int s, int l, int alpha = 255); static QColor fromHslF(float h, float s, float l, float alpha = 1.); static bool isValidColor(const QString &name); enum NameFormat { HexRgb, HexArgb, }; QRgba64 rgba64() const; void setRgba64(QRgba64 rgba); static QColor fromRgba64(ushort r, ushort g, ushort b, ushort alpha = USHRT_MAX); static QColor fromRgba64(QRgba64 rgba); QColor toExtendedRgb() const; %If (Qt_6_4_0 -) static QColor fromString(QAnyStringView name); %End %If (Qt_6_4_0 -) static bool isValidColorName(QAnyStringView); %End }; QDataStream &operator<<(QDataStream &, const QColor &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QColor & /Constrained/) /ReleaseGIL/; namespace QColorConstants { %TypeHeaderCode #include %End const QColor Color0; const QColor Color1; const QColor Black; const QColor White; const QColor DarkGray; const QColor Gray; const QColor LightGray; const QColor Red; const QColor Green; const QColor Blue; const QColor Cyan; const QColor Magenta; const QColor Yellow; const QColor DarkRed; const QColor DarkGreen; const QColor DarkBlue; const QColor DarkCyan; const QColor DarkMagenta; const QColor DarkYellow; const QColor Transparent; namespace Svg { %TypeHeaderCode #include %End const QColor aliceblue; const QColor antiquewhite; const QColor aqua; const QColor aquamarine; const QColor azure; const QColor beige; const QColor bisque; const QColor black; const QColor blanchedalmond; const QColor blue; const QColor blueviolet; const QColor brown; const QColor burlywood; const QColor cadetblue; const QColor chartreuse; const QColor chocolate; const QColor coral; const QColor cornflowerblue; const QColor cornsilk; const QColor crimson; const QColor cyan; const QColor darkblue; const QColor darkcyan; const QColor darkgoldenrod; const QColor darkgray; const QColor darkgreen; const QColor darkgrey; const QColor darkkhaki; const QColor darkmagenta; const QColor darkolivegreen; const QColor darkorange; const QColor darkorchid; const QColor darkred; const QColor darksalmon; const QColor darkseagreen; const QColor darkslateblue; const QColor darkslategray; const QColor darkslategrey; const QColor darkturquoise; const QColor darkviolet; const QColor deeppink; const QColor deepskyblue; const QColor dimgray; const QColor dimgrey; const QColor dodgerblue; const QColor firebrick; const QColor floralwhite; const QColor forestgreen; const QColor fuchsia; const QColor gainsboro; const QColor ghostwhite; const QColor gold; const QColor goldenrod; const QColor gray; const QColor green; const QColor greenyellow; const QColor grey; const QColor honeydew; const QColor hotpink; const QColor indianred; const QColor indigo; const QColor ivory; const QColor khaki; const QColor lavender; const QColor lavenderblush; const QColor lawngreen; const QColor lemonchiffon; const QColor lightblue; const QColor lightcoral; const QColor lightcyan; const QColor lightgoldenrodyellow; const QColor lightgray; const QColor lightgreen; const QColor lightgrey; const QColor lightpink; const QColor lightsalmon; const QColor lightseagreen; const QColor lightskyblue; const QColor lightslategray; const QColor lightslategrey; const QColor lightsteelblue; const QColor lightyellow; const QColor lime; const QColor limegreen; const QColor linen; const QColor magenta; const QColor maroon; const QColor mediumaquamarine; const QColor mediumblue; const QColor mediumorchid; const QColor mediumpurple; const QColor mediumseagreen; const QColor mediumslateblue; const QColor mediumspringgreen; const QColor mediumturquoise; const QColor mediumvioletred; const QColor midnightblue; const QColor mintcream; const QColor mistyrose; const QColor moccasin; const QColor navajowhite; const QColor navy; const QColor oldlace; const QColor olive; const QColor olivedrab; const QColor orange; const QColor orangered; const QColor orchid; const QColor palegoldenrod; const QColor palegreen; const QColor paleturquoise; const QColor palevioletred; const QColor papayawhip; const QColor peachpuff; const QColor peru; const QColor pink; const QColor plum; const QColor powderblue; const QColor purple; const QColor red; const QColor rosybrown; const QColor royalblue; const QColor saddlebrown; const QColor salmon; const QColor sandybrown; const QColor seagreen; const QColor seashell; const QColor sienna; const QColor silver; const QColor skyblue; const QColor slateblue; const QColor slategray; const QColor slategrey; const QColor snow; const QColor springgreen; const QColor steelblue; const QColor tan; const QColor teal; const QColor thistle; const QColor tomato; const QColor turquoise; const QColor violet; const QColor wheat; const QColor white; const QColor whitesmoke; const QColor yellow; const QColor yellowgreen; }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3566763 PyQt6-6.6.1/sip/QtGui/qcolorspace.sip0000644000076500000240000001057414532160401016245 0ustar00philstaff// qcolorspace.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColorSpace { %TypeHeaderCode #include %End public: enum NamedColorSpace { SRgb, SRgbLinear, AdobeRgb, DisplayP3, ProPhotoRgb, }; enum class Primaries { Custom, SRgb, AdobeRgb, DciP3D65, ProPhotoRgb, }; enum class TransferFunction { Custom, Linear, Gamma, SRgb, ProPhotoRgb, }; QColorSpace(); QColorSpace(QColorSpace::NamedColorSpace namedColorSpace); QColorSpace(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma = 0.F); QColorSpace(QColorSpace::Primaries primaries, float gamma); %If (Qt_6_1_0 -) QColorSpace(QColorSpace::Primaries primaries, const QList &transferFunctionTable); %End QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, QColorSpace::TransferFunction fun, float gamma = 0.F); %If (Qt_6_1_0 -) QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, const QList &redTransferFunctionTable, const QList &greenTransferFunctionTable, const QList &blueTransferFunctionTable); %End %If (Qt_6_1_0 -) QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, const QList &transferFunctionTable); %End QColorSpace(const QColorSpace &colorSpace); ~QColorSpace(); void swap(QColorSpace &colorSpace /Constrained/); QColorSpace::Primaries primaries() const; QColorSpace::TransferFunction transferFunction() const; float gamma() const; void setTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.F); %If (Qt_6_1_0 -) void setTransferFunction(const QList &transferFunctionTable); %End %If (Qt_6_1_0 -) void setTransferFunctions(const QList &redTransferFunctionTable, const QList &greenTransferFunctionTable, const QList &blueTransferFunctionTable); %End %If (Qt_6_1_0 -) QColorSpace withTransferFunction(const QList &transferFunctionTable) const; %End QColorSpace withTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.F) const; %If (Qt_6_1_0 -) QColorSpace withTransferFunctions(const QList &redTransferFunctionTable, const QList &greenTransferFunctionTable, const QList &blueTransferFunctionTable) const; %End void setPrimaries(QColorSpace::Primaries primariesId); void setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint); bool isValid() const; static QColorSpace fromIccProfile(const QByteArray &iccProfile); QByteArray iccProfile() const; QColorTransform transformationToColorSpace(const QColorSpace &colorspace) const; %If (Qt_6_2_0 -) QString description() const; %End %If (Qt_6_2_0 -) void setDescription(const QString &description); %End }; bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2); bool operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2); QDataStream &operator<<(QDataStream &, const QColorSpace & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QColorSpace & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3699813 PyQt6-6.6.1/sip/QtGui/qcolortransform.sip0000644000076500000240000000302214532160401017153 0ustar00philstaff// qcolortransform.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColorTransform { %TypeHeaderCode #include %End public: QColorTransform(); QColorTransform(const QColorTransform &colorTransform); ~QColorTransform(); void swap(QColorTransform &other /Constrained/); QRgb map(QRgb argb) const; QRgba64 map(QRgba64 rgba64) const; QColor map(const QColor &color) const; %If (Qt_6_4_0 -) bool isIdentity() const; %End }; %If (Qt_6_4_0 -) bool operator==(const QColorTransform &ct1, const QColorTransform &ct2); %End %If (Qt_6_4_0 -) bool operator!=(const QColorTransform &ct1, const QColorTransform &ct2); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3920279 PyQt6-6.6.1/sip/QtGui/qcursor.sip0000644000076500000240000000574214532160401015431 0ustar00philstaff// qcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCursor /TypeHintIn="Union[QCursor, Qt.CursorShape]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // Qt::CursorShape to be used whenever a QCursor is expected. bool is_cursor_shape = true; int cursor_shape = sipConvertToEnum(sipPy, sipType_Qt_CursorShape); if (PyErr_Occurred()) { PyErr_Clear(); is_cursor_shape = false; } if (sipIsErr == NULL) return (is_cursor_shape || sipCanConvertToType(sipPy, sipType_QCursor, SIP_NO_CONVERTORS)); if (is_cursor_shape) { *sipCppPtr = new QCursor(static_cast(cursor_shape)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QCursor, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: QCursor(); QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1); QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1); QCursor(const QCursor &cursor); QCursor(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QCursor(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QCursor(); Qt::CursorShape shape() const; void setShape(Qt::CursorShape newShape); QBitmap bitmap() const; QBitmap mask() const; QPixmap pixmap() const; QPoint hotSpot() const; static QPoint pos(); static void setPos(int x, int y); static void setPos(const QPoint &p); static QPoint pos(const QScreen *screen); static void setPos(QScreen *screen, int x, int y); static void setPos(QScreen *screen, const QPoint &p); void swap(QCursor &other); }; QDataStream &operator<<(QDataStream &outS, const QCursor &cursor) /ReleaseGIL/; QDataStream &operator>>(QDataStream &inS, QCursor &cursor /Constrained/) /ReleaseGIL/; bool operator==(const QCursor &lhs, const QCursor &rhs); bool operator!=(const QCursor &lhs, const QCursor &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4114606 PyQt6-6.6.1/sip/QtGui/qdesktopservices.sip0000644000076500000240000000456214532160401017330 0ustar00philstaff// qdesktopservices.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDesktopServices { %TypeHeaderCode #include %End public: static bool openUrl(const QUrl &url) /ReleaseGIL/; static void setUrlHandler(const QString &scheme, QObject *receiver, const char *method); static void setUrlHandler(const QString &scheme, SIP_PYCALLABLE method /TypeHint="Callable[[QUrl], None]"/); %MethodCode // Allow a callable that must be a slot of a QObject, although we never tell // the user if it isn't. sipMethodDef pm; if (sipGetMethod(a1, &pm)) { int iserr = 0; QObject *receiver = reinterpret_cast(sipForceConvertToType( pm.pm_self, sipType_QObject, NULL, SIP_NOT_NONE, NULL, &iserr)); if (!iserr) { PyObject *f_name_obj = PyObject_GetAttrString(pm.pm_function, "__name__"); if (f_name_obj) { // We only want a borrowed reference. Py_DECREF(f_name_obj); const char *f_name = sipString_AsASCIIString(&f_name_obj); if (f_name) { QDesktopServices::setUrlHandler(*a0, receiver, f_name); Py_DECREF(f_name_obj); } } } } %End static void unsetUrlHandler(const QString &scheme); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4173965 PyQt6-6.6.1/sip/QtGui/qdrag.sip0000644000076500000240000000366314532160401015031 0ustar00philstaff// qdrag.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDrag : QObject { %TypeHeaderCode #include %End public: explicit QDrag(QObject *dragSource /TransferThis/); virtual ~QDrag(); Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction) /ReleaseGIL/; Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction) /ReleaseGIL/; void setMimeData(QMimeData *data /Transfer/); QMimeData *mimeData() const; void setPixmap(const QPixmap &); QPixmap pixmap() const; void setHotSpot(const QPoint &hotspot); QPoint hotSpot() const; QObject *source() const; QObject *target() const; void setDragCursor(const QPixmap &cursor, Qt::DropAction action); signals: void actionChanged(Qt::DropAction action); void targetChanged(QObject *newTarget); public: QPixmap dragCursor(Qt::DropAction action) const; Qt::DropActions supportedActions() const; Qt::DropAction defaultAction() const; %If (Android || Linux || WebAssembly || Windows) static void cancel(); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.415146 PyQt6-6.6.1/sip/QtGui/qevent.sip0000644000076500000240000005512714532160401015237 0ustar00philstaff// qevent.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::ActionAdded: case QEvent::ActionChanged: case QEvent::ActionRemoved: sipType = sipType_QActionEvent; break; case QEvent::Close: sipType = sipType_QCloseEvent; break; case QEvent::ContextMenu: sipType = sipType_QContextMenuEvent; break; case QEvent::DragEnter: sipType = sipType_QDragEnterEvent; break; case QEvent::DragLeave: sipType = sipType_QDragLeaveEvent; break; case QEvent::DragMove: sipType = sipType_QDragMoveEvent; break; case QEvent::Drop: sipType = sipType_QDropEvent; break; case QEvent::Enter: sipType = sipType_QEnterEvent; break; case QEvent::FileOpen: sipType = sipType_QFileOpenEvent; break; case QEvent::FocusIn: case QEvent::FocusOut: sipType = sipType_QFocusEvent; break; case QEvent::Hide: sipType = sipType_QHideEvent; break; case QEvent::HoverEnter: case QEvent::HoverLeave: case QEvent::HoverMove: sipType = sipType_QHoverEvent; break; case QEvent::IconDrag: sipType = sipType_QIconDragEvent; break; case QEvent::InputMethod: sipType = sipType_QInputMethodEvent; break; case QEvent::KeyPress: case QEvent::KeyRelease: case QEvent::ShortcutOverride: sipType = sipType_QKeyEvent; break; case QEvent::MouseButtonDblClick: case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: case QEvent::MouseMove: sipType = sipType_QMouseEvent; break; case QEvent::Move: sipType = sipType_QMoveEvent; break; case QEvent::Paint: sipType = sipType_QPaintEvent; break; case QEvent::Resize: sipType = sipType_QResizeEvent; break; case QEvent::Shortcut: sipType = sipType_QShortcutEvent; break; case QEvent::Show: sipType = sipType_QShowEvent; break; case QEvent::StatusTip: sipType = sipType_QStatusTipEvent; break; case QEvent::TabletMove: case QEvent::TabletPress: case QEvent::TabletRelease: case QEvent::TabletEnterProximity: case QEvent::TabletLeaveProximity: sipType = sipType_QTabletEvent; break; case QEvent::ToolTip: case QEvent::WhatsThis: sipType = sipType_QHelpEvent; break; case QEvent::WhatsThisClicked: sipType = sipType_QWhatsThisClickedEvent; break; case QEvent::Wheel: sipType = sipType_QWheelEvent; break; case QEvent::WindowStateChange: sipType = sipType_QWindowStateChangeEvent; break; case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: case QEvent::TouchCancel: sipType = sipType_QTouchEvent; break; case QEvent::InputMethodQuery: sipType = sipType_QInputMethodQueryEvent; break; case QEvent::Expose: sipType = sipType_QExposeEvent; break; case QEvent::ScrollPrepare: sipType = sipType_QScrollPrepareEvent; break; case QEvent::Scroll: sipType = sipType_QScrollEvent; break; case QEvent::NativeGesture: sipType = sipType_QNativeGestureEvent; break; case QEvent::PlatformSurface: sipType = sipType_QPlatformSurfaceEvent; break; default: sipType = 0; } %End public: virtual ~QInputEvent(); Qt::KeyboardModifiers modifiers() const; quint64 timestamp() const; const QInputDevice *device() const; QInputDevice::DeviceType deviceType() const; virtual QInputEvent *clone() const /Factory/; private: QInputEvent(const QInputEvent &); }; class QKeyEvent : QInputEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1, const QInputDevice *device = QInputDevice::primaryKeyboard()); QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text = QString(), bool autorep = false, quint16 count = 1); virtual ~QKeyEvent(); int key() const; Qt::KeyboardModifiers modifiers() const; QString text() const; bool isAutoRepeat() const; int count() const /__len__/; bool matches(QKeySequence::StandardKey key) const; quint32 nativeModifiers() const; quint32 nativeScanCode() const; quint32 nativeVirtualKey() const; QKeyCombination keyCombination() const; virtual QKeyEvent *clone() const /Factory/; }; bool operator==(QKeyEvent *e, QKeySequence::StandardKey key); bool operator==(QKeySequence::StandardKey key, QKeyEvent *e); class QFocusEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QFocusEvent(QEvent::Type type, Qt::FocusReason reason = Qt::OtherFocusReason); virtual ~QFocusEvent(); bool gotFocus() const; bool lostFocus() const; Qt::FocusReason reason() const; virtual QFocusEvent *clone() const /Factory/; }; class QPaintEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QPaintEvent(const QRegion &paintRegion); explicit QPaintEvent(const QRect &paintRect); virtual ~QPaintEvent(); const QRect &rect() const; const QRegion ®ion() const; virtual QPaintEvent *clone() const /Factory/; }; class QMoveEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QMoveEvent(const QPoint &pos, const QPoint &oldPos); virtual ~QMoveEvent(); const QPoint &pos() const; const QPoint &oldPos() const; virtual QMoveEvent *clone() const /Factory/; }; class QResizeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QResizeEvent(const QSize &size, const QSize &oldSize); virtual ~QResizeEvent(); const QSize &size() const; const QSize &oldSize() const; virtual QResizeEvent *clone() const /Factory/; }; class QCloseEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QCloseEvent(); virtual ~QCloseEvent(); %If (Qt_6_4_0 -) virtual QCloseEvent *clone() const /Factory/; %End }; class QIconDragEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QIconDragEvent(); virtual ~QIconDragEvent(); %If (Qt_6_4_0 -) virtual QIconDragEvent *clone() const /Factory/; %End }; class QShowEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QShowEvent(); virtual ~QShowEvent(); %If (Qt_6_4_0 -) virtual QShowEvent *clone() const /Factory/; %End }; class QHideEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QHideEvent(); virtual ~QHideEvent(); %If (Qt_6_4_0 -) virtual QHideEvent *clone() const /Factory/; %End }; class QContextMenuEvent : QInputEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier); QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos); virtual ~QContextMenuEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; QContextMenuEvent::Reason reason() const; virtual QContextMenuEvent *clone() const /Factory/; }; class QInputMethodEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum AttributeType { TextFormat, Cursor, Language, Ruby, Selection, }; class Attribute { %TypeHeaderCode #include %End public: Attribute(QInputMethodEvent::AttributeType t, int s, int l, QVariant val); Attribute(QInputMethodEvent::AttributeType typ, int s, int l); QInputMethodEvent::AttributeType type; int start; int length; QVariant value; }; QInputMethodEvent(); QInputMethodEvent(const QString &preeditText, const QList &attributes); virtual ~QInputMethodEvent(); void setCommitString(const QString &commitString, int from = 0, int length = 0); const QList &attributes() const; const QString &preeditString() const; const QString &commitString() const; int replacementStart() const; int replacementLength() const; virtual QInputMethodEvent *clone() const /Factory/; }; bool operator==(const QInputMethodEvent::Attribute &lhs, const QInputMethodEvent::Attribute &rhs); bool operator!=(const QInputMethodEvent::Attribute &lhs, const QInputMethodEvent::Attribute &rhs); class QInputMethodQueryEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QInputMethodQueryEvent(Qt::InputMethodQueries queries); virtual ~QInputMethodQueryEvent(); Qt::InputMethodQueries queries() const; void setValue(Qt::InputMethodQuery query, const QVariant &value); QVariant value(Qt::InputMethodQuery query) const; virtual QInputMethodQueryEvent *clone() const /Factory/; }; class QDropEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QDropEvent(const QPointF &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::Drop); virtual ~QDropEvent(); Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QObject *source() const; const QMimeData *mimeData() const; QPointF position() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; virtual QDropEvent *clone() const /Factory/; }; class QDragMoveEvent : QDropEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = QEvent::DragMove); virtual ~QDragMoveEvent(); QRect answerRect() const; void accept(); void ignore(); void accept(const QRect &r); void ignore(const QRect &r); virtual QDragMoveEvent *clone() const /Factory/; }; class QDragEnterEvent : QDragMoveEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); virtual ~QDragEnterEvent(); %If (Qt_6_4_0 -) virtual QDragEnterEvent *clone() const /Factory/; %End }; class QDragLeaveEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QDragLeaveEvent(); virtual ~QDragLeaveEvent(); %If (Qt_6_4_0 -) virtual QDragLeaveEvent *clone() const /Factory/; %End }; class QHelpEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QHelpEvent(QEvent::Type type, const QPoint &pos, const QPoint &globalPos); virtual ~QHelpEvent(); int x() const; int y() const; int globalX() const; int globalY() const; const QPoint &pos() const; const QPoint &globalPos() const; virtual QHelpEvent *clone() const /Factory/; }; class QStatusTipEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QStatusTipEvent(const QString &tip); virtual ~QStatusTipEvent(); QString tip() const; virtual QStatusTipEvent *clone() const /Factory/; }; class QWhatsThisClickedEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QWhatsThisClickedEvent(const QString &href); virtual ~QWhatsThisClickedEvent(); QString href() const; virtual QWhatsThisClickedEvent *clone() const /Factory/; }; class QActionEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QActionEvent(int type, QAction *action, QAction *before = 0); virtual ~QActionEvent(); QAction *action() const; QAction *before() const; virtual QActionEvent *clone() const /Factory/; }; class QFileOpenEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QFileOpenEvent(); QString file() const; QUrl url() const; bool openFile(QFile &file, QIODeviceBase::OpenMode flags) const /ReleaseGIL/; virtual QFileOpenEvent *clone() const /Factory/; private: QFileOpenEvent(const QFileOpenEvent &); }; class QShortcutEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false); %If (Qt_6_5_0 -) QShortcutEvent(const QKeySequence &key, const QShortcut *shortcut = 0, bool ambiguous = false); %End virtual ~QShortcutEvent(); bool isAmbiguous() const; const QKeySequence &key() const; int shortcutId() const; virtual QShortcutEvent *clone() const /Factory/; }; class QWindowStateChangeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QWindowStateChangeEvent(); Qt::WindowStates oldState() const; virtual QWindowStateChangeEvent *clone() const /Factory/; private: QWindowStateChangeEvent(const QWindowStateChangeEvent &); }; class QExposeEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QExposeEvent(const QRegion &rgn); virtual ~QExposeEvent(); virtual QExposeEvent *clone() const /Factory/; }; class QScrollPrepareEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: explicit QScrollPrepareEvent(const QPointF &startPos); virtual ~QScrollPrepareEvent(); QPointF startPos() const; QSizeF viewportSize() const; QRectF contentPosRange() const; QPointF contentPos() const; void setViewportSize(const QSizeF &size); void setContentPosRange(const QRectF &rect); void setContentPos(const QPointF &pos); virtual QScrollPrepareEvent *clone() const /Factory/; }; class QScrollEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum ScrollState { ScrollStarted, ScrollUpdated, ScrollFinished, }; QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, QScrollEvent::ScrollState scrollState); virtual ~QScrollEvent(); QPointF contentPos() const; QPointF overshootDistance() const; QScrollEvent::ScrollState scrollState() const; virtual QScrollEvent *clone() const /Factory/; }; class QPlatformSurfaceEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum SurfaceEventType { SurfaceCreated, SurfaceAboutToBeDestroyed, }; explicit QPlatformSurfaceEvent(QPlatformSurfaceEvent::SurfaceEventType surfaceEventType); virtual ~QPlatformSurfaceEvent(); QPlatformSurfaceEvent::SurfaceEventType surfaceEventType() const; virtual QPlatformSurfaceEvent *clone() const /Factory/; }; class QPointerEvent : QInputEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QPointerEvent(); const QPointingDevice *pointingDevice() const; QPointingDevice::PointerType pointerType() const; qsizetype pointCount() const; QEventPoint &point(qsizetype i); const QList &points() const; QEventPoint *pointById(int id); virtual bool isBeginEvent() const; virtual bool isUpdateEvent() const; virtual bool isEndEvent() const; bool allPointsAccepted() const; virtual void setAccepted(bool accepted); virtual QPointerEvent *clone() const /Factory/; private: QPointerEvent(const QPointerEvent &); }; class QSinglePointEvent : QPointerEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: %If (Qt_6_4_0 -) virtual ~QSinglePointEvent(); %End Qt::MouseButton button() const; Qt::MouseButtons buttons() const; QPointF position() const; QPointF scenePosition() const; QPointF globalPosition() const; virtual bool isBeginEvent() const; virtual bool isUpdateEvent() const; virtual bool isEndEvent() const; QObject *exclusivePointGrabber() const; void setExclusivePointGrabber(QObject *exclusiveGrabber); virtual QSinglePointEvent *clone() const /Factory/; private: QSinglePointEvent(const QSinglePointEvent &); }; class QEnterEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QEnterEvent(const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); virtual ~QEnterEvent(); virtual QEnterEvent *clone() const /Factory/; }; class QMouseEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QMouseEvent(QEvent::Type type, const QPointF &localPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); virtual ~QMouseEvent(); QPoint pos() const; Qt::MouseEventFlags flags() const; virtual QMouseEvent *clone() const /Factory/; }; class QHoverEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: %If (Qt_6_3_0 -) QHoverEvent(QEvent::Type type, const QPointF &pos, const QPointF &globalPos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); %End QHoverEvent(QEvent::Type type, const QPointF &pos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); virtual ~QHoverEvent(); virtual bool isUpdateEvent() const; QPoint oldPos() const; QPointF oldPosF() const; virtual QHoverEvent *clone() const /Factory/; }; class QWheelEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase, bool inverted, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, const QPointingDevice *device = QPointingDevice::primaryPointingDevice()); virtual ~QWheelEvent(); QPoint pixelDelta() const; QPoint angleDelta() const; Qt::ScrollPhase phase() const; bool inverted() const; virtual bool isBeginEvent() const; virtual bool isUpdateEvent() const; virtual bool isEndEvent() const; virtual QWheelEvent *clone() const /Factory/; }; class QTabletEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QTabletEvent(QEvent::Type t, const QPointingDevice *device, const QPointF &pos, const QPointF &globalPos, qreal pressure, float xTilt, float yTilt, float tangentialPressure, qreal rotation, float z, Qt::KeyboardModifiers keyState, Qt::MouseButton button, Qt::MouseButtons buttons); virtual ~QTabletEvent(); qreal pressure() const; qreal rotation() const; qreal z() const; qreal tangentialPressure() const; qreal xTilt() const; qreal yTilt() const; virtual QTabletEvent *clone() const /Factory/; }; class QNativeGestureEvent : QSinglePointEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: %If (Qt_6_2_0 -) QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *dev, int fingerCount, const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, qreal value, const QPointF &delta, quint64 sequenceId = UINT64_MAX); %End QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *dev, const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, qreal value, quint64 sequenceId, quint64 intArgument); virtual ~QNativeGestureEvent(); Qt::NativeGestureType gestureType() const; qreal value() const; virtual QNativeGestureEvent *clone() const /Factory/; %If (Qt_6_2_0 -) int fingerCount() const; %End %If (Qt_6_2_0 -) QPointF delta() const; %End }; class QTouchEvent : QPointerEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QTouchEvent(QEvent::Type eventType, const QPointingDevice *device = 0, Qt::KeyboardModifiers modifiers = Qt::NoModifier, const QList &touchPoints = {}); virtual ~QTouchEvent(); QObject *target() const; QEventPoint::States touchPointStates() const; virtual bool isBeginEvent() const; virtual bool isUpdateEvent() const; virtual bool isEndEvent() const; virtual QTouchEvent *clone() const /Factory/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3999407 PyQt6-6.6.1/sip/QtGui/qeventpoint.sip0000644000076500000240000000467714532160401016315 0ustar00philstaff// qeventpoint.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QEventPoint { %TypeHeaderCode #include %End public: enum State /BaseType=Flag/ { Unknown, Stationary, Pressed, Updated, Released, }; typedef QFlags States; QEventPoint(int pointId, QEventPoint::State state, const QPointF &scenePosition, const QPointF &globalPosition); QEventPoint(const QEventPoint &other); bool operator==(const QEventPoint &other) const; bool operator!=(const QEventPoint &other) const; ~QEventPoint(); void swap(QEventPoint &other /Constrained/); QPointF position() const; QPointF pressPosition() const; QPointF grabPosition() const; QPointF lastPosition() const; QPointF scenePosition() const; QPointF scenePressPosition() const; QPointF sceneGrabPosition() const; QPointF sceneLastPosition() const; QPointF globalPosition() const; QPointF globalPressPosition() const; QPointF globalGrabPosition() const; QPointF globalLastPosition() const; QPointF normalizedPosition() const; QVector2D velocity() const; QEventPoint::State state() const; const QPointingDevice *device() const; int id() const; QPointingDeviceUniqueId uniqueId() const; ulong timestamp() const; ulong lastTimestamp() const; ulong pressTimestamp() const; qreal timeHeld() const; qreal pressure() const; qreal rotation() const; QSizeF ellipseDiameters() const; bool isAccepted() const; void setAccepted(bool accepted = true); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3737888 PyQt6-6.6.1/sip/QtGui/qfilesystemmodel.sip0000644000076500000240000001151714532160401017316 0ustar00philstaff// qfilesystemmodel.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileSystemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum Roles /BaseType=IntEnum/ { FileIconRole, FilePathRole, FileNameRole, FilePermissions, }; explicit QFileSystemModel(QObject *parent /TransferThis/ = 0); virtual ~QFileSystemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(const QString &path, int column = 0) const; virtual QModelIndex parent(const QModelIndex &child) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual bool canFetchMore(const QModelIndex &parent) const; virtual void fetchMore(const QModelIndex &parent); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant myComputer(int role = Qt::DisplayRole) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual Qt::DropActions supportedDropActions() const; QModelIndex setRootPath(const QString &path); QString rootPath() const; QDir rootDirectory() const; void setIconProvider(QAbstractFileIconProvider *provider /KeepReference/); QAbstractFileIconProvider *iconProvider() const; void setFilter(QDir::Filters filters); QDir::Filters filter() const; void setResolveSymlinks(bool enable); bool resolveSymlinks() const; void setReadOnly(bool enable); bool isReadOnly() const; void setNameFilterDisables(bool enable); bool nameFilterDisables() const; void setNameFilters(const QStringList &filters); QStringList nameFilters() const; QString filePath(const QModelIndex &index) const; bool isDir(const QModelIndex &index) const; qint64 size(const QModelIndex &index) const; QString type(const QModelIndex &index) const; QDateTime lastModified(const QModelIndex &index) const; %If (Qt_6_6_0 -) QDateTime lastModified(const QModelIndex &index, const QTimeZone &tz) const; %End QModelIndex mkdir(const QModelIndex &parent, const QString &name); QFileDevice::Permissions permissions(const QModelIndex &index) const; bool rmdir(const QModelIndex &index); QString fileName(const QModelIndex &aindex) const; QIcon fileIcon(const QModelIndex &aindex) const; QFileInfo fileInfo(const QModelIndex &aindex) const; bool remove(const QModelIndex &index); signals: void fileRenamed(const QString &path, const QString &oldName, const QString &newName); void rootPathChanged(const QString &newPath); void directoryLoaded(const QString &path); protected: virtual bool event(QEvent *event); virtual void timerEvent(QTimerEvent *event); public: virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const; enum Option /BaseType=Flag/ { DontWatchForChanges, DontResolveSymlinks, DontUseCustomDirectoryIcons, }; typedef QFlags Options; void setOption(QFileSystemModel::Option option, bool on = true); bool testOption(QFileSystemModel::Option option) const; void setOptions(QFileSystemModel::Options options); QFileSystemModel::Options options() const; virtual QHash roleNames() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3553398 PyQt6-6.6.1/sip/QtGui/qfont.sip0000644000076500000240000001464714532160401015066 0ustar00philstaff// qfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFont { %TypeHeaderCode #include %End public: enum StyleHint { Helvetica, SansSerif, Times, Serif, Courier, TypeWriter, OldEnglish, Decorative, System, AnyStyle, Cursive, Monospace, Fantasy, }; enum StyleStrategy /BaseType=Flag/ { PreferDefault, PreferBitmap, PreferDevice, PreferOutline, ForceOutline, PreferMatch, PreferQuality, PreferAntialias, NoAntialias, NoSubpixelAntialias, NoFontMerging, PreferNoShaping, }; enum Weight /BaseType=IntEnum/ { Thin, ExtraLight, Light, Normal, Medium, DemiBold, Bold, ExtraBold, Black, }; enum Style { StyleNormal, StyleItalic, StyleOblique, }; enum Stretch /BaseType=IntEnum/ { AnyStretch, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, Unstretched, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded, }; QFont(); %If (Qt_6_1_0 -) QFont(const QStringList &families, int pointSize = -1, int weight = -1, bool italic = false); %End QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false); QFont(const QFont &); QFont(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QFont(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QFont(); QString family() const; void setFamily(const QString &); int pointSize() const; void setPointSize(int); qreal pointSizeF() const; void setPointSizeF(qreal); int pixelSize() const; void setPixelSize(int); int weight() const [QFont::Weight ()]; void setWeight(int weight); %MethodCode sipCpp->setWeight(QFont::Weight(a0)); %End void setStyle(QFont::Style style); QFont::Style style() const; bool underline() const; void setUnderline(bool); bool overline() const; void setOverline(bool); bool strikeOut() const; void setStrikeOut(bool); bool fixedPitch() const; void setFixedPitch(bool); bool kerning() const; void setKerning(bool); QFont::StyleHint styleHint() const; QFont::StyleStrategy styleStrategy() const; void setStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setStyleStrategy(QFont::StyleStrategy s); int stretch() const; void setStretch(int); bool exactMatch() const; bool operator==(const QFont &) const; bool operator!=(const QFont &) const; bool operator<(const QFont &) const; bool isCopyOf(const QFont &) const; QString key() const; QString toString() const; bool fromString(const QString &); static QString substitute(const QString &); static QStringList substitutes(const QString &); static QStringList substitutions(); static void insertSubstitution(const QString &, const QString &); static void insertSubstitutions(const QString &, const QStringList &); static void removeSubstitutions(const QString &); static void initialize(); static void cleanup(); static void cacheStatistics(); QString defaultFamily() const; QFont resolve(const QFont &) const; bool bold() const; void setBold(bool enable); bool italic() const; void setItalic(bool b); enum Capitalization { MixedCase, AllUppercase, AllLowercase, SmallCaps, Capitalize, }; enum SpacingType { PercentageSpacing, AbsoluteSpacing, }; qreal letterSpacing() const; QFont::SpacingType letterSpacingType() const; void setLetterSpacing(QFont::SpacingType type, qreal spacing); qreal wordSpacing() const; void setWordSpacing(qreal spacing); void setCapitalization(QFont::Capitalization); QFont::Capitalization capitalization() const; enum HintingPreference { PreferDefaultHinting, PreferNoHinting, PreferVerticalHinting, PreferFullHinting, }; QString styleName() const; void setStyleName(const QString &styleName); void setHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference hintingPreference() const; void swap(QFont &other /Constrained/); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End QStringList families() const; void setFamilies(const QStringList &); %If (Qt_6_6_0 -) void setFeature(quint32 tag, quint32 value); %End %If (Qt_6_6_0 -) void setFeature(const char *feature /Encoding="None"/, quint32 value); %End %If (Qt_6_6_0 -) void unsetFeature(const char *feature /Encoding="None"/); %End %If (Qt_6_6_0 -) void unsetFeature(quint32 tag); %End %If (Qt_6_6_0 -) quint32 featureValue(quint32 tag) const; %End %If (Qt_6_6_0 -) bool isFeatureSet(quint32 tag) const; %End %If (Qt_6_6_0 -) QList featureTags() const; %End %If (Qt_6_6_0 -) void clearFeatures(); %End %If (Qt_6_6_0 -) static QByteArray tagToString(quint32 tag); %End %If (Qt_6_6_0 -) static quint32 stringToTag(const char *tagString /Encoding="None"/); %End }; QDataStream &operator<<(QDataStream &, const QFont &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QFont & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.356037 PyQt6-6.6.1/sip/QtGui/qfontdatabase.sip0000644000076500000240000000707514532160401016550 0ustar00philstaff// qfontdatabase.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDatabase { %TypeHeaderCode #include %End public: enum WritingSystem { Any, Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Syriac, Thaana, Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar, Georgian, Khmer, SimplifiedChinese, TraditionalChinese, Japanese, Korean, Vietnamese, Other, Symbol, Ogham, Runic, Nko, }; static QList standardSizes(); static QList writingSystems(const QString &family); static QList writingSystems(); static QStringList families(QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any); static QStringList styles(const QString &family); static QList pointSizes(const QString &family, const QString &style = QString()); static QList smoothSizes(const QString &family, const QString &style); static QString styleString(const QFontInfo &fontInfo); static QString styleString(const QFont &font); static QFont font(const QString &family, const QString &style, int pointSize); static bool isBitmapScalable(const QString &family, const QString &style = QString()); static bool isSmoothlyScalable(const QString &family, const QString &style = QString()); static bool isScalable(const QString &family, const QString &style = QString()); static bool isFixedPitch(const QString &family, const QString &style = QString()); static bool italic(const QString &family, const QString &style); static bool bold(const QString &family, const QString &style); static int weight(const QString &family, const QString &style); static QString writingSystemName(QFontDatabase::WritingSystem writingSystem); static QString writingSystemSample(QFontDatabase::WritingSystem writingSystem); static int addApplicationFont(const QString &fileName); static int addApplicationFontFromData(const QByteArray &fontData); static QStringList applicationFontFamilies(int id); static bool removeApplicationFont(int id); static bool removeAllApplicationFonts(); enum SystemFont { GeneralFont, FixedFont, TitleFont, SmallestReadableFont, }; static QFont systemFont(QFontDatabase::SystemFont type); static bool isPrivateFamily(const QString &family); private: QFontDatabase(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3594723 PyQt6-6.6.1/sip/QtGui/qfontinfo.sip0000644000076500000240000000272714532160401015736 0ustar00philstaff// qfontinfo.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontInfo { %TypeHeaderCode #include %End public: QFontInfo(const QFont &); QFontInfo(const QFontInfo &); ~QFontInfo(); QString family() const; int pixelSize() const; int pointSize() const; qreal pointSizeF() const; bool italic() const; QFont::Style style() const; int weight() const; bool bold() const; bool fixedPitch() const; QFont::StyleHint styleHint() const; bool exactMatch() const; QString styleName() const; void swap(QFontInfo &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3747962 PyQt6-6.6.1/sip/QtGui/qfontmetrics.sip0000644000076500000240000001503114532160401016441 0ustar00philstaff// qfontmetrics.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontMetrics { %TypeHeaderCode #include %End public: explicit QFontMetrics(const QFont &); QFontMetrics(const QFont &font, const QPaintDevice *pd); QFontMetrics(const QFontMetrics &); ~QFontMetrics(); int ascent() const; int descent() const; int height() const; int leading() const; int lineSpacing() const; int minLeftBearing() const; int minRightBearing() const; int maxWidth() const; int xHeight() const; bool inFont(QChar) const; int leftBearing(QChar) const; int rightBearing(QChar) const; %If (Qt_6_3_0 -) QRect boundingRect(const QString &text, const QTextOption &textOption) const; %End QRect boundingRect(QChar) const /PyName=boundingRectChar/; QRect boundingRect(const QString &text) const; QRect boundingRect(const QRect &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRect(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QRect boundingRect(int x, int y, int width, int height, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a7); sipRes = new QRect(sipCpp->boundingRect(a0, a1, a2, a3, a4, *a5, a6, tabarray)); if (!tabarray) delete[] tabarray; %End QSize size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSize(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End int underlinePos() const; int overlinePos() const; int strikeOutPos() const; int lineWidth() const; int averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const; bool operator==(const QFontMetrics &other) const; bool operator!=(const QFontMetrics &other) const; %If (Qt_6_3_0 -) QRect tightBoundingRect(const QString &text, const QTextOption &textOption) const; %End QRect tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetrics &other /Constrained/); int capHeight() const; %If (Qt_6_3_0 -) int horizontalAdvance(const QString &, const QTextOption &textOption) const; %End int horizontalAdvance(const QString &, int length = -1) const; qreal fontDpi() const; }; class QFontMetricsF { %TypeHeaderCode #include %End public: explicit QFontMetricsF(const QFont &); QFontMetricsF(const QFont &font, const QPaintDevice *pd); QFontMetricsF(const QFontMetrics &); QFontMetricsF(const QFontMetricsF &); ~QFontMetricsF(); qreal ascent() const; qreal descent() const; qreal height() const; qreal leading() const; qreal lineSpacing() const; qreal minLeftBearing() const; qreal minRightBearing() const; qreal maxWidth() const; qreal xHeight() const; bool inFont(QChar) const; qreal leftBearing(QChar) const; qreal rightBearing(QChar) const; %If (Qt_6_3_0 -) QRectF boundingRect(const QString &text, const QTextOption &textOption) const; %End QRectF boundingRect(QChar) const /PyName=boundingRectChar/; QRectF boundingRect(const QString &string) const; QRectF boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a4); sipRes = new QRectF(sipCpp->boundingRect(*a0, a1, *a2, a3, tabarray)); if (!tabarray) delete[] tabarray; %End QSizeF size(int flags, const QString &text, int tabStops = 0, SIP_PYLIST tabArray /AllowNone,TypeHint="Optional[List[int]]"/ = 0) const; %MethodCode int *tabarray = qtgui_tabarray(a3); sipRes = new QSizeF(sipCpp->size(a0, *a1, a2, tabarray)); if (!tabarray) delete[] tabarray; %End qreal underlinePos() const; qreal overlinePos() const; qreal strikeOutPos() const; qreal lineWidth() const; qreal averageCharWidth() const; QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const; bool operator==(const QFontMetricsF &other) const; bool operator!=(const QFontMetricsF &other) const; %If (Qt_6_3_0 -) QRectF tightBoundingRect(const QString &text, const QTextOption &textOption) const; %End QRectF tightBoundingRect(const QString &text) const; bool inFontUcs4(uint character) const; void swap(QFontMetricsF &other /Constrained/); qreal capHeight() const; %If (Qt_6_3_0 -) qreal horizontalAdvance(const QString &string, const QTextOption &textOption) const; %End qreal horizontalAdvance(const QString &string, int length = -1) const; qreal fontDpi() const; }; %ModuleHeaderCode // Used by QFontMetrics and QFontMetricsF. int *qtgui_tabarray(PyObject *l); %End %ModuleCode // Convert an optional Python list to a 0 terminated array of integers on the // heap. int *qtgui_tabarray(PyObject *l) { if (!l || l == Py_None) return 0; int *arr = new int[PyList_Size(l) + 1]; Py_ssize_t i; for (i = 0; i < PyList_Size(l); ++i) arr[i] = PyLong_AsLong(PyList_GetItem(l, i)); arr[i] = 0; return arr; } %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3955748 PyQt6-6.6.1/sip/QtGui/qgenericmatrix.sip0000644000076500000240000006167014532160401016757 0ustar00philstaff// qgenericmatrix.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // The implementation of QMatrix4x3. class QMatrix4x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix4x3(); QMatrix4x3(const QMatrix4x3 &other); explicit QMatrix4x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix4x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix4x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix3x4 transposed() const; QMatrix4x3 &operator+=(const QMatrix4x3 &); QMatrix4x3 &operator-=(const QMatrix4x3 &); QMatrix4x3 &operator*=(float); QMatrix4x3 &operator/=(float); bool operator==(const QMatrix4x3 &) const; bool operator!=(const QMatrix4x3 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix4x3 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix4x3 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix4x2. class QMatrix4x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix4x2(); QMatrix4x2(const QMatrix4x2 &other); explicit QMatrix4x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix4x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix4x2(" "%R, %R, " "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix2x4 transposed() const; QMatrix4x2 &operator+=(const QMatrix4x2 &); QMatrix4x2 &operator-=(const QMatrix4x2 &); QMatrix4x2 &operator*=(float); QMatrix4x2 &operator/=(float); bool operator==(const QMatrix4x2 &) const; bool operator!=(const QMatrix4x2 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix4x2 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix4x2 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix3x4. class QMatrix3x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[12]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11]); %End public: QMatrix3x4(); QMatrix3x4(const QMatrix3x4 &other); explicit QMatrix3x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[12]; if ((sipError = qtgui_matrixDataFromSequence(a0, 12, values)) == sipErrorNone) sipCpp = new QMatrix3x4(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[12]; PYQT_FLOAT data[12]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 12; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix3x4(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11]); } for (i = 0; i < 12; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(12, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[12]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(12, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix4x3 transposed() const; QMatrix3x4 &operator+=(const QMatrix3x4 &); QMatrix3x4 &operator-=(const QMatrix3x4 &); QMatrix3x4 &operator*=(float); QMatrix3x4 &operator/=(float); bool operator==(const QMatrix3x4 &) const; bool operator!=(const QMatrix3x4 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix3x4 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix3x4 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix3x3. class QMatrix3x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[9]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("ddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8]); %End public: QMatrix3x3(); QMatrix3x3(const QMatrix3x3 &other); explicit QMatrix3x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[9]; if ((sipError = qtgui_matrixDataFromSequence(a0, 9, values)) == sipErrorNone) sipCpp = new QMatrix3x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[9]; PYQT_FLOAT data[9]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 9; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix3x3(" "%R, %R, %R, " "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8]); } for (i = 0; i < 9; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(9, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[9]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(9, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix3x3 transposed() const; QMatrix3x3 &operator+=(const QMatrix3x3 &); QMatrix3x3 &operator-=(const QMatrix3x3 &); QMatrix3x3 &operator*=(float); QMatrix3x3 &operator/=(float); bool operator==(const QMatrix3x3 &) const; bool operator!=(const QMatrix3x3 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix3x3 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix3x3 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix3x2. class QMatrix3x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix3x2(); QMatrix3x2(const QMatrix3x2 &other); explicit QMatrix3x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix3x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix3x2(" "%R, %R, " "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 3, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix2x3 transposed() const; QMatrix3x2 &operator+=(const QMatrix3x2 &); QMatrix3x2 &operator-=(const QMatrix3x2 &); QMatrix3x2 &operator*=(float); QMatrix3x2 &operator/=(float); bool operator==(const QMatrix3x2 &) const; bool operator!=(const QMatrix3x2 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix3x2 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix3x2 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix2x4. class QMatrix2x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[8]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7]); %End public: QMatrix2x4(); QMatrix2x4(const QMatrix2x4 &other); explicit QMatrix2x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[8]; if ((sipError = qtgui_matrixDataFromSequence(a0, 8, values)) == sipErrorNone) sipCpp = new QMatrix2x4(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[8]; PYQT_FLOAT data[8]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 8; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix2x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7]); } for (i = 0; i < 8; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(8, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[8]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(8, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix4x2 transposed() const; QMatrix2x4 &operator+=(const QMatrix2x4 &); QMatrix2x4 &operator-=(const QMatrix2x4 &); QMatrix2x4 &operator*=(float); QMatrix2x4 &operator/=(float); bool operator==(const QMatrix2x4 &) const; bool operator!=(const QMatrix2x4 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix2x4 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix2x4 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix2x3. class QMatrix2x3 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[6]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5]); %End public: QMatrix2x3(); QMatrix2x3(const QMatrix2x3 &other); explicit QMatrix2x3(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[6]; if ((sipError = qtgui_matrixDataFromSequence(a0, 6, values)) == sipErrorNone) sipCpp = new QMatrix2x3(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[6]; PYQT_FLOAT data[6]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 6; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix2x3(" "%R, %R, %R, " "%R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5]); } for (i = 0; i < 6; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(6, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[6]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(6, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 3, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix3x2 transposed() const; QMatrix2x3 &operator+=(const QMatrix2x3 &); QMatrix2x3 &operator-=(const QMatrix2x3 &); QMatrix2x3 &operator*=(float); QMatrix2x3 &operator/=(float); bool operator==(const QMatrix2x3 &) const; bool operator!=(const QMatrix2x3 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix2x3 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix2x3 & /Constrained/) /ReleaseGIL/; // The implementation of QMatrix2x2. class QMatrix2x2 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[4]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3]); %End public: QMatrix2x2(); QMatrix2x2(const QMatrix2x2 &other); explicit QMatrix2x2(SIP_PYOBJECT values /TypeHint="Sequence[float]"/); %MethodCode PYQT_FLOAT values[4]; if ((sipError = qtgui_matrixDataFromSequence(a0, 4, values)) == sipErrorNone) sipCpp = new QMatrix2x2(values); %End SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[4]; PYQT_FLOAT data[4]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 4; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix2x2(" "%R, %R, " "%R, %R)", m[0], m[1], m[2], m[3]); } for (i = 0; i < 4; ++i) Py_XDECREF(m[i]); %End SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(4, sipCpp->constData(), &sipRes); %End SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode PYQT_FLOAT values[4]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(4, values, &sipRes); %End SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, float); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 2, 2, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix2x2 transposed() const; QMatrix2x2 &operator+=(const QMatrix2x2 &); QMatrix2x2 &operator-=(const QMatrix2x2 &); QMatrix2x2 &operator*=(float); QMatrix2x2 &operator/=(float); bool operator==(const QMatrix2x2 &) const; bool operator!=(const QMatrix2x2 &) const; }; QDataStream &operator<<(QDataStream &, const QMatrix2x2 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix2x2 & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4004955 PyQt6-6.6.1/sip/QtGui/qglyphrun.sip0000644000076500000240000000506314532160401015760 0ustar00philstaff// qglyphrun.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QGlyphRun { %TypeHeaderCode #include %End public: QGlyphRun(); QGlyphRun(const QGlyphRun &other); ~QGlyphRun(); QRawFont rawFont() const; void setRawFont(const QRawFont &rawFont); QList glyphIndexes() const; void setGlyphIndexes(const QList &glyphIndexes); QList positions() const; void setPositions(const QList &positions); void clear(); bool operator==(const QGlyphRun &other) const; bool operator!=(const QGlyphRun &other) const; void setOverline(bool overline); bool overline() const; void setUnderline(bool underline); bool underline() const; void setStrikeOut(bool strikeOut); bool strikeOut() const; enum GlyphRunFlag /BaseType=Flag/ { Overline, Underline, StrikeOut, RightToLeft, SplitLigature, }; typedef QFlags GlyphRunFlags; void setRightToLeft(bool on); bool isRightToLeft() const; void setFlag(QGlyphRun::GlyphRunFlag flag, bool enabled = true); void setFlags(QGlyphRun::GlyphRunFlags flags); QGlyphRun::GlyphRunFlags flags() const; void setBoundingRect(const QRectF &boundingRect); QRectF boundingRect() const; bool isEmpty() const; void swap(QGlyphRun &other /Constrained/); %If (Qt_6_5_0 -) QList stringIndexes() const; %End %If (Qt_6_5_0 -) void setStringIndexes(const QList &stringIndexes); %End %If (Qt_6_5_0 -) void setSourceString(const QString &sourceString); %End %If (Qt_6_5_0 -) QString sourceString() const; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4185731 PyQt6-6.6.1/sip/QtGui/qguiapplication.sip0000644000076500000240000002260314532160401017117 0ustar00philstaff// qguiapplication.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGuiApplication : QCoreApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractTextDocumentLayout, &sipType_QAbstractTextDocumentLayout, -1, 1}, {sipName_QAction, &sipType_QAction, -1, 2}, {sipName_QActionGroup, &sipType_QActionGroup, -1, 3}, {sipName_QClipboard, &sipType_QClipboard, -1, 4}, {sipName_QValidator, &sipType_QValidator, 26, 5}, {sipName_QDrag, &sipType_QDrag, -1, 6}, {sipName_QFileSystemModel, &sipType_QFileSystemModel, -1, 7}, {sipName_QGuiApplication, &sipType_QGuiApplication, -1, 8}, {sipName_QInputDevice, &sipType_QInputDevice, 29, 9}, {sipName_QInputMethod, &sipType_QInputMethod, -1, 10}, {sipName_QMovie, &sipType_QMovie, -1, 11}, {sipName_QOffscreenSurface, &sipType_QOffscreenSurface, -1, 12}, #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContext, &sipType_QOpenGLContext, -1, 13}, #else {0, 0, -1, 13}, #endif #if defined(SIP_FEATURE_PyQt_OpenGL) {sipName_QOpenGLContextGroup, &sipType_QOpenGLContextGroup, -1, 14}, #else {0, 0, -1, 14}, #endif {sipName_QWindow, &sipType_QWindow, 30, 15}, {sipName_QPdfWriter, &sipType_QPdfWriter, -1, 16}, {sipName_QScreen, &sipType_QScreen, -1, 17}, #if defined(SIP_FEATURE_PyQt_SessionManager) {sipName_QSessionManager, &sipType_QSessionManager, -1, 18}, #else {0, 0, -1, 18}, #endif {sipName_QShortcut, &sipType_QShortcut, -1, 19}, {sipName_QStandardItemModel, &sipType_QStandardItemModel, -1, 20}, {sipName_QStyleHints, &sipType_QStyleHints, -1, 21}, {sipName_QSyntaxHighlighter, &sipType_QSyntaxHighlighter, -1, 22}, {sipName_QTextObject, &sipType_QTextObject, 32, 23}, {sipName_QTextDocument, &sipType_QTextDocument, -1, 24}, {sipName_QUndoGroup, &sipType_QUndoGroup, -1, 25}, {sipName_QUndoStack, &sipType_QUndoStack, -1, -1}, {sipName_QDoubleValidator, &sipType_QDoubleValidator, -1, 27}, {sipName_QIntValidator, &sipType_QIntValidator, -1, 28}, {sipName_QRegularExpressionValidator, &sipType_QRegularExpressionValidator, -1, -1}, {sipName_QPointingDevice, &sipType_QPointingDevice, -1, -1}, {sipName_QPaintDeviceWindow, &sipType_QPaintDeviceWindow, 31, -1}, {sipName_QRasterWindow, &sipType_QRasterWindow, -1, -1}, {sipName_QTextBlockGroup, &sipType_QTextBlockGroup, 34, 33}, {sipName_QTextFrame, &sipType_QTextFrame, 35, -1}, {sipName_QTextList, &sipType_QTextList, -1, -1}, {sipName_QTextTable, &sipType_QTextTable, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QGuiApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = QCoreApplication::ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt6_qtgui_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQGuiApplication(nargc, argv, QT_VERSION); Py_END_ALLOW_THREADS // Now modify the original list. pyqt6_qtgui_update_argv_list(a0, argc, argv); } %End virtual ~QGuiApplication() /ReleaseGIL/; %MethodCode pyqt6_qtgui_cleanup_qobjects(); %End static QWindowList allWindows(); static QWindowList topLevelWindows(); static QWindow *topLevelAt(const QPoint &pos); static QString platformName(); static QWindow *focusWindow(); static QObject *focusObject(); static QScreen *primaryScreen(); static QList screens(); static QCursor *overrideCursor(); static void setOverrideCursor(const QCursor &); static void changeOverrideCursor(const QCursor &); static void restoreOverrideCursor(); static QFont font(); static void setFont(const QFont &); static QClipboard *clipboard(); static QPalette palette(); static void setPalette(const QPalette &pal); static Qt::KeyboardModifiers keyboardModifiers(); static Qt::KeyboardModifiers queryKeyboardModifiers(); static Qt::MouseButtons mouseButtons(); static void setLayoutDirection(Qt::LayoutDirection direction); static Qt::LayoutDirection layoutDirection(); static bool isRightToLeft(); static bool isLeftToRight(); static void setDesktopSettingsAware(bool on); static bool desktopSettingsAware(); static void setQuitOnLastWindowClosed(bool quit); static bool quitOnLastWindowClosed(); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; virtual bool notify(QObject *, QEvent *); signals: void fontDatabaseChanged(); void screenAdded(QScreen *screen); void lastWindowClosed(); void focusObjectChanged(QObject *focusObject); %If (PyQt_SessionManager) void commitDataRequest(QSessionManager &sessionManager); %End %If (PyQt_SessionManager) void saveStateRequest(QSessionManager &sessionManager); %End void focusWindowChanged(QWindow *focusWindow); void applicationStateChanged(Qt::ApplicationState state); void applicationDisplayNameChanged(); public: static void setApplicationDisplayName(const QString &name); static QString applicationDisplayName(); static QWindow *modalWindow(); static QStyleHints *styleHints(); static QInputMethod *inputMethod(); qreal devicePixelRatio() const; %If (PyQt_SessionManager) bool isSessionRestored() const; %End %If (PyQt_SessionManager) QString sessionId() const; %End %If (PyQt_SessionManager) QString sessionKey() const; %End %If (PyQt_SessionManager) bool isSavingSession() const; %End static Qt::ApplicationState applicationState(); static void sync(); static void setWindowIcon(const QIcon &icon); static QIcon windowIcon(); signals: void screenRemoved(QScreen *screen); void layoutDirectionChanged(Qt::LayoutDirection direction); void primaryScreenChanged(QScreen *screen); public: static void setDesktopFileName(const QString &name); static QString desktopFileName(); static QScreen *screenAt(const QPoint &point); static void setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy policy); static Qt::HighDpiScaleFactorRoundingPolicy highDpiScaleFactorRoundingPolicy(); %If (Qt_6_5_0 -) void setBadgeNumber(qint64 number); %End protected: virtual bool event(QEvent *); }; %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt6_qtgui_cleanup_qobjects_t)(); extern pyqt6_qtgui_cleanup_qobjects_t pyqt6_qtgui_cleanup_qobjects; typedef char **(*pyqt6_qtgui_from_argv_list_t)(PyObject *, int &); extern pyqt6_qtgui_from_argv_list_t pyqt6_qtgui_from_argv_list; typedef void (*pyqt6_qtgui_update_argv_list_t)(PyObject *, int, char **); extern pyqt6_qtgui_update_argv_list_t pyqt6_qtgui_update_argv_list; %End %ModuleCode // Imports from QtCore. pyqt6_qtgui_cleanup_qobjects_t pyqt6_qtgui_cleanup_qobjects; pyqt6_qtgui_from_argv_list_t pyqt6_qtgui_from_argv_list; pyqt6_qtgui_update_argv_list_t pyqt6_qtgui_update_argv_list; // Forward declarations not in any header files but are part of the API. void qt_set_sequence_auto_mnemonic(bool enable); %End %InitialisationCode // Export our own helpers. sipExportSymbol("qtgui_wrap_ancestors", (void *)qtgui_wrap_ancestors); %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtgui_cleanup_qobjects = (pyqt6_qtgui_cleanup_qobjects_t)sipImportSymbol("pyqt6_cleanup_qobjects"); Q_ASSERT(pyqt6_qtgui_cleanup_qobjects); pyqt6_qtgui_from_argv_list = (pyqt6_qtgui_from_argv_list_t)sipImportSymbol("pyqt6_from_argv_list"); Q_ASSERT(pyqt6_qtgui_from_argv_list); pyqt6_qtgui_update_argv_list = (pyqt6_qtgui_update_argv_list_t)sipImportSymbol("pyqt6_update_argv_list"); Q_ASSERT(pyqt6_qtgui_update_argv_list); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.399193 PyQt6-6.6.1/sip/QtGui/qicon.sip0000644000076500000240000001022514532160401015034 0ustar00philstaff// qicon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIcon /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum Mode { Normal, Disabled, Active, Selected, }; enum State { On, Off, }; QIcon(); QIcon(const QPixmap &pixmap); QIcon(const QIcon &other); explicit QIcon(const QString &fileName); explicit QIcon(QIconEngine *engine /GetWrapper/); %MethodCode sipCpp = new QIcon(a0); // The QIconEngine is implicitly shared by copies of the QIcon and is destroyed // by C++ when the last copy is destroyed. Therefore we need to transfer // ownership but not to associate it with this QIcon. The Python object will // get tidied up when the virtual dtor gets called. sipTransferTo(a0Wrapper, Py_None); %End QIcon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QIcon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QIcon(); QPixmap pixmap(const QSize &size, qreal devicePixelRatio, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int w, int h, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QPixmap pixmap(int extent, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QSize actualSize(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const; bool isNull() const; bool isDetached() const; void addPixmap(const QPixmap &pixmap, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); void addFile(const QString &fileName, const QSize &size = QSize(), QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); qint64 cacheKey() const; static QIcon fromTheme(const QString &name); static QIcon fromTheme(const QString &name, const QIcon &fallback); static bool hasThemeIcon(const QString &name); static QStringList themeSearchPaths(); static void setThemeSearchPaths(const QStringList &searchpath); static QString themeName(); static void setThemeName(const QString &path); QString name() const; void swap(QIcon &other /Constrained/); void setIsMask(bool isMask); bool isMask() const; static QStringList fallbackSearchPaths(); static void setFallbackSearchPaths(const QStringList &paths); static QString fallbackThemeName(); static void setFallbackThemeName(const QString &name); }; QDataStream &operator<<(QDataStream &, const QIcon &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QIcon & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.357314 PyQt6-6.6.1/sip/QtGui/qiconengine.sip0000644000076500000240000000452014532160401016223 0ustar00philstaff// qiconengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QIconEngine /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QIconEngine(); protected: QIconEngine(const QIconEngine &other); public: virtual ~QIconEngine(); virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0; virtual QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); virtual void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); virtual QString key() const; virtual QIconEngine *clone() const = 0 /Factory/; virtual bool read(QDataStream &in); virtual bool write(QDataStream &out) const; enum IconEngineHook { IsNullHook, ScaledPixmapHook, }; virtual QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); virtual QString iconName(); virtual bool isNull(); virtual QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale); struct ScaledPixmapArgument { %TypeHeaderCode #include %End QSize size; QIcon::Mode mode; QIcon::State state; qreal scale; QPixmap pixmap; }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3630629 PyQt6-6.6.1/sip/QtGui/qimage.sip0000644000076500000240000003320214532160401015166 0ustar00philstaff// qimage.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Windows) typedef struct HBITMAP__ *HBITMAP; %End %If (Windows) typedef struct HICON__ *HICON; %End class QImage : QPaintDevice { %TypeHeaderCode #include %End %TypeCode // The C++ closure that is passed to the QImage ctor. struct QtGui_QImage_closure { PyObject *py_cleanup; PyObject *py_closure; }; // Return the optional C++ closure for a QImage ctor. static QtGui_QImage_closure *QtGui_QImage_buffer(PyObject *py_cleanup, PyObject *py_closure) { // The cleanup callable or nullptr if there isn't one. if (py_cleanup == Py_None) py_cleanup = nullptr; if (!py_cleanup) return nullptr; QtGui_QImage_closure *closure = new QtGui_QImage_closure; Py_INCREF(py_cleanup); if (!py_closure) py_closure = Py_None; Py_INCREF(py_closure); closure->py_cleanup = py_cleanup; closure->py_closure = py_closure; return closure; } // The cleanup function for a QImage ctor. static void QtGui_QImage_cleanup(void *c) { SIP_BLOCK_THREADS QtGui_QImage_closure *closure = reinterpret_cast(c); bool is_exception = false; PyObject *res = PyObject_CallFunctionObjArgs(closure->py_cleanup, closure->py_closure, SIP_NULLPTR); Py_DECREF(closure->py_closure); Py_DECREF(closure->py_cleanup); if (res) Py_DECREF(res); else is_exception = true; delete closure; if (is_exception) pyqt6_qtgui_err_print(); SIP_UNBLOCK_THREADS } %End public: enum InvertMode { InvertRgb, InvertRgba, }; enum Format { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB16, Format_ARGB8565_Premultiplied, Format_RGB666, Format_ARGB6666_Premultiplied, Format_RGB555, Format_ARGB8555_Premultiplied, Format_RGB888, Format_RGB444, Format_ARGB4444_Premultiplied, Format_RGBX8888, Format_RGBA8888, Format_RGBA8888_Premultiplied, Format_BGR30, Format_A2BGR30_Premultiplied, Format_RGB30, Format_A2RGB30_Premultiplied, Format_Alpha8, Format_Grayscale8, Format_RGBX64, Format_RGBA64, Format_RGBA64_Premultiplied, Format_Grayscale16, Format_BGR888, %If (Qt_6_2_0 -) Format_RGBX16FPx4, %End %If (Qt_6_2_0 -) Format_RGBA16FPx4, %End %If (Qt_6_2_0 -) Format_RGBA16FPx4_Premultiplied, %End %If (Qt_6_2_0 -) Format_RGBX32FPx4, %End %If (Qt_6_2_0 -) Format_RGBA32FPx4, %End %If (Qt_6_2_0 -) Format_RGBA32FPx4_Premultiplied, %End }; QImage(); QImage(const QSize &size, QImage::Format format); QImage(int width, int height, QImage::Format format); QImage(const uchar *data /KeepReference/, int width, int height, QImage::Format format, SIP_PYCALLABLE cleanupFunction /AllowNone/ = 0, SIP_PYOBJECT cleanupInfo /AllowNone/ = 0) [(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0)]; %MethodCode QtGui_QImage_closure *closure = QtGui_QImage_buffer(a4, a5); sipCpp = new sipQImage(a0, a1, a2, a3, (closure ? QtGui_QImage_cleanup : nullptr), closure); %End QImage(const uchar *data /KeepReference/, int width, int height, qsizetype bytesPerLine, QImage::Format format, SIP_PYCALLABLE cleanupFunction /AllowNone/ = 0, SIP_PYOBJECT cleanupInfo /AllowNone/ = 0) [(const uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0)]; %MethodCode QtGui_QImage_closure *closure = QtGui_QImage_buffer(a5, a6); sipCpp = new sipQImage(a0, a1, a2, a3, a4, (closure ? QtGui_QImage_cleanup : nullptr), closure); %End QImage(void *data /KeepReference/, int width, int height, QImage::Format format, SIP_PYCALLABLE cleanupFunction /AllowNone/ = 0, SIP_PYOBJECT cleanupInfo /AllowNone/ = 0) /NoTypeHint/ [(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0)]; %MethodCode QtGui_QImage_closure *closure = QtGui_QImage_buffer(a4, a5); sipCpp = new sipQImage(reinterpret_cast(a0), a1, a2, a3, (closure ? QtGui_QImage_cleanup : nullptr), closure); %End QImage(void *data /KeepReference/, int width, int height, qsizetype bytesPerLine, QImage::Format format, SIP_PYCALLABLE cleanupFunction /AllowNone/ = 0, SIP_PYOBJECT cleanupInfo /AllowNone/ = 0) /NoTypeHint/ [(uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0)]; %MethodCode QtGui_QImage_closure *closure = QtGui_QImage_buffer(a5, a6); sipCpp = new sipQImage(reinterpret_cast(a0), a1, a2, a3, a4, (closure ? QtGui_QImage_cleanup : nullptr), closure); %End explicit QImage(SIP_PYLIST xpm /TypeHint="List[str]"/) [(const char * const *xpm)]; %MethodCode // The Python interface is a list of ASCII strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQImage(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QImage(const QString &fileName, const char *format = 0) /ReleaseGIL/; QImage(const QImage &); QImage(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQImage(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QImage(); bool isNull() const; bool operator==(const QImage &) const; bool operator!=(const QImage &) const; QImage copy(const QRect &rect = QRect()) const; QImage copy(int x, int y, int w, int h) const; QImage::Format format() const; QImage convertToFormat(QImage::Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage convertToFormat(QImage::Format f, const QList &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const; %If (Windows) HBITMAP toHBITMAP() const; %End %If (Windows) static QImage fromHBITMAP(HBITMAP hbitmap); %End %If (Windows) HICON toHICON(const QImage &mask = {}) const; %End %If (Windows) static QImage fromHICON(HICON hicon); %End int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; QRgb color(int i) const; void setColor(int i, QRgb c); bool allGray() const; bool isGrayscale() const; void *bits() [uchar * ()]; const void *constBits() const [const uchar * ()]; void *scanLine(int) [uchar * (int)]; const void *constScanLine(int) const [const uchar * (int)]; qsizetype bytesPerLine() const; bool valid(const QPoint &pt) const; bool valid(int x, int y) const; int pixelIndex(const QPoint &pt) const; int pixelIndex(int x, int y) const; QRgb pixel(const QPoint &pt) const; QRgb pixel(int x, int y) const; void setPixel(const QPoint &pt, uint index_or_rgb); void setPixel(int x, int y, uint index_or_rgb); QList colorTable() const; void setColorTable(const QList &colors); void fill(uint pixel); void fill(Qt::GlobalColor color /Constrained/); void fill(const QColor &color); bool hasAlphaChannel() const; void setAlphaChannel(const QImage &alphaChannel); QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const; QImage createHeuristicMask(bool clipTight = true) const; QImage scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QImage scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage mirrored(bool horizontal = false, bool vertical = true) const; void mirror(bool horizontal = false, bool vertical = true); QImage rgbSwapped() const; void rgbSwap(); void invertPixels(QImage::InvertMode mode = QImage::InvertRgb); bool load(QIODevice *device, const char *format) /ReleaseGIL/; bool load(const QString &fileName, const char *format = 0) /ReleaseGIL/; bool loadFromData(const uchar *data /Array/, int len /ArraySize/, const char *format = 0); bool loadFromData(const QByteArray &data, const char *format = 0); bool save(const QString &fileName, const char *format = 0, int quality = -1) const /ReleaseGIL/; bool save(QIODevice *device, const char *format = 0, int quality = -1) const /ReleaseGIL/; static QImage fromData(const uchar *data /Array/, int size /ArraySize/, const char *format = 0); static QImage fromData(const QByteArray &data, const char *format = 0); virtual QPaintEngine *paintEngine() const; int dotsPerMeterX() const; int dotsPerMeterY() const; void setDotsPerMeterX(int); void setDotsPerMeterY(int); QPoint offset() const; void setOffset(const QPoint &); QStringList textKeys() const; QString text(const QString &key = QString()) const; void setText(const QString &key, const QString &value); QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const; QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &, int w, int h); qint64 cacheKey() const; int colorCount() const; void setColorCount(int); int bitPlaneCount() const; void swap(QImage &other /Constrained/); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); QPixelFormat pixelFormat() const; static QPixelFormat toPixelFormat(QImage::Format format); static QImage::Format toImageFormat(QPixelFormat format); QColor pixelColor(int x, int y) const; QColor pixelColor(const QPoint &pt) const; void setPixelColor(int x, int y, const QColor &c); void setPixelColor(const QPoint &pt, const QColor &c); bool reinterpretAsFormat(QImage::Format f); qsizetype sizeInBytes() const; QImage convertedTo(QImage::Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const; void convertTo(QImage::Format f, Qt::ImageConversionFlags flags = Qt::AutoColor); QColorSpace colorSpace() const; void setColorSpace(const QColorSpace &); QImage convertedToColorSpace(const QColorSpace &) const; void convertToColorSpace(const QColorSpace &); void applyColorTransform(const QColorTransform &transform); %If (Qt_6_2_0 -) QSizeF deviceIndependentSize() const; %End %If (Qt_6_4_0 -) QImage colorTransformed(const QColorTransform &transform) const; %End }; QDataStream &operator<<(QDataStream &, const QImage &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QImage & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode // Helpers for QImage and QPixmap ctors. const char **QtGui_ListToArray(PyObject *lst); void QtGui_DeleteArray(const char **arr); // Imports from QtCore. typedef void (*pyqt6_qtgui_err_print_t)(); extern pyqt6_qtgui_err_print_t pyqt6_qtgui_err_print; %End %ModuleCode // Convert a list of strings to an array of ASCII strings on the heap. Used by // QImage and QPixmap. const char **QtGui_ListToArray(PyObject *lst) { Py_ssize_t nstr = PyList_Size(lst); const char **arr = new const char *[nstr + 1]; for (Py_ssize_t i = 0; i < nstr; ++i) { PyObject *ascii_obj = PyList_GetItem(lst, i); const char *ascii = sipString_AsASCIIString(&ascii_obj); if (!ascii) { while (i-- > 0) delete[] arr[i]; delete[] arr; return 0; } // Copy the string. arr[i] = qstrdup(ascii); Py_DECREF(ascii_obj); } // The sentinal. arr[nstr] = 0; return arr; } // Return a string array created by QtGui_ListToArray() to the heap. void QtGui_DeleteArray(const char **arr) { for (Py_ssize_t i = 0; arr[i]; ++i) delete[] arr[i]; delete[] arr; } // Imports from QtCore. pyqt6_qtgui_err_print_t pyqt6_qtgui_err_print; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtgui_err_print = (pyqt6_qtgui_err_print_t)sipImportSymbol("pyqt6_err_print"); Q_ASSERT(pyqt6_qtgui_err_print); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3848145 PyQt6-6.6.1/sip/QtGui/qimageiohandler.sip0000644000076500000240000000527714532160401017067 0ustar00philstaff// qimageiohandler.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageIOHandler { %TypeHeaderCode #include %End public: enum ImageOption { Size, ClipRect, Description, ScaledClipRect, ScaledSize, CompressionRatio, Gamma, Quality, Name, SubType, IncrementalReading, Endianness, Animation, BackgroundColor, SupportedSubTypes, OptimizedWrite, ProgressiveScanWrite, ImageTransformation, }; QImageIOHandler(); virtual ~QImageIOHandler(); void setDevice(QIODevice *device); QIODevice *device() const; void setFormat(const QByteArray &format); QByteArray format() const; virtual bool canRead() const = 0; virtual bool read(QImage *image) = 0; virtual bool write(const QImage &image); virtual QVariant option(QImageIOHandler::ImageOption option) const; virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value); virtual bool supportsOption(QImageIOHandler::ImageOption option) const; virtual bool jumpToNextImage(); virtual bool jumpToImage(int imageNumber); virtual int loopCount() const; virtual int imageCount() const; virtual int nextImageDelay() const; virtual int currentImageNumber() const; virtual QRect currentImageRect() const; enum Transformation /BaseType=Flag/ { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, TransformationMirrorAndRotate90, TransformationFlipAndRotate90, TransformationRotate270, }; typedef QFlags Transformations; private: QImageIOHandler(const QImageIOHandler &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4072208 PyQt6-6.6.1/sip/QtGui/qimagereader.sip0000644000076500000240000000663014532160401016356 0ustar00philstaff// qimagereader.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageReader { %TypeHeaderCode #include %End public: enum ImageReaderError { UnknownError, FileNotFoundError, DeviceError, UnsupportedFormatError, InvalidDataError, }; QImageReader(); QImageReader(QIODevice *device, const QByteArray &format = QByteArray()); QImageReader(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageReader(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; QSize size() const; void setClipRect(const QRect &rect); QRect clipRect() const; void setScaledSize(const QSize &size); QSize scaledSize() const; void setScaledClipRect(const QRect &rect); QRect scaledClipRect() const; bool canRead() const; QImage read() /ReleaseGIL/; bool read(QImage *image) /ReleaseGIL/; bool jumpToNextImage(); bool jumpToImage(int imageNumber); int loopCount() const; int imageCount() const; int nextImageDelay() const; int currentImageNumber() const; QRect currentImageRect() const; QImageReader::ImageReaderError error() const; QString errorString() const; static QByteArray imageFormat(const QString &fileName); static QByteArray imageFormat(QIODevice *device); static QList supportedImageFormats(); QStringList textKeys() const; QString text(const QString &key) const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; bool supportsAnimation() const; void setQuality(int quality); int quality() const; bool supportsOption(QImageIOHandler::ImageOption option) const; void setAutoDetectImageFormat(bool enabled); bool autoDetectImageFormat() const; QImage::Format imageFormat() const; void setDecideFormatFromContent(bool ignored); bool decideFormatFromContent() const; static QList supportedMimeTypes(); QByteArray subType() const; QList supportedSubTypes() const; QImageIOHandler::Transformations transformation() const; void setAutoTransform(bool enabled); bool autoTransform() const; static QList imageFormatsForMimeType(const QByteArray &mimeType); static int allocationLimit(); static void setAllocationLimit(int mbLimit); private: QImageReader(const QImageReader &); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.391473 PyQt6-6.6.1/sip/QtGui/qimagewriter.sip0000644000076500000240000000515214532160401016426 0ustar00philstaff// qimagewriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QImageWriter { %TypeHeaderCode #include %End public: enum ImageWriterError { UnknownError, DeviceError, UnsupportedFormatError, InvalidImageError, }; QImageWriter(); QImageWriter(QIODevice *device, const QByteArray &format); QImageWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QImageWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setQuality(int quality); int quality() const; bool canWrite() const; bool write(const QImage &image) /ReleaseGIL/; QImageWriter::ImageWriterError error() const; QString errorString() const; static QList supportedImageFormats(); void setText(const QString &key, const QString &text); bool supportsOption(QImageIOHandler::ImageOption option) const; void setCompression(int compression); int compression() const; static QList supportedMimeTypes(); void setSubType(const QByteArray &type); QByteArray subType() const; QList supportedSubTypes() const; void setOptimizedWrite(bool optimize); bool optimizedWrite() const; void setProgressiveScanWrite(bool progressive); bool progressiveScanWrite() const; QImageIOHandler::Transformations transformation() const; void setTransformation(QImageIOHandler::Transformations orientation); static QList imageFormatsForMimeType(const QByteArray &mimeType); private: QImageWriter(const QImageWriter &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3613598 PyQt6-6.6.1/sip/QtGui/qinputdevice.sip0000644000076500000240000000503714532160401016430 0ustar00philstaff// qinputdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputDevice : QObject { %TypeHeaderCode #include %End public: enum class DeviceType /BaseType=Flag/ { Unknown, Mouse, TouchScreen, TouchPad, Puck, Stylus, Airbrush, Keyboard, AllDevices, }; typedef QFlags DeviceTypes; enum class Capability /BaseType=Flag/ { None, Position, Area, Pressure, Velocity, NormalizedPosition, MouseEmulation, %If (Qt_6_2_0 -) PixelScroll, %End Scroll, Hover, Rotation, XTilt, YTilt, TangentialPressure, ZPosition, All, }; typedef QFlags Capabilities; QInputDevice(const QString &name, qint64 systemId, QInputDevice::DeviceType type, const QString &seatName = QString(), QObject *parent /TransferThis/ = 0); QInputDevice(QObject *parent /TransferThis/ = 0); virtual ~QInputDevice(); QString name() const; QInputDevice::DeviceType type() const; QInputDevice::Capabilities capabilities() const; bool hasCapability(QInputDevice::Capability cap) const; qint64 systemId() const; QString seatName() const; QRect availableVirtualGeometry() const; static QList devices(); static const QInputDevice *primaryKeyboard(const QString &seatName = QString()); bool operator==(const QInputDevice &other) const; signals: void availableVirtualGeometryChanged(QRect area); public: %If (Qt_6_3_0 -) static QStringList seatNames(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4169433 PyQt6-6.6.1/sip/QtGui/qinputmethod.sip0000644000076500000240000000437714532160401016457 0ustar00philstaff// qinputmethod.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputMethod : QObject { %TypeHeaderCode #include %End public: QTransform inputItemTransform() const; void setInputItemTransform(const QTransform &transform); QRectF cursorRectangle() const; QRectF keyboardRectangle() const; enum Action { Click, ContextMenu, }; bool isVisible() const; void setVisible(bool visible); bool isAnimating() const; QLocale locale() const; Qt::LayoutDirection inputDirection() const; QRectF inputItemRectangle() const; void setInputItemRectangle(const QRectF &rect); static QVariant queryFocusObject(Qt::InputMethodQuery query, const QVariant &argument); public slots: void show(); void hide(); void update(Qt::InputMethodQueries queries); void reset(); void commit(); void invokeAction(QInputMethod::Action a, int cursorPosition); signals: void cursorRectangleChanged(); void keyboardRectangleChanged(); void visibleChanged(); void animatingChanged(); void localeChanged(); void inputDirectionChanged(Qt::LayoutDirection newDirection); public: QRectF anchorRectangle() const; QRectF inputItemClipRectangle() const; signals: void anchorRectangleChanged(); void inputItemClipRectangleChanged(); private: QInputMethod(); virtual ~QInputMethod(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4023993 PyQt6-6.6.1/sip/QtGui/qkeysequence.sip0000644000076500000240000001556714532160401016443 0ustar00philstaff// qkeysequence.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeySequence /TypeHintIn="Union[QKeySequence, QKeySequence.StandardKey, QString, int]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // Allow a StandardKey, QString or an integer whenever a QKeySequence is // expected. if (sipIsErr == NULL) { if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) return 1; PyErr_Clear(); sipConvertToEnum(sipPy, sipType_QKeySequence_StandardKey); if (!PyErr_Occurred()) return 1; if (sipCanConvertToType(sipPy, sipType_QString, 0)) return 1; PyErr_Clear(); PyLong_AsLong(sipPy); return !PyErr_Occurred(); } if (sipCanConvertToType(sipPy, sipType_QKeySequence, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QKeySequence, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } PyErr_Clear(); int skey = sipConvertToEnum(sipPy, sipType_QKeySequence_StandardKey); if (!PyErr_Occurred()) { *sipCppPtr = new QKeySequence(static_cast(skey)); return sipGetState(sipTransferObj); } PyErr_Clear(); if (sipCanConvertToType(sipPy, sipType_QString, 0)) { int state; QString *qs = reinterpret_cast(sipConvertToType(sipPy, sipType_QString, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(qs, sipType_QString, state); return 0; } *sipCppPtr = new QKeySequence(*qs); sipReleaseType(qs, sipType_QString, state); return sipGetState(sipTransferObj); } int key = PyLong_AsLong(sipPy); *sipCppPtr = new QKeySequence(key); return sipGetState(sipTransferObj); %End %PickleCode sipRes = Py_BuildValue("iiii", sipCpp->operator[](0), sipCpp->operator[](1), sipCpp->operator[](2), sipCpp->operator[](3)); %End public: enum SequenceFormat { NativeText, PortableText, }; enum SequenceMatch { NoMatch, PartialMatch, ExactMatch, }; enum StandardKey { UnknownKey, HelpContents, WhatsThis, Open, Close, Save, New, Delete, Cut, Copy, Paste, Undo, Redo, Back, Forward, Refresh, ZoomIn, ZoomOut, Print, AddTab, NextChild, PreviousChild, Find, FindNext, FindPrevious, Replace, SelectAll, Bold, Italic, Underline, MoveToNextChar, MoveToPreviousChar, MoveToNextWord, MoveToPreviousWord, MoveToNextLine, MoveToPreviousLine, MoveToNextPage, MoveToPreviousPage, MoveToStartOfLine, MoveToEndOfLine, MoveToStartOfBlock, MoveToEndOfBlock, MoveToStartOfDocument, MoveToEndOfDocument, SelectNextChar, SelectPreviousChar, SelectNextWord, SelectPreviousWord, SelectNextLine, SelectPreviousLine, SelectNextPage, SelectPreviousPage, SelectStartOfLine, SelectEndOfLine, SelectStartOfBlock, SelectEndOfBlock, SelectStartOfDocument, SelectEndOfDocument, DeleteStartOfWord, DeleteEndOfWord, DeleteEndOfLine, InsertParagraphSeparator, InsertLineSeparator, SaveAs, Preferences, Quit, FullScreen, Deselect, DeleteCompleteLine, Backspace, Cancel, }; QKeySequence(); QKeySequence(const QKeySequence &ks /Constrained/); QKeySequence(QKeySequence::StandardKey key); QKeySequence(const QString &key, QKeySequence::SequenceFormat format = QKeySequence::NativeText); QKeySequence(int k1, int key2 = 0, int key3 = 0, int key4 = 0); QKeySequence(QKeyCombination k1, QKeyCombination key2 = QKeyCombination::fromCombined(0), QKeyCombination key3 = QKeyCombination::fromCombined(0), QKeyCombination key4 = QKeyCombination::fromCombined(0)); QKeySequence(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QKeySequence(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QKeySequence(); int count() const /__len__/; bool isEmpty() const; QKeySequence::SequenceMatch matches(const QKeySequence &seq) const; static QKeySequence mnemonic(const QString &text); QKeyCombination operator[](int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QKeyCombination(sipCpp->operator[]((uint)idx)); %End bool operator==(const QKeySequence &other) const; bool operator!=(const QKeySequence &other) const; bool operator<(const QKeySequence &ks) const; bool operator>(const QKeySequence &other) const; bool operator<=(const QKeySequence &other) const; bool operator>=(const QKeySequence &other) const; bool isDetached() const; void swap(QKeySequence &other /Constrained/); QString toString(QKeySequence::SequenceFormat format = QKeySequence::PortableText) const; static QKeySequence fromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); static QList keyBindings(QKeySequence::StandardKey key); static QList listFromString(const QString &str, QKeySequence::SequenceFormat format = QKeySequence::PortableText); static QString listToString(const QList &list, QKeySequence::SequenceFormat format = QKeySequence::PortableText); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; QDataStream &operator<<(QDataStream &in, const QKeySequence &ks) /ReleaseGIL/; QDataStream &operator>>(QDataStream &out, QKeySequence &ks /Constrained/) /ReleaseGIL/; void qt_set_sequence_auto_mnemonic(bool b); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3586385 PyQt6-6.6.1/sip/QtGui/qmatrix4x4.sip0000644000076500000240000002311314532160401015750 0ustar00philstaff// qmatrix4x4.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QMatrix4x4 { %TypeHeaderCode #include %End %PickleCode PYQT_FLOAT data[16]; // We want the data in row-major order. sipCpp->copyDataTo(data); sipRes = Py_BuildValue("dddddddddddddddd", (double)data[0], (double)data[1], (double)data[2], (double)data[3], (double)data[4], (double)data[5], (double)data[6], (double)data[7], (double)data[8], (double)data[9], (double)data[10], (double)data[11], (double)data[12], (double)data[13], (double)data[14], (double)data[15]); %End public: QMatrix4x4(); explicit QMatrix4x4(SIP_PYOBJECT values /TypeHint="Sequence[float]"/) [(const float *values)]; %MethodCode float values[16]; if ((sipError = qtgui_matrixDataFromSequence(a0, 16, values)) == sipErrorNone) sipCpp = new QMatrix4x4(values); %End QMatrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44); QMatrix4x4(const QTransform &transform); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode bool bad = false; int i; PyObject *m[16]; PYQT_FLOAT data[16]; // The raw data is in column-major order but we want row-major order. sipCpp->copyDataTo(data); for (i = 0; i < 16; ++i) { m[i] = PyFloat_FromDouble(data[i]); if (!m[i]) bad = true; } if (!bad) { sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QMatrix4x4(" "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R, " "%R, %R, %R, %R)", m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); } for (i = 0; i < 16; ++i) Py_XDECREF(m[i]); %End double determinant() const; QMatrix4x4 inverted(bool *invertible = 0) const; QMatrix4x4 transposed() const; QMatrix3x3 normalMatrix() const; void scale(const QVector3D &vector); void scale(float x, float y); void scale(float x, float y, float z); void scale(float factor); void translate(const QVector3D &vector); void translate(float x, float y); void translate(float x, float y, float z); void rotate(float angle, const QVector3D &vector); void rotate(float angle, float x, float y, float z = 0.F); void rotate(const QQuaternion &quaternion); void ortho(const QRect &rect); void ortho(const QRectF &rect); void ortho(float left, float right, float bottom, float top, float nearPlane, float farPlane); void frustum(float left, float right, float bottom, float top, float nearPlane, float farPlane); void perspective(float angle, float aspect, float nearPlane, float farPlane); void lookAt(const QVector3D &eye, const QVector3D ¢er, const QVector3D &up); SIP_PYLIST copyDataTo() const /TypeHint="List[float]"/; %MethodCode float values[16]; sipCpp->copyDataTo(values); sipError = qtgui_matrixDataAsList(16, values, &sipRes); %End QTransform toTransform() const; QTransform toTransform(float distanceToPlane) const; QRect mapRect(const QRect &rect) const; QRectF mapRect(const QRectF &rect) const; SIP_PYLIST data() /TypeHint="List[float]"/; %MethodCode sipError = qtgui_matrixDataAsList(16, sipCpp->constData(), &sipRes); %End void optimize(); SIP_PYOBJECT __getitem__(SIP_PYOBJECT) const; %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) { sipRes = PyFloat_FromDouble(sipCpp->operator()(row, column)); if (!sipRes) sipError = sipErrorFail; } %End void __setitem__(SIP_PYOBJECT, qreal); %MethodCode int row, column; if ((sipError = qtgui_matrixParseIndex(a0, 4, 4, &row, &column)) == sipErrorNone) sipCpp->operator()(row, column) = a1; %End QVector4D column(int index) const; void setColumn(int index, const QVector4D &value); QVector4D row(int index) const; void setRow(int index, const QVector4D &value); bool isIdentity() const; void setToIdentity(); void fill(float value); QMatrix4x4 &operator+=(const QMatrix4x4 &other); QMatrix4x4 &operator-=(const QMatrix4x4 &other); QMatrix4x4 &operator*=(const QMatrix4x4 &other) /__imatmul__/; QMatrix4x4 &operator*=(float factor); QMatrix4x4 &operator/=(float divisor); bool operator==(const QMatrix4x4 &other) const; bool operator!=(const QMatrix4x4 &other) const; QPoint map(const QPoint &point) const; QPointF map(const QPointF &point) const; QVector3D map(const QVector3D &point) const; QVector3D mapVector(const QVector3D &vector) const; QVector4D map(const QVector4D &point) const; void viewport(float left, float bottom, float width, float height, float nearPlane = 0.F, float farPlane = 1.F); void viewport(const QRectF &rect); bool isAffine() const; }; QMatrix4x4 operator/(const QMatrix4x4 &matrix, float divisor); QMatrix4x4 operator+(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator-(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QMatrix4x4 operator*(const QMatrix4x4 &m1, const QMatrix4x4 &m2) /__matmul__/; QPoint operator*(const QPoint &point, const QMatrix4x4 &matrix); QPointF operator*(const QPointF &point, const QMatrix4x4 &matrix); QPoint operator*(const QMatrix4x4 &matrix, const QPoint &point); QPointF operator*(const QMatrix4x4 &matrix, const QPointF &point); QMatrix4x4 operator-(const QMatrix4x4 &matrix); QMatrix4x4 operator*(float factor, const QMatrix4x4 &matrix); QMatrix4x4 operator*(const QMatrix4x4 &matrix, float factor); bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2); QDataStream &operator<<(QDataStream &, const QMatrix4x4 &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QMatrix4x4 & /Constrained/) /ReleaseGIL/; %ModuleHeaderCode // Helpers for the matrix classes. typedef float PYQT_FLOAT; sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column); sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values); sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list); %End %ModuleCode // Convert a Python object to a row and column. sipErrorState qtgui_matrixParseIndex(PyObject *tup, int nr_rows, int nr_columns, int *row, int *column) { sipErrorState es = sipErrorContinue; if (PyTuple_Check(tup) && PyArg_ParseTuple(tup, "ii", row, column)) if (*row >= 0 && *row < nr_rows && *column >= 0 && *column < nr_columns) es = sipErrorNone; if (es == sipErrorContinue) PyErr_Format(PyExc_IndexError, "an index must be a row in the range 0 to %d and a column in the range 0 to %d", nr_rows - 1, nr_columns - 1); return es; } // Convert a Python object to an array of qreals. sipErrorState qtgui_matrixDataFromSequence(PyObject *seq, int nr_values, PYQT_FLOAT *values) { sipErrorState es; if (PySequence_Size(seq) == nr_values) { es = sipErrorNone; for (int i = 0; i < nr_values; ++i) { PyObject *value = PySequence_GetItem(seq, i); if (!value) { es = sipErrorFail; break; } PyErr_Clear(); double d = PyFloat_AsDouble(value); if (PyErr_Occurred()) { Py_DECREF(value); es = sipErrorContinue; break; } Py_DECREF(value); *values++ = d; } } else { es = sipErrorContinue; } if (es == sipErrorContinue) PyErr_Format(PyExc_TypeError, "a sequence of %d floats is expected", nr_values); return es; } // Convert an array of qreals to a Python list. sipErrorState qtgui_matrixDataAsList(int nr_values, const PYQT_FLOAT *values, PyObject **list) { PyObject *l = PyList_New(nr_values); if (!l) return sipErrorFail; for (int i = 0; i < nr_values; ++i) { PyObject *value = PyFloat_FromDouble(*values++); if (!value) { Py_DECREF(l); return sipErrorFail; } PyList_SetItem(l, i, value); } *list = l; return sipErrorNone; } %End ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.41577 PyQt6-6.6.1/sip/QtGui/qmovie.sip0000644000076500000240000000545114532160401015230 0ustar00philstaff// qmovie.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMovie : QObject { %TypeHeaderCode #include %End public: enum MovieState { NotRunning, Paused, Running, }; enum CacheMode { CacheNone, CacheAll, }; explicit QMovie(QObject *parent /TransferThis/ = 0); QMovie(QIODevice *device, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); QMovie(const QString &fileName, const QByteArray &format = QByteArray(), QObject *parent /TransferThis/ = 0); virtual ~QMovie(); static QList supportedFormats(); void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; void setFormat(const QByteArray &format); QByteArray format() const; void setBackgroundColor(const QColor &color); QColor backgroundColor() const; QMovie::MovieState state() const; QRect frameRect() const; QImage currentImage() const; QPixmap currentPixmap() const; bool isValid() const; bool jumpToFrame(int frameNumber); int loopCount() const; int frameCount() const; int nextFrameDelay() const; int currentFrameNumber() const; void setSpeed(int percentSpeed); int speed() const; QSize scaledSize(); void setScaledSize(const QSize &size); QMovie::CacheMode cacheMode() const; void setCacheMode(QMovie::CacheMode mode); signals: void started(); void resized(const QSize &size); void updated(const QRect &rect); void stateChanged(QMovie::MovieState state); void error(QImageReader::ImageReaderError error); void finished(); void frameChanged(int frameNumber); public slots: void start(); bool jumpToNextFrame(); void setPaused(bool paused); void stop(); public: QImageReader::ImageReaderError lastError() const; QString lastErrorString() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3985748 PyQt6-6.6.1/sip/QtGui/qoffscreensurface.sip0000644000076500000240000000306114532160401017427 0ustar00philstaff// qoffscreensurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOffscreenSurface : QObject, QSurface { %TypeHeaderCode #include %End public: QOffscreenSurface(QScreen *screen = 0, QObject *parent /TransferThis/ = 0); virtual ~QOffscreenSurface(); virtual QSurface::SurfaceType surfaceType() const; void create(); void destroy(); bool isValid() const; void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; virtual QSize size() const; QScreen *screen() const; void setScreen(QScreen *screen); signals: void screenChanged(QScreen *screen); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3658073 PyQt6-6.6.1/sip/QtGui/qopenglcontext.sip0000644000076500000240000000502414532160401016776 0ustar00philstaff// qopenglcontext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL) class QOpenGLContextGroup : QObject { %TypeHeaderCode #include %End public: virtual ~QOpenGLContextGroup(); QList shares() const; static QOpenGLContextGroup *currentContextGroup(); private: QOpenGLContextGroup(); }; %End %If (PyQt_OpenGL) class QOpenGLContext : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLContext(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLContext(); void setFormat(const QSurfaceFormat &format); void setShareContext(QOpenGLContext *shareContext); void setScreen(QScreen *screen); bool create(); bool isValid() const; QSurfaceFormat format() const; QOpenGLContext *shareContext() const; QOpenGLContextGroup *shareGroup() const; QScreen *screen() const; GLuint defaultFramebufferObject() const; bool makeCurrent(QSurface *surface); void doneCurrent(); void swapBuffers(QSurface *surface); QFunctionPointer getProcAddress(const QByteArray &procName) const; QSurface *surface() const; static QOpenGLContext *currentContext(); static bool areSharing(QOpenGLContext *first, QOpenGLContext *second); QSet extensions() const; bool hasExtension(const QByteArray &extension) const; signals: void aboutToBeDestroyed(); public: enum OpenGLModuleType { LibGL, LibGLES, }; static QOpenGLContext::OpenGLModuleType openGLModuleType(); bool isOpenGLES() const; static bool supportsThreadedOpenGL(); static QOpenGLContext *globalShareContext(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3590608 PyQt6-6.6.1/sip/QtGui/qpagedpaintdevice.sip0000644000076500000240000000322614532160401017403 0ustar00philstaff// qpagedpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPagedPaintDevice : QPaintDevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QPagedPaintDevice(); virtual bool newPage() = 0; enum PdfVersion { PdfVersion_1_4, PdfVersion_A1b, PdfVersion_1_6, }; virtual bool setPageSize(const QPageSize &pageSize); virtual bool setPageLayout(const QPageLayout &pageLayout); QPageLayout pageLayout() const; virtual bool setPageOrientation(QPageLayout::Orientation orientation); virtual bool setPageMargins(const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Millimeter); virtual void setPageRanges(const QPageRanges &ranges); QPageRanges pageRanges() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3691084 PyQt6-6.6.1/sip/QtGui/qpagelayout.sip0000644000076500000240000000604014532160401016256 0ustar00philstaff// qpagelayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPageLayout { %TypeHeaderCode #include %End public: enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum Orientation { Portrait, Landscape, }; enum Mode { StandardMode, FullPageMode, }; QPageLayout(); QPageLayout(const QPageSize &pageSize, QPageLayout::Orientation orientation, const QMarginsF &margins, QPageLayout::Unit units = QPageLayout::Point, const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0)); QPageLayout(const QPageLayout &other); ~QPageLayout(); void swap(QPageLayout &other /Constrained/); bool isEquivalentTo(const QPageLayout &other) const; bool isValid() const; void setMode(QPageLayout::Mode mode); QPageLayout::Mode mode() const; void setPageSize(const QPageSize &pageSize, const QMarginsF &minMargins = QMarginsF(0, 0, 0, 0)); QPageSize pageSize() const; void setOrientation(QPageLayout::Orientation orientation); QPageLayout::Orientation orientation() const; void setUnits(QPageLayout::Unit units); QPageLayout::Unit units() const; bool setMargins(const QMarginsF &margins); bool setLeftMargin(qreal leftMargin); bool setRightMargin(qreal rightMargin); bool setTopMargin(qreal topMargin); bool setBottomMargin(qreal bottomMargin); QMarginsF margins() const; QMarginsF margins(QPageLayout::Unit units) const; QMargins marginsPoints() const; QMargins marginsPixels(int resolution) const; void setMinimumMargins(const QMarginsF &minMargins); QMarginsF minimumMargins() const; QMarginsF maximumMargins() const; QRectF fullRect() const; QRectF fullRect(QPageLayout::Unit units) const; QRect fullRectPoints() const; QRect fullRectPixels(int resolution) const; QRectF paintRect() const; QRectF paintRect(QPageLayout::Unit units) const; QRect paintRectPoints() const; QRect paintRectPixels(int resolution) const; }; bool operator==(const QPageLayout &lhs, const QPageLayout &rhs); bool operator!=(const QPageLayout &lhs, const QPageLayout &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3881145 PyQt6-6.6.1/sip/QtGui/qpageranges.sip0000644000076500000240000000414114532160401016220 0ustar00philstaff// qpageranges.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPageRanges { %TypeHeaderCode #include %End public: QPageRanges(); QPageRanges(const QPageRanges &other); ~QPageRanges(); void swap(QPageRanges &other /Constrained/); struct Range { %TypeHeaderCode #include %End int from; int to; bool contains(int pageNumber) const; }; void addPage(int pageNumber); void addRange(int from, int to); QList toRangeList() const; void clear(); QString toString() const; static QPageRanges fromString(const QString &ranges); bool contains(int pageNumber) const; bool isEmpty() const; int firstPage() const; int lastPage() const; }; bool operator==(QPageRanges::Range lhs, QPageRanges::Range rhs); bool operator==(const QPageRanges &lhs, const QPageRanges &rhs); bool operator!=(QPageRanges::Range lhs, QPageRanges::Range rhs); bool operator!=(const QPageRanges &lhs, const QPageRanges &rhs); bool operator<(QPageRanges::Range lhs, QPageRanges::Range rhs); QDataStream &operator<<(QDataStream &, const QPageRanges &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPageRanges & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3842304 PyQt6-6.6.1/sip/QtGui/qpagesize.sip0000644000076500000240000001272714532160401015724 0ustar00philstaff// qpagesize.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPageSize { %TypeHeaderCode #include %End public: enum PageSizeId { A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1, B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E, DLE, Folio, Ledger, Tabloid, Custom, A10, A3Extra, A4Extra, A4Plus, A4Small, A5Extra, B5Extra, JisB0, JisB1, JisB2, JisB3, JisB4, JisB5, JisB6, JisB7, JisB8, JisB9, JisB10, AnsiC, AnsiD, AnsiE, LegalExtra, LetterExtra, LetterPlus, LetterSmall, TabloidExtra, ArchA, ArchB, ArchC, ArchD, ArchE, Imperial7x9, Imperial8x10, Imperial9x11, Imperial9x12, Imperial10x11, Imperial10x13, Imperial10x14, Imperial12x11, Imperial15x11, ExecutiveStandard, Note, Quarto, Statement, SuperA, SuperB, Postcard, DoublePostcard, Prc16K, Prc32K, Prc32KBig, FanFoldUS, FanFoldGerman, FanFoldGermanLegal, EnvelopeB4, EnvelopeB5, EnvelopeB6, EnvelopeC0, EnvelopeC1, EnvelopeC2, EnvelopeC3, EnvelopeC4, EnvelopeC6, EnvelopeC65, EnvelopeC7, Envelope9, Envelope11, Envelope12, Envelope14, EnvelopeMonarch, EnvelopePersonal, EnvelopeChou3, EnvelopeChou4, EnvelopeInvite, EnvelopeItalian, EnvelopeKaku2, EnvelopeKaku3, EnvelopePrc1, EnvelopePrc2, EnvelopePrc3, EnvelopePrc4, EnvelopePrc5, EnvelopePrc6, EnvelopePrc7, EnvelopePrc8, EnvelopePrc9, EnvelopePrc10, EnvelopeYou4, AnsiA, AnsiB, EnvelopeC5, EnvelopeDL, Envelope10, LastPageSize, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, }; enum SizeMatchPolicy { FuzzyMatch, FuzzyOrientationMatch, ExactMatch, }; QPageSize(); %If (Qt_6_2_0 -) QPageSize(QPageSize::PageSizeId pageSizeId); %End %If (- Qt_6_2_0) explicit QPageSize(QPageSize::PageSizeId pageSizeId); %End QPageSize(const QSize &pointSize, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QSizeF &size, QPageSize::Unit units, const QString &name = QString(), QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); QPageSize(const QPageSize &other); ~QPageSize(); void swap(QPageSize &other /Constrained/); bool isEquivalentTo(const QPageSize &other) const; bool isValid() const; QString key() const; QString name() const; QPageSize::PageSizeId id() const; int windowsId() const; QSizeF definitionSize() const; QPageSize::Unit definitionUnits() const; QSizeF size(QPageSize::Unit units) const; QSize sizePoints() const; QSize sizePixels(int resolution) const; QRectF rect(QPageSize::Unit units) const; QRect rectPoints() const; QRect rectPixels(int resolution) const; static QString key(QPageSize::PageSizeId pageSizeId); static QString name(QPageSize::PageSizeId pageSizeId); static QPageSize::PageSizeId id(const QSize &pointSize, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(const QSizeF &size, QPageSize::Unit units, QPageSize::SizeMatchPolicy matchPolicy = QPageSize::FuzzyMatch); static QPageSize::PageSizeId id(int windowsId); static int windowsId(QPageSize::PageSizeId pageSizeId); static QSizeF definitionSize(QPageSize::PageSizeId pageSizeId); static QPageSize::Unit definitionUnits(QPageSize::PageSizeId pageSizeId); static QSizeF size(QPageSize::PageSizeId pageSizeId, QPageSize::Unit units); static QSize sizePoints(QPageSize::PageSizeId pageSizeId); static QSize sizePixels(QPageSize::PageSizeId pageSizeId, int resolution); }; bool operator==(const QPageSize &lhs, const QPageSize &rhs); bool operator!=(const QPageSize &lhs, const QPageSize &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3753304 PyQt6-6.6.1/sip/QtGui/qpaintdevice.sip0000644000076500000240000000371214532160401016402 0ustar00philstaff// qpaintdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPaintDevice { %TypeHeaderCode #include %End public: enum PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, PdmDepth, PdmDpiX, PdmDpiY, PdmPhysicalDpiX, PdmPhysicalDpiY, PdmDevicePixelRatio, PdmDevicePixelRatioScaled, }; virtual ~QPaintDevice(); virtual QPaintEngine *paintEngine() const = 0; int width() const; int height() const; int widthMM() const; int heightMM() const; int logicalDpiX() const; int logicalDpiY() const; int physicalDpiX() const; int physicalDpiY() const; int depth() const; bool paintingActive() const; int colorCount() const; qreal devicePixelRatio() const; protected: QPaintDevice(); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; public: qreal devicePixelRatioF() const; static qreal devicePixelRatioFScale(); private: QPaintDevice(const QPaintDevice &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4058862 PyQt6-6.6.1/sip/QtGui/qpaintdevicewindow.sip0000644000076500000240000000260714532160401017634 0ustar00philstaff// qpaintdevicewindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPaintDeviceWindow : QWindow, QPaintDevice /NoDefaultCtors/ { %TypeHeaderCode #include %End public: void update(const QRect &rect); void update(const QRegion ®ion); public slots: void update(); protected: virtual void paintEvent(QPaintEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual void exposeEvent(QExposeEvent *); virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4082854 PyQt6-6.6.1/sip/QtGui/qpaintengine.sip0000644000076500000240000001304114532160401016404 0ustar00philstaff// qpaintengine.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextItem { %TypeHeaderCode #include %End public: enum RenderFlag /BaseType=Flag/ { RightToLeft, Overline, Underline, StrikeOut, }; typedef QFlags RenderFlags; qreal descent() const; qreal ascent() const; qreal width() const; QTextItem::RenderFlags renderFlags() const; QString text() const; QFont font() const; }; class QPaintEngine { %TypeHeaderCode #include %End public: enum PaintEngineFeature /BaseType=Flag/ { PrimitiveTransform, PatternTransform, PixmapTransform, PatternBrush, LinearGradientFill, RadialGradientFill, ConicalGradientFill, AlphaBlend, PorterDuff, PainterPaths, Antialiasing, BrushStroke, ConstantOpacity, MaskedBrush, PaintOutsidePaintEvent, PerspectiveTransform, BlendModes, ObjectBoundingModeGradients, RasterOpModes, AllFeatures, }; typedef QFlags PaintEngineFeatures; enum DirtyFlag /BaseType=Flag/ { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, DirtyBackgroundMode, DirtyTransform, DirtyClipRegion, DirtyClipPath, DirtyHints, DirtyCompositionMode, DirtyClipEnabled, DirtyOpacity, AllDirty, }; typedef QFlags DirtyFlags; enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode, }; explicit QPaintEngine(QPaintEngine::PaintEngineFeatures features = QPaintEngine::PaintEngineFeatures()); virtual ~QPaintEngine(); bool isActive() const; void setActive(bool newState); virtual bool begin(QPaintDevice *pdev) = 0; virtual bool end() = 0; virtual void updateState(const QPaintEngineState &state /NoCopy/) = 0; virtual void drawRects(const QRect *rects /Array/, int rectCount /ArraySize/); virtual void drawRects(const QRectF *rects /Array/, int rectCount /ArraySize/); virtual void drawLines(const QLine *lines /Array/, int lineCount /ArraySize/); virtual void drawLines(const QLineF *lines /Array/, int lineCount /ArraySize/); virtual void drawEllipse(const QRectF &r); virtual void drawEllipse(const QRect &r); virtual void drawPath(const QPainterPath &path); virtual void drawPoints(const QPointF *points /Array/, int pointCount /ArraySize/); virtual void drawPoints(const QPoint *points /Array/, int pointCount /ArraySize/); virtual void drawPolygon(const QPointF *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPolygon(const QPoint *points /Array/, int pointCount /ArraySize/, QPaintEngine::PolygonDrawMode mode); virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0; virtual void drawTextItem(const QPointF &p, const QTextItem &textItem /NoCopy/); virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s); virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void setPaintDevice(QPaintDevice *device); QPaintDevice *paintDevice() const; enum Type { X11, Windows, QuickDraw, CoreGraphics, MacPrinter, QWindowSystem, OpenGL, Picture, SVG, Raster, Direct3D, Pdf, OpenVG, OpenGL2, PaintBuffer, Blitter, Direct2D, User, MaxUser, }; virtual QPaintEngine::Type type() const = 0; QPainter *painter() const; bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const; private: QPaintEngine(const QPaintEngine &); }; class QPaintEngineState { %TypeHeaderCode #include %End public: QPaintEngine::DirtyFlags state() const; QPen pen() const; QBrush brush() const; QPointF brushOrigin() const; QBrush backgroundBrush() const; Qt::BGMode backgroundMode() const; QFont font() const; qreal opacity() const; Qt::ClipOperation clipOperation() const; QRegion clipRegion() const; QPainterPath clipPath() const; bool isClipEnabled() const; QPainter::RenderHints renderHints() const; QPainter::CompositionMode compositionMode() const; QPainter *painter() const; QTransform transform() const; bool brushNeedsResolving() const; bool penNeedsResolving() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3870478 PyQt6-6.6.1/sip/QtGui/qpainter.sip0000644000076500000240000005114014532160401015547 0ustar00philstaff// qpainter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainter { %TypeHeaderCode #include %End %TypeCode // Return an array on the heap of class instances extracted from a set of // Python arguments. template static TYPE *qtgui_inst_array(const TYPE *first, PyObject *t, sipTypeDef *td) { TYPE *arr = new TYPE[1 + PyTuple_Size(t)]; arr[0] = *first; for (Py_ssize_t i = 0; i < PyTuple_Size(t); ++i) { int iserr = 0, state; TYPE *itm; itm = reinterpret_cast(sipForceConvertToType(PyTuple_GetItem(t, i), td, 0, SIP_NOT_NONE, &state, &iserr)); if (iserr) { sipReleaseType(itm, td, state); PyErr_Format(PyExc_TypeError, "each argument must be an instance of %s", sipPyTypeName(sipTypeAsPyTypeObject(td))); delete[] arr; return 0; } arr[1 + i] = *itm; sipReleaseType(itm, td, state); } return arr; } %End public: enum RenderHint /BaseType=Flag/ { Antialiasing, TextAntialiasing, SmoothPixmapTransform, LosslessImageRendering, %If (Qt_6_1_0 -) VerticalSubpixelPositioning, %End %If (Qt_6_4_0 -) NonCosmeticBrushPatterns, %End }; typedef QFlags RenderHints; QPainter(); explicit QPainter(QPaintDevice *); ~QPainter(); SIP_PYOBJECT __enter__(); %MethodCode // Check a device was passed. if (sipCpp->isActive()) { // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); } else { PyErr_SetString(PyExc_ValueError, "QPainter must be created with a device"); sipRes = 0; } %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->end(); %End QPaintDevice *device() const; bool begin(QPaintDevice *); bool end(); bool isActive() const; enum CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, CompositionMode_SourceIn, CompositionMode_DestinationIn, CompositionMode_SourceOut, CompositionMode_DestinationOut, CompositionMode_SourceAtop, CompositionMode_DestinationAtop, CompositionMode_Xor, CompositionMode_Plus, CompositionMode_Multiply, CompositionMode_Screen, CompositionMode_Overlay, CompositionMode_Darken, CompositionMode_Lighten, CompositionMode_ColorDodge, CompositionMode_ColorBurn, CompositionMode_HardLight, CompositionMode_SoftLight, CompositionMode_Difference, CompositionMode_Exclusion, RasterOp_SourceOrDestination, RasterOp_SourceAndDestination, RasterOp_SourceXorDestination, RasterOp_NotSourceAndNotDestination, RasterOp_NotSourceOrNotDestination, RasterOp_NotSourceXorDestination, RasterOp_NotSource, RasterOp_NotSourceAndDestination, RasterOp_SourceAndNotDestination, RasterOp_NotSourceOrDestination, RasterOp_SourceOrNotDestination, RasterOp_ClearDestination, RasterOp_SetDestination, RasterOp_NotDestination, }; void setCompositionMode(QPainter::CompositionMode mode); QPainter::CompositionMode compositionMode() const; const QFont &font() const; void setFont(const QFont &f); QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setPen(const QColor &color); void setPen(const QPen &pen); void setPen(Qt::PenStyle style); const QPen &pen() const; void setBrush(const QBrush &brush); void setBrush(Qt::BrushStyle style); const QBrush &brush() const; void setBackgroundMode(Qt::BGMode mode); Qt::BGMode backgroundMode() const; QPoint brushOrigin() const; void setBrushOrigin(const QPointF &); void setBackground(const QBrush &bg); const QBrush &background() const; QRegion clipRegion() const; QPainterPath clipPath() const; void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipping(bool enable); bool hasClipping() const; void save(); void restore(); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void rotate(qreal a); void translate(const QPointF &offset); QRect window() const; void setWindow(const QRect &window); QRect viewport() const; void setViewport(const QRect &viewport); void setViewTransformEnabled(bool enable); bool viewTransformEnabled() const; void strokePath(const QPainterPath &path, const QPen &pen); void fillPath(const QPainterPath &path, const QBrush &brush); void drawPath(const QPainterPath &path); void drawPoints(const QPolygonF &points); void drawPoints(const QPolygon &points); void drawPoints(const QPointF *points /Array/, int pointCount /ArraySize/); void drawPoints(const QPointF *point, ... /TypeHint="QPointF"/); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPoints(const QPoint *points /Array/, int pointCount /ArraySize/); void drawPoints(const QPoint *point, ... /TypeHint="QPoint"/); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPoints(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawLines(const QLineF *lines /Array/, int lineCount /ArraySize/); void drawLines(const QLineF *line, ... /TypeHint="QLineF"/); %MethodCode QLineF *lines = qtgui_inst_array(a0, a1, sipType_QLineF); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_Size(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QPointF *pointPairs /Array/, int lineCount /ArraySize/); %MethodCode sipCpp->drawLines(a0, a1 / 2); %End void drawLines(const QPointF *pointPair, ... /TypeHint="QPointF"/); %MethodCode QPointF *pairs = qtgui_inst_array(a0, a1, sipType_QPointF); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_Size(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawLines(const QLine *lines /Array/, int lineCount /ArraySize/); void drawLines(const QLine *line, ... /TypeHint="QLine"/); %MethodCode QLine *lines = qtgui_inst_array(a0, a1, sipType_QLine); if (lines) { sipCpp->drawLines(lines, 1 + PyTuple_Size(a1)); delete[] lines; } else sipIsErr = 1; %End void drawLines(const QPoint *pointPairs /Array/, int lineCount /ArraySize/); %MethodCode sipCpp->drawLines(a0, a1 / 2); %End void drawLines(const QPoint *pointPair, ... /TypeHint="QPoint"/); %MethodCode QPoint *pairs = qtgui_inst_array(a0, a1, sipType_QPoint); if (pairs) { sipCpp->drawLines(pairs, (1 + PyTuple_Size(a1)) / 2); delete[] pairs; } else sipIsErr = 1; %End void drawRects(const QRectF *rects /Array/, int rectCount /ArraySize/); void drawRects(const QRectF *rect, ... /TypeHint="QRectF"/); %MethodCode QRectF *rects = qtgui_inst_array(a0, a1, sipType_QRectF); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_Size(a1)); delete[] rects; } else sipIsErr = 1; %End void drawRects(const QRect *rects /Array/, int rectCount /ArraySize/); void drawRects(const QRect *rect, ... /TypeHint="QRect"/); %MethodCode QRect *rects = qtgui_inst_array(a0, a1, sipType_QRect); if (rects) { sipCpp->drawRects(rects, 1 + PyTuple_Size(a1)); delete[] rects; } else sipIsErr = 1; %End void drawEllipse(const QRectF &r); void drawEllipse(const QRect &r); void drawPolyline(const QPolygonF &polyline); void drawPolyline(const QPolygon &polyline); void drawPolyline(const QPointF *points /Array/, int pointCount /ArraySize/); void drawPolyline(const QPointF *point, ... /TypeHint="QPointF"/); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolyline(const QPoint *points /Array/, int pointCount /ArraySize/); void drawPolyline(const QPoint *point, ... /TypeHint="QPoint"/); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolyline(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPointF *points /Array/, int pointCount /ArraySize/, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPointF *point, ... /TypeHint="QPointF"/); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawPolygon(const QPoint *points /Array/, int pointCount /ArraySize/, Qt::FillRule fillRule = Qt::OddEvenFill); void drawPolygon(const QPoint *point, ... /TypeHint="QPoint"/); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPolygonF &poly); void drawConvexPolygon(const QPolygon &poly); void drawConvexPolygon(const QPointF *points /Array/, int pointCount /ArraySize/); void drawConvexPolygon(const QPointF *point, ... /TypeHint="QPointF"/); %MethodCode QPointF *points = qtgui_inst_array(a0, a1, sipType_QPointF); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawConvexPolygon(const QPoint *points /Array/, int pointCount /ArraySize/); void drawConvexPolygon(const QPoint *point, ... /TypeHint="QPoint"/); %MethodCode QPoint *points = qtgui_inst_array(a0, a1, sipType_QPoint); if (points) { sipCpp->drawConvexPolygon(points, 1 + PyTuple_Size(a1)); delete[] points; } else sipIsErr = 1; %End void drawArc(const QRectF &rect, int a, int alen); void drawPie(const QRectF &rect, int a, int alen); void drawChord(const QRectF &rect, int a, int alen); void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &pos = QPointF()); void drawPicture(const QPointF &p, const QPicture &picture); void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect); void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void drawText(const QPointF &p, const QString &s); void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect /Out/ = 0); void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); QRectF boundingRect(const QRectF &rect, int flags, const QString &text); QRect boundingRect(const QRect &rect, int flags, const QString &text); QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()); void fillRect(const QRectF &, const QBrush &); void fillRect(const QRect &, const QBrush &); void eraseRect(const QRectF &); void setRenderHint(QPainter::RenderHint hint, bool on = true); QPainter::RenderHints renderHints() const; void setRenderHints(QPainter::RenderHints hints, bool on = true); QPaintEngine *paintEngine() const; void drawLine(const QLineF &l); void drawLine(const QLine &line); void drawLine(int x1, int y1, int x2, int y2); void drawLine(const QPoint &p1, const QPoint &p2); void drawLine(const QPointF &p1, const QPointF &p2); void drawRect(const QRectF &rect); void drawRect(int x, int y, int w, int h); void drawRect(const QRect &r); void drawPoint(const QPointF &p); void drawPoint(int x, int y); void drawPoint(const QPoint &p); void drawEllipse(int x, int y, int w, int h); void drawArc(const QRect &r, int a, int alen); void drawArc(int x, int y, int w, int h, int a, int alen); void drawPie(const QRect &rect, int a, int alen); void drawPie(int x, int y, int w, int h, int a, int alen); void drawChord(const QRect &rect, int a, int alen); void drawChord(int x, int y, int w, int h, int a, int alen); void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip); void setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip); void eraseRect(const QRect &rect); void eraseRect(int x, int y, int w, int h); void fillRect(int x, int y, int w, int h, const QBrush &b); void setBrushOrigin(int x, int y); void setBrushOrigin(const QPoint &p); void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &pos = QPoint()); void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0); void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect); void drawPixmap(const QPointF &p, const QPixmap &pm); void drawPixmap(const QPoint &p, const QPixmap &pm); void drawPixmap(const QRect &r, const QPixmap &pm); void drawPixmap(int x, int y, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm); void drawPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(int x, int y, const QPixmap &pm, int sx, int sy, int sw, int sh); void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr); void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr); void drawImage(const QRectF &r, const QImage &image); void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QRect &r, const QImage &image); void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPointF &p, const QImage &image); void drawImage(const QPointF &p, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(const QPoint &p, const QImage &image); void drawImage(const QPoint &p, const QImage &image, const QRect &sr, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor); void drawText(const QPoint &p, const QString &s); void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect /Out/ = 0); void drawText(int x, int y, const QString &s); QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text); qreal opacity() const; void setOpacity(qreal opacity); void translate(qreal dx, qreal dy); void translate(const QPoint &offset); void setViewport(int x, int y, int w, int h); void setWindow(int x, int y, int w, int h); bool worldMatrixEnabled() const; void setWorldMatrixEnabled(bool enabled); void drawPicture(int x, int y, const QPicture &p); void drawPicture(const QPoint &pt, const QPicture &p); void setTransform(const QTransform &transform, bool combine = false); const QTransform &transform() const; const QTransform &deviceTransform() const; void resetTransform(); void setWorldTransform(const QTransform &matrix, bool combine = false); const QTransform &worldTransform() const; QTransform combinedTransform() const; bool testRenderHint(QPainter::RenderHint hint) const; void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void drawEllipse(const QPointF ¢er, qreal rx, qreal ry); void drawEllipse(const QPoint ¢er, int rx, int ry); void fillRect(const QRectF &, const QColor &color); void fillRect(const QRect &, const QColor &color); void fillRect(int x, int y, int w, int h, const QColor &b); void fillRect(int x, int y, int w, int h, Qt::GlobalColor c); void fillRect(const QRect &r, Qt::GlobalColor c); void fillRect(const QRectF &r, Qt::GlobalColor c); void fillRect(int x, int y, int w, int h, Qt::BrushStyle style); void fillRect(const QRect &r, Qt::BrushStyle style); void fillRect(const QRectF &r, Qt::BrushStyle style); void beginNativePainting(); void endNativePainting(); class PixmapFragment { %TypeHeaderCode #include %End public: qreal x; qreal y; qreal sourceLeft; qreal sourceTop; qreal width; qreal height; qreal scaleX; qreal scaleY; qreal rotation; qreal opacity; static QPainter::PixmapFragment create(const QPointF &pos, const QRectF &sourceRect, qreal scaleX = 1, qreal scaleY = 1, qreal rotation = 0, qreal opacity = 1) /Factory/; }; enum PixmapFragmentHint /BaseType=Flag/ { OpaqueHint, }; typedef QFlags PixmapFragmentHints; void drawPixmapFragments(const QPainter::PixmapFragment *fragments /Array/, int fragmentCount /ArraySize/, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = QPainter::PixmapFragmentHints()); void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText); void drawStaticText(const QPoint &p, const QStaticText &staticText); void drawStaticText(int x, int y, const QStaticText &staticText); QRectF clipBoundingRect() const; %If (PyQt_RawFont) void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun); %End void fillRect(int x, int y, int w, int h, QGradient::Preset preset); void fillRect(const QRect &r, QGradient::Preset preset); void fillRect(const QRectF &r, QGradient::Preset preset); private: QPainter(const QPainter &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3965733 PyQt6-6.6.1/sip/QtGui/qpainterpath.sip0000644000076500000240000001463214532160401016431 0ustar00philstaff// qpainterpath.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPainterPath { %TypeHeaderCode #include %End public: enum ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement, }; class Element { %TypeHeaderCode #include %End public: qreal x; qreal y; QPainterPath::ElementType type; bool isMoveTo() const; bool isLineTo() const; bool isCurveTo() const; bool operator==(const QPainterPath::Element &e) const; bool operator!=(const QPainterPath::Element &e) const; operator QPointF() const; }; QPainterPath(); explicit QPainterPath(const QPointF &startPoint); QPainterPath(const QPainterPath &other); ~QPainterPath(); void closeSubpath(); void moveTo(const QPointF &p); void lineTo(const QPointF &p); void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength); void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt); void quadTo(const QPointF &ctrlPt, const QPointF &endPt); QPointF currentPosition() const; void addRect(const QRectF &rect); void addEllipse(const QRectF &rect); void addPolygon(const QPolygonF &polygon); void addText(const QPointF &point, const QFont &f, const QString &text); void addPath(const QPainterPath &path); void addRegion(const QRegion ®ion); void connectPath(const QPainterPath &path); bool contains(const QPointF &pt) const; bool contains(const QRectF &rect) const; bool intersects(const QRectF &rect) const; QRectF boundingRect() const; QRectF controlPointRect() const; Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule fillRule); QPainterPath toReversed() const; QList toSubpathPolygons(const QTransform &matrix = QTransform()) const; QList toFillPolygons(const QTransform &matrix = QTransform()) const; QPolygonF toFillPolygon(const QTransform &matrix = QTransform()) const; bool operator==(const QPainterPath &other) const; bool operator!=(const QPainterPath &other) const; void moveTo(qreal x, qreal y); void arcMoveTo(const QRectF &rect, qreal angle); void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle); void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght); void lineTo(qreal x, qreal y); void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y, qreal endPtx, qreal endPty); void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty); void addEllipse(qreal x, qreal y, qreal w, qreal h); void addRect(qreal x, qreal y, qreal w, qreal h); void addText(qreal x, qreal y, const QFont &f, const QString &text); bool isEmpty() const; int elementCount() const; QPainterPath::Element elementAt(int i) const; void setElementPositionAt(int i, qreal x, qreal y); qreal length() const; qreal percentAtLength(qreal t) const; QPointF pointAtPercent(qreal t) const; qreal angleAtPercent(qreal t) const; qreal slopeAtPercent(qreal t) const; bool intersects(const QPainterPath &p) const; bool contains(const QPainterPath &p) const; QPainterPath united(const QPainterPath &r) const; QPainterPath intersected(const QPainterPath &r) const; QPainterPath subtracted(const QPainterPath &r) const; void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize); void addEllipse(const QPointF ¢er, qreal rx, qreal ry); QPainterPath simplified() const; QPainterPath operator&(const QPainterPath &other) const; QPainterPath operator|(const QPainterPath &other) const; QPainterPath operator+(const QPainterPath &other) const; QPainterPath operator-(const QPainterPath &other) const; QPainterPath &operator&=(const QPainterPath &other); QPainterPath &operator|=(const QPainterPath &other); QPainterPath &operator+=(const QPainterPath &other); QPainterPath &operator-=(const QPainterPath &other); void translate(qreal dx, qreal dy); QPainterPath translated(qreal dx, qreal dy) const; void translate(const QPointF &offset); QPainterPath translated(const QPointF &offset) const; void swap(QPainterPath &other /Constrained/); void clear(); void reserve(int size); int capacity() const; }; QDataStream &operator<<(QDataStream &, const QPainterPath &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPainterPath & /Constrained/) /ReleaseGIL/; class QPainterPathStroker { %TypeHeaderCode #include %End public: QPainterPathStroker(); explicit QPainterPathStroker(const QPen &pen); ~QPainterPathStroker(); void setWidth(qreal width); qreal width() const; void setCapStyle(Qt::PenCapStyle style); Qt::PenCapStyle capStyle() const; void setJoinStyle(Qt::PenJoinStyle style); Qt::PenJoinStyle joinStyle() const; void setMiterLimit(qreal length); qreal miterLimit() const; void setCurveThreshold(qreal threshold); qreal curveThreshold() const; void setDashPattern(Qt::PenStyle); void setDashPattern(const QList &dashPattern); QList dashPattern() const; QPainterPath createStroke(const QPainterPath &path) const; void setDashOffset(qreal offset); qreal dashOffset() const; private: QPainterPathStroker(const QPainterPathStroker &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3542418 PyQt6-6.6.1/sip/QtGui/qpalette.sip0000644000076500000240000001077514532160401015554 0ustar00philstaff// qpalette.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPalette { %TypeHeaderCode #include %End public: QPalette(); QPalette(const QColor &button); QPalette(Qt::GlobalColor button); QPalette(const QColor &button, const QColor &background); QPalette(const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); QPalette(const QPalette &palette); QPalette(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPalette(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPalette(); enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal, }; enum ColorRole { WindowText, Button, Light, Midlight, Dark, Mid, Text, BrightText, ButtonText, Base, Window, Shadow, Highlight, HighlightedText, Link, LinkVisited, AlternateBase, ToolTipBase, ToolTipText, PlaceholderText, %If (Qt_6_6_0 -) Accent, %End NoRole, NColorRoles, }; QPalette::ColorGroup currentColorGroup() const; void setCurrentColorGroup(QPalette::ColorGroup cg); const QColor &color(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; void setBrush(QPalette::ColorGroup cg, QPalette::ColorRole cr, const QBrush &brush); void setColorGroup(QPalette::ColorGroup cr, const QBrush &foreground, const QBrush &button, const QBrush &light, const QBrush &dark, const QBrush &mid, const QBrush &text, const QBrush &bright_text, const QBrush &base, const QBrush &background); bool isEqual(QPalette::ColorGroup cr1, QPalette::ColorGroup cr2) const; const QColor &color(QPalette::ColorRole cr) const; const QBrush &brush(QPalette::ColorRole cr) const; const QBrush &windowText() const; const QBrush &button() const; const QBrush &light() const; const QBrush &dark() const; const QBrush &mid() const; const QBrush &text() const; const QBrush &base() const; const QBrush &alternateBase() const; const QBrush &window() const; const QBrush &midlight() const; const QBrush &brightText() const; const QBrush &buttonText() const; const QBrush &shadow() const; const QBrush &highlight() const; const QBrush &highlightedText() const; const QBrush &link() const; const QBrush &linkVisited() const; const QBrush &toolTipBase() const; const QBrush &toolTipText() const; const QBrush &placeholderText() const; bool operator==(const QPalette &p) const; bool operator!=(const QPalette &p) const; bool isCopyOf(const QPalette &p) const; QPalette resolve(const QPalette &) const; void setColor(QPalette::ColorGroup acg, QPalette::ColorRole acr, const QColor &acolor); void setColor(QPalette::ColorRole acr, const QColor &acolor); void setBrush(QPalette::ColorRole acr, const QBrush &abrush); bool isBrushSet(QPalette::ColorGroup cg, QPalette::ColorRole cr) const; qint64 cacheKey() const; void swap(QPalette &other /Constrained/); %If (Qt_6_6_0 -) const QBrush &accent() const; %End }; QDataStream &operator<<(QDataStream &s, const QPalette &p) /ReleaseGIL/; QDataStream &operator>>(QDataStream &ds, QPalette &p /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3816402 PyQt6-6.6.1/sip/QtGui/qpdfwriter.sip0000644000076500000240000000353514532160401016120 0ustar00philstaff// qpdfwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfWriter : QObject, QPagedPaintDevice { %TypeHeaderCode #include %End public: explicit QPdfWriter(const QString &filename); explicit QPdfWriter(QIODevice *device); virtual ~QPdfWriter(); QString title() const; void setTitle(const QString &title); QString creator() const; void setCreator(const QString &creator); virtual bool newPage(); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric id) const; public: void setResolution(int resolution); int resolution() const; void setPdfVersion(QPagedPaintDevice::PdfVersion version); QPagedPaintDevice::PdfVersion pdfVersion() const; void setDocumentXmpMetadata(const QByteArray &xmpMetadata); QByteArray documentXmpMetadata() const; void addFileAttachment(const QString &fileName, const QByteArray &data, const QString &mimeType = QString()); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3529184 PyQt6-6.6.1/sip/QtGui/qpen.sip0000644000076500000240000000650514532160401014674 0ustar00philstaff// qpen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPen /TypeHintIn="Union[QPen, QColor]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QColor to be used whenever a QPen is expected. if (sipIsErr == NULL) return (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS) || sipCanConvertToType(sipPy, sipType_QColor, 0)); if (sipCanConvertToType(sipPy, sipType_QPen, SIP_NO_CONVERTORS)) { *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QPen, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; } int state; QColor *c = reinterpret_cast(sipConvertToType(sipPy, sipType_QColor, 0, 0, &state, sipIsErr)); if (*sipIsErr) { sipReleaseType(c, sipType_QColor, state); return 0; } *sipCppPtr = new QPen(*c); sipReleaseType(c, sipType_QColor, state); return sipGetState(sipTransferObj); %End public: QPen(); QPen(Qt::PenStyle); QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin); QPen(const QPen &pen); QPen(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPen(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QPen(); Qt::PenStyle style() const; void setStyle(Qt::PenStyle); qreal widthF() const; void setWidthF(qreal width); int width() const; void setWidth(int width); QColor color() const; void setColor(const QColor &color); QBrush brush() const; void setBrush(const QBrush &brush); bool isSolid() const; Qt::PenCapStyle capStyle() const; void setCapStyle(Qt::PenCapStyle pcs); Qt::PenJoinStyle joinStyle() const; void setJoinStyle(Qt::PenJoinStyle pcs); QList dashPattern() const; void setDashPattern(const QList &pattern); qreal miterLimit() const; void setMiterLimit(qreal limit); bool operator==(const QPen &p) const; bool operator!=(const QPen &p) const; qreal dashOffset() const; void setDashOffset(qreal doffset); bool isCosmetic() const; void setCosmetic(bool cosmetic); void swap(QPen &other /Constrained/); }; QDataStream &operator<<(QDataStream &, const QPen &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPen & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4037056 PyQt6-6.6.1/sip/QtGui/qpicture.sip0000644000076500000240000000374514532160401015570 0ustar00philstaff// qpicture.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPicture : QPaintDevice { %TypeHeaderCode #include %End public: explicit QPicture(int formatVersion = -1); QPicture(const QPicture &); virtual ~QPicture(); bool isNull() const; virtual int devType() const; uint size() const; const char *data() const /Encoding="None"/; virtual void setData(const char *data /Array/, uint size /ArraySize/); bool play(QPainter *p); bool load(const QString &fileName) /ReleaseGIL/; bool load(QIODevice *dev) /ReleaseGIL/; bool save(const QString &fileName) /ReleaseGIL/; bool save(QIODevice *dev) /ReleaseGIL/; QRect boundingRect() const; void setBoundingRect(const QRect &r); void detach(); bool isDetached() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric m) const; public: void swap(QPicture &other /Constrained/); }; QDataStream &operator<<(QDataStream &in, const QPicture &p) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QPicture &p /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3830733 PyQt6-6.6.1/sip/QtGui/qpixelformat.sip0000644000076500000240000001262014532160401016437 0ustar00philstaff// qpixelformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QPixelFormat { %TypeHeaderCode #include %End public: enum ColorModel { RGB, BGR, Indexed, Grayscale, CMYK, HSL, HSV, YUV, Alpha, }; enum AlphaUsage { UsesAlpha, IgnoresAlpha, }; enum AlphaPosition { AtBeginning, AtEnd, }; enum AlphaPremultiplied { NotPremultiplied, Premultiplied, }; enum TypeInterpretation { UnsignedInteger, UnsignedShort, UnsignedByte, FloatingPoint, }; enum YUVLayout { YUV444, YUV422, YUV411, YUV420P, YUV420SP, YV12, UYVY, YUYV, NV12, NV21, IMC1, IMC2, IMC3, IMC4, Y8, Y16, }; enum ByteOrder { LittleEndian, BigEndian, CurrentSystemEndian, }; QPixelFormat(); QPixelFormat(QPixelFormat::ColorModel mdl, uchar firstSize /PyInt/, uchar secondSize /PyInt/, uchar thirdSize /PyInt/, uchar fourthSize /PyInt/, uchar fifthSize /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premult, QPixelFormat::TypeInterpretation typeInterp, QPixelFormat::ByteOrder byteOrder = QPixelFormat::CurrentSystemEndian, uchar subEnum /PyInt/ = 0); QPixelFormat::ColorModel colorModel() const; uchar channelCount() const /PyInt/; uchar redSize() const /PyInt/; uchar greenSize() const /PyInt/; uchar blueSize() const /PyInt/; uchar cyanSize() const /PyInt/; uchar magentaSize() const /PyInt/; uchar yellowSize() const /PyInt/; uchar blackSize() const /PyInt/; uchar hueSize() const /PyInt/; uchar saturationSize() const /PyInt/; uchar lightnessSize() const /PyInt/; uchar brightnessSize() const /PyInt/; uchar alphaSize() const /PyInt/; uchar bitsPerPixel() const /PyInt/; QPixelFormat::AlphaUsage alphaUsage() const; QPixelFormat::AlphaPosition alphaPosition() const; QPixelFormat::AlphaPremultiplied premultiplied() const; QPixelFormat::TypeInterpretation typeInterpretation() const; QPixelFormat::ByteOrder byteOrder() const; QPixelFormat::YUVLayout yuvLayout() const; uchar subEnum() const /PyInt/; }; bool operator==(QPixelFormat fmt1, QPixelFormat fmt2); bool operator!=(QPixelFormat fmt1, QPixelFormat fmt2); QPixelFormat qPixelFormatRgba(uchar red /PyInt/, uchar green /PyInt/, uchar blue /PyInt/, uchar alfa /PyInt/, QPixelFormat::AlphaUsage usage, QPixelFormat::AlphaPosition position, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); QPixelFormat qPixelFormatGrayscale(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); QPixelFormat qPixelFormatCmyk(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); QPixelFormat qPixelFormatHsl(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); QPixelFormat qPixelFormatHsv(uchar channelSize /PyInt/, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::FloatingPoint); QPixelFormat qPixelFormatYuv(QPixelFormat::YUVLayout layout, uchar alphaSize /PyInt/ = 0, QPixelFormat::AlphaUsage alphaUsage = QPixelFormat::IgnoresAlpha, QPixelFormat::AlphaPosition alphaPosition = QPixelFormat::AtBeginning, QPixelFormat::AlphaPremultiplied premultiplied = QPixelFormat::NotPremultiplied, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedByte, QPixelFormat::ByteOrder byteOrder = QPixelFormat::LittleEndian); QPixelFormat qPixelFormatAlpha(uchar channelSize /PyInt/, QPixelFormat::TypeInterpretation typeInterpretation = QPixelFormat::UnsignedInteger); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.345786 PyQt6-6.6.1/sip/QtGui/qpixmap.sip0000644000076500000240000001146514532160401015411 0ustar00philstaff// qpixmap.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmap : QPaintDevice { %TypeHeaderCode #include %End public: QPixmap(); QPixmap(int w, int h); explicit QPixmap(const QSize &); QPixmap(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); explicit QPixmap(SIP_PYLIST xpm /TypeHint="List[str]"/) [(const char * const *xpm)]; %MethodCode // The Python interface is a list of ASCII strings that make up the image. const char **str = QtGui_ListToArray(a0); if (str) { sipCpp = new sipQPixmap(str); QtGui_DeleteArray(str); } else sipIsErr = 1; %End QPixmap(const QPixmap &); QPixmap(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new sipQPixmap(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End virtual ~QPixmap(); bool isNull() const; virtual int devType() const; int width() const; int height() const; QSize size() const; QRect rect() const; int depth() const; static int defaultDepth(); void fill(const QColor &color = Qt::white); QBitmap mask() const; void setMask(const QBitmap &); bool hasAlpha() const; bool hasAlphaChannel() const; QBitmap createHeuristicMask(bool clipTight = true) const; QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const; QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const; QPixmap scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const; QPixmap scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const; QImage toImage() const; static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor); static QPixmap fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor); bool convertFromImage(const QImage &img, Qt::ImageConversionFlags flags = Qt::AutoColor); bool load(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const uchar *buf /Array/, uint len /ArraySize/, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool loadFromData(const QByteArray &buf, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor); bool save(const QString &fileName, const char *format = 0, int quality = -1) const; bool save(QIODevice *device, const char *format = 0, int quality = -1) const; QPixmap copy(const QRect &rect = QRect()) const; void detach(); bool isQBitmap() const; virtual QPaintEngine *paintEngine() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; public: QPixmap copy(int ax, int ay, int awidth, int aheight) const; QPixmap transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const; static QTransform trueMatrix(const QTransform &m, int w, int h); qint64 cacheKey() const; void scroll(int dx, int dy, const QRect &rect, QRegion *exposed /Out/ = 0); void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed /Out/ = 0); void swap(QPixmap &other /Constrained/); qreal devicePixelRatio() const; void setDevicePixelRatio(qreal scaleFactor); %If (Qt_6_2_0 -) QSizeF deviceIndependentSize() const; %End }; QDataStream &operator<<(QDataStream &, const QPixmap &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPixmap & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3803961 PyQt6-6.6.1/sip/QtGui/qpixmapcache.sip0000644000076500000240000000446114532160401016373 0ustar00philstaff// qpixmapcache.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPixmapCache { %TypeHeaderCode #include %End public: class Key { %TypeHeaderCode #include %End public: Key(); Key(const QPixmapCache::Key &other); ~Key(); bool operator==(const QPixmapCache::Key &key) const; bool operator!=(const QPixmapCache::Key &key) const; void swap(QPixmapCache::Key &other /Constrained/); bool isValid() const; %If (Qt_6_6_0 -) Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End %End }; static int cacheLimit(); static void clear(); static QPixmap find(const QString &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static QPixmap find(const QPixmapCache::Key &key); %MethodCode sipRes = new QPixmap; if (!QPixmapCache::find(*a0, sipRes)) { delete sipRes; sipRes = 0; } %End static bool insert(const QString &key, const QPixmap &); static QPixmapCache::Key insert(const QPixmap &pixmap); static void remove(const QString &key); static void remove(const QPixmapCache::Key &key); static bool replace(const QPixmapCache::Key &key, const QPixmap &pixmap); static void setCacheLimit(int); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.416416 PyQt6-6.6.1/sip/QtGui/qpointingdevice.sip0000644000076500000240000000470314532160401017117 0ustar00philstaff// qpointingdevice.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPointingDeviceUniqueId { %TypeHeaderCode #include %End public: QPointingDeviceUniqueId(); static QPointingDeviceUniqueId fromNumericId(qint64 id); bool isValid() const; qint64 numericId() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs); bool operator!=(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs); class QPointingDevice : QInputDevice { %TypeHeaderCode #include %End public: enum class PointerType /BaseType=Flag/ { Unknown, Generic, Finger, Pen, Eraser, Cursor, AllPointerTypes, }; typedef QFlags PointerTypes; QPointingDevice(const QString &name, qint64 systemId, QInputDevice::DeviceType devType, QPointingDevice::PointerType pType, QInputDevice::Capabilities caps, int maxPoints, int buttonCount, const QString &seatName = QString(), QPointingDeviceUniqueId uniqueId = QPointingDeviceUniqueId(), QObject *parent /TransferThis/ = 0); QPointingDevice(QObject *parent /TransferThis/ = 0); virtual ~QPointingDevice(); QPointingDevice::PointerType pointerType() const; int maximumPoints() const; int buttonCount() const; QPointingDeviceUniqueId uniqueId() const; static const QPointingDevice *primaryPointingDevice(const QString &seatName = QString()); bool operator==(const QPointingDevice &other) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.368334 PyQt6-6.6.1/sip/QtGui/qpolygon.sip0000644000076500000240000002732314532160401015602 0ustar00philstaff// qpolygon.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPolygon { %TypeHeaderCode #include %End %PickleCode PyObject *pl = PyList_New(sipCpp->count() * 2); for (int p = 0, i = 0; i < sipCpp->count(); ++i, p += 2) { int x, y; sipCpp->point(i, &x, &y); PyList_SetItem(pl, p, PyLong_FromLong(x)); PyList_SetItem(pl, p + 1, PyLong_FromLong(y)); } sipRes = Py_BuildValue("(N)", pl); %End public: QPolygon(); QPolygon(const QRect &r, bool closed = false); QPolygon(const QList &v); QPolygon(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPolygon(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End void swap(QPolygon &other /Constrained/); void translate(int dx, int dy); void translate(const QPoint &offset); QPolygon translated(int dx, int dy) const; QPolygon translated(const QPoint &offset) const; QRect boundingRect() const; QPoint point(int i) const; void setPoint(int index, int x, int y); void setPoint(int index, const QPoint &p); void setPoints(int firstx, int firsty, ... /TypeHint="int"/); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_Size(a2) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a0; points[1] = a1; for (Py_ssize_t i = 0; i < PyTuple_Size(a2); ++i) points[2 + i] = PyLong_AsLong(PyTuple_GetItem(a2, i)); sipCpp->setPoints(nPoints, points); delete[] points; %End void putPoints(int index, int firstx, int firsty, ... /TypeHint="int"/); %MethodCode // Accept at least one pair of integer coordinates. int nPoints = 1 + ((PyTuple_Size(a3) + 1) >> 1); int *points = new int[nPoints * 2]; points[0] = a1; points[1] = a2; for (Py_ssize_t i = 0; i < PyTuple_Size(a3); ++i) points[2 + i] = PyLong_AsLong(PyTuple_GetItem(a3, i)); sipCpp->putPoints(a0, nPoints, points); delete[] points; %End void putPoints(int index, int nPoints, const QPolygon &fromPolygon, int from = 0); bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const; QPolygon united(const QPolygon &r) const; QPolygon intersected(const QPolygon &r) const; QPolygon subtracted(const QPolygon &r) const; bool intersects(const QPolygon &r) const; // Methods inherited from QList and Python special methods. // Keep in sync with QPolygonF and QXmlStreamAttributes. void append(const QPoint &value); const QPoint &at(int i) const; void clear(); bool contains(const QPoint &value) const; int count(const QPoint &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPoint &value, int size = -1); QPoint &first(); int indexOf(const QPoint &value, int from = 0) const; void insert(int i, const QPoint &value); bool isEmpty() const; QPoint &last(); int lastIndexOf(const QPoint &value, int from = -1) const; // Note the Qt return type is QList. QPolygon mid(int pos, int length = -1) const; void prepend(const QPoint &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPoint &value); void resize(qsizetype size); int size() const; QPoint value(int i) const; QPoint value(int i, const QPoint &defaultValue) const; bool operator!=(const QPolygon &other) const; // Note the Qt return type is QList. QPolygon operator+(const QPolygon &other) const; QPolygon &operator+=(const QPolygon &other); QPolygon &operator+=(const QPoint &value); bool operator==(const QPolygon &other) const; SIP_PYOBJECT operator<<(const QPoint &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPoint &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = &sipCpp->operator[]((int)idx); %End // Some additional Python special methods. void __setitem__(int i, const QPoint &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygon &list); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QList::const_iterator it = a1->begin(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { for (Py_ssize_t i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } } %End QPolygon operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QPolygon(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPoint &value); %MethodCode sipRes = bool(sipCpp->contains(*a0)); %End %If (Qt_6_4_0 -) QPolygonF toPolygonF() const; %End }; QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygon &polygon /Constrained/) /ReleaseGIL/; class QPolygonF { %TypeHeaderCode #include %End public: QPolygonF(); QPolygonF(const QList &v); QPolygonF(const QRectF &r); QPolygonF(const QPolygon &a); QPolygonF(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QPolygonF(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End void swap(QPolygonF &other /Constrained/); void translate(qreal dx, qreal dy); void translate(const QPointF &offset); QPolygonF translated(qreal dx, qreal dy) const; QPolygonF translated(const QPointF &offset) const; QPolygon toPolygon() const; bool isClosed() const; QRectF boundingRect() const; bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const; QPolygonF united(const QPolygonF &r) const; QPolygonF intersected(const QPolygonF &r) const; QPolygonF subtracted(const QPolygonF &r) const; bool intersects(const QPolygonF &r) const; // Methods inherited from QList and Python special methods. // Keep in sync with QPolygon and QXmlStreamAttributes. void append(const QPointF &value); const QPointF &at(int i) const; void clear(); bool contains(const QPointF &value) const; int count(const QPointF &value) const; int count() const /__len__/; void *data(); // Note the Qt return value is discarded as it would require handwritten code // and seems pretty useless. void fill(const QPointF &value, int size = -1); QPointF &first(); int indexOf(const QPointF &value, int from = 0) const; void insert(int i, const QPointF &value); bool isEmpty() const; QPointF &last(); int lastIndexOf(const QPointF &value, int from = -1) const; // Note the Qt return type is QList. QPolygonF mid(int pos, int length = -1) const; void prepend(const QPointF &value); void remove(int i); void remove(int i, int count); void replace(int i, const QPointF &value); void resize(qsizetype size); int size() const; QPointF value(int i) const; QPointF value(int i, const QPointF &defaultValue) const; bool operator!=(const QPolygonF &other) const; // Note the Qt return type is QList. QPolygonF operator+(const QPolygonF &other) const; QPolygonF &operator+=(const QPolygonF &other); QPolygonF &operator+=(const QPointF &value); bool operator==(const QPolygonF &other) const; SIP_PYOBJECT operator<<(const QPointF &value); %MethodCode *a0 << *a1; sipRes = sipArg0; Py_INCREF(sipRes); %End QPointF &operator[](int i); %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = &sipCpp->operator[]((int)idx); %End // Some additional Python special methods. void __setitem__(int i, const QPointF &value); %MethodCode int len; len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __setitem__(SIP_PYSLICE slice, const QPolygonF &list); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { int vlen = a1->count(); if (vlen != slicelength) { sipBadLengthForSlice(vlen, slicelength); sipIsErr = 1; } else { QList::const_iterator it = a1->begin(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipCpp)[start] = *it; start += step; ++it; } } } %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->remove(a0); %End void __delitem__(SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { for (Py_ssize_t i = 0; i < slicelength; ++i) { sipCpp->remove(start); start += step - 1; } } %End QPolygonF operator[](SIP_PYSLICE slice); %MethodCode Py_ssize_t start, stop, step, slicelength; if (sipConvertFromSliceObject(a0, sipCpp->count(), &start, &stop, &step, &slicelength) < 0) { sipIsErr = 1; } else { sipRes = new QPolygonF(); for (Py_ssize_t i = 0; i < slicelength; ++i) { (*sipRes) += (*sipCpp)[start]; start += step; } } %End int __contains__(const QPointF &value); %MethodCode sipRes = bool(sipCpp->contains(*a0)); %End }; QDataStream &operator<<(QDataStream &stream, const QPolygonF &array) /ReleaseGIL/; QDataStream &operator>>(QDataStream &stream, QPolygonF &array /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.381049 PyQt6-6.6.1/sip/QtGui/qpygui_qlist.sip0000644000076500000240000000523714532160401016464 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtGui module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Sequence[QFontDatabase.WritingSystem]", TypeHintOut="List[QFontDatabase.WritingSystem]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QFontDatabase_WritingSystem); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len < 0) return 0; QList *ql = new QList; for (Py_ssize_t i = 0; i < len; ++i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete ql; *sipIsErr = 1; return 0; } int v = sipConvertToEnum(itm, sipType_QFontDatabase_WritingSystem); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "element %zd has type '%s' but 'QFontDatabase.WritingSystem' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.366483 PyQt6-6.6.1/sip/QtGui/qquaternion.sip0000644000076500000240000001172414532160401016276 0ustar00philstaff// qquaternion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QQuaternion { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("dddd", (double)sipCpp->scalar(), (double)sipCpp->x(), (double)sipCpp->y(), (double)sipCpp->z()); %End public: QQuaternion(); QQuaternion(float aScalar, float xpos, float ypos, float zpos); QQuaternion(float aScalar, const QVector3D &aVector); explicit QQuaternion(const QVector4D &aVector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *scalar = PyFloat_FromDouble(sipCpp->scalar()); PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (scalar && x && y && z) sipRes = PyUnicode_FromFormat( "PyQt6.QtGui.QQuaternion(%R, %R, %R, %R)", scalar, x, y, z); Py_XDECREF(scalar); Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End float length() const; float lengthSquared() const; QQuaternion normalized() const; void normalize(); QVector3D rotatedVector(const QVector3D &vector) const; static QQuaternion fromAxisAndAngle(const QVector3D &axis, float angle); static QQuaternion fromAxisAndAngle(float x, float y, float z, float angle); static QQuaternion slerp(const QQuaternion &q1, const QQuaternion &q2, float t); static QQuaternion nlerp(const QQuaternion &q1, const QQuaternion &q2, float t); bool isNull() const; bool isIdentity() const; float x() const; float y() const; float z() const; float scalar() const; void setX(float aX); void setY(float aY); void setZ(float aZ); void setScalar(float aScalar); QQuaternion &operator+=(const QQuaternion &quaternion); QQuaternion &operator-=(const QQuaternion &quaternion); QQuaternion &operator*=(float factor); QQuaternion &operator*=(const QQuaternion &quaternion); QQuaternion &operator/=(float divisor); void setVector(const QVector3D &aVector); QVector3D vector() const; void setVector(float aX, float aY, float aZ); QVector4D toVector4D() const; void getAxisAndAngle(QVector3D *axis /Out/, float *angle) const; void getEulerAngles(float *pitch, float *yaw, float *roll) const; static QQuaternion fromEulerAngles(float pitch, float yaw, float roll); QMatrix3x3 toRotationMatrix() const; static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3); void getAxes(QVector3D *xAxis /Out/, QVector3D *yAxis /Out/, QVector3D *zAxis /Out/) const; static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis); static QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up); static QQuaternion rotationTo(const QVector3D &from, const QVector3D &to); static float dotProduct(const QQuaternion &q1, const QQuaternion &q2); QQuaternion inverted() const; QQuaternion conjugated() const; QVector3D toEulerAngles() const; static QQuaternion fromEulerAngles(const QVector3D &eulerAngles); }; const QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2); bool operator==(const QQuaternion &q1, const QQuaternion &q2); bool operator!=(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator+(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2); const QQuaternion operator*(float factor, const QQuaternion &quaternion); const QQuaternion operator*(const QQuaternion &quaternion, float factor); const QQuaternion operator-(const QQuaternion &quaternion); const QQuaternion operator/(const QQuaternion &quaternion, float divisor); bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2); QDataStream &operator<<(QDataStream &, const QQuaternion &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QQuaternion & /Constrained/) /ReleaseGIL/; QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3969688 PyQt6-6.6.1/sip/QtGui/qrasterwindow.sip0000644000076500000240000000231614532160401016636 0ustar00philstaff// qrasterwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRasterWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: explicit QRasterWindow(QWindow *parent /TransferThis/ = 0); virtual ~QRasterWindow(); protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.365238 PyQt6-6.6.1/sip/QtGui/qrawfont.sip0000644000076500000240000000704014532160401015565 0ustar00philstaff// qrawfont.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_RawFont) class QRawFont { %TypeHeaderCode #include %End public: enum AntialiasingType { PixelAntialiasing, SubPixelAntialiasing, }; QRawFont(); QRawFont(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference = QFont::PreferDefaultHinting); QRawFont(const QRawFont &other); ~QRawFont(); bool isValid() const; bool operator==(const QRawFont &other) const; bool operator!=(const QRawFont &other) const; QString familyName() const; QString styleName() const; QFont::Style style() const; int weight() const; QList glyphIndexesForString(const QString &text) const; QList advancesForGlyphIndexes(const QList &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const; QList advancesForGlyphIndexes(const QList &glyphIndexes) const; QImage alphaMapForGlyph(quint32 glyphIndex, QRawFont::AntialiasingType antialiasingType = QRawFont::SubPixelAntialiasing, const QTransform &transform = QTransform()) const; QPainterPath pathForGlyph(quint32 glyphIndex) const; void setPixelSize(qreal pixelSize); qreal pixelSize() const; QFont::HintingPreference hintingPreference() const; qreal ascent() const; qreal descent() const; qreal leading() const; qreal xHeight() const; qreal averageCharWidth() const; qreal maxCharWidth() const; qreal unitsPerEm() const; void loadFromFile(const QString &fileName, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; void loadFromData(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) /ReleaseGIL/; bool supportsCharacter(uint ucs4) const; bool supportsCharacter(QChar character) const; QList supportedWritingSystems() const; QByteArray fontTable(const char *tagName) const; static QRawFont fromFont(const QFont &font, QFontDatabase::WritingSystem writingSystem = QFontDatabase::Any); QRectF boundingRect(quint32 glyphIndex) const; qreal lineThickness() const; qreal underlinePosition() const; void swap(QRawFont &other /Constrained/); enum LayoutFlag /BaseType=Flag/ { SeparateAdvances, KernedAdvances, UseDesignMetrics, }; typedef QFlags LayoutFlags; qreal capHeight() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.401306 PyQt6-6.6.1/sip/QtGui/qregion.sip0000644000076500000240000000727014532160401015375 0ustar00philstaff// qregion.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRegion { %TypeHeaderCode #include %End public: enum RegionType { Rectangle, Ellipse, }; QRegion(); QRegion(int x, int y, int w, int h, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QRect &r, QRegion::RegionType type = QRegion::Rectangle); QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill); QRegion(const QBitmap &bitmap); QRegion(const QRegion ®ion); QRegion(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QRegion(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QRegion(); bool isEmpty() const; int __bool__() const; %MethodCode sipRes = !sipCpp->isEmpty(); %End bool contains(const QPoint &p) const; int __contains__(const QPoint &p) const; %MethodCode sipRes = sipCpp->contains(*a0); %End bool contains(const QRect &r) const; int __contains__(const QRect &r) const; %MethodCode sipRes = sipCpp->contains(*a0); %End void translate(int dx, int dy); void translate(const QPoint &p); QRegion translated(int dx, int dy) const; QRegion translated(const QPoint &p) const; QRegion united(const QRegion &r) const; QRegion united(const QRect &r) const; QRect boundingRect() const; QRegion operator|(const QRegion &r) const; void setRects(const QList &); %MethodCode if (a0->size()) sipCpp->setRects(a0->data(), a0->size()); else sipCpp->setRects(0, 0); %End QRegion operator+(const QRegion &r) const; QRegion operator+(const QRect &r) const; QRegion operator&(const QRegion &r) const; QRegion operator&(const QRect &r) const; QRegion operator-(const QRegion &r) const; QRegion operator^(const QRegion &r) const; QRegion &operator|=(const QRegion &r); QRegion &operator+=(const QRegion &r); QRegion &operator+=(const QRect &r); QRegion &operator&=(const QRegion &r); QRegion &operator&=(const QRect &r); QRegion &operator-=(const QRegion &r); QRegion &operator^=(const QRegion &r); bool operator==(const QRegion &r) const; bool operator!=(const QRegion &r) const; QRegion intersected(const QRegion &r) const; QRegion intersected(const QRect &r) const; QRegion subtracted(const QRegion &r) const; QRegion xored(const QRegion &r) const; bool intersects(const QRegion &r) const; bool intersects(const QRect &r) const; int rectCount() const; void swap(QRegion &other /Constrained/); bool isNull() const; }; QDataStream &operator<<(QDataStream &, const QRegion &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QRegion & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3451326 PyQt6-6.6.1/sip/QtGui/qrgb.sip0000644000076500000240000000236714532160401014666 0ustar00philstaff// qrgb.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End typedef unsigned int QRgb; int qRed(QRgb rgb); int qGreen(QRgb rgb); int qBlue(QRgb rgb); int qAlpha(QRgb rgb); QRgb qRgb(int r, int g, int b); QRgb qRgba(int r, int g, int b, int a); int qGray(int r, int g, int b); int qGray(QRgb rgb); QRgb qPremultiply(QRgb x); QRgb qUnpremultiply(QRgb p); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4107742 PyQt6-6.6.1/sip/QtGui/qrgba64.sip0000644000076500000240000000413514532160401015174 0ustar00philstaff// qrgba64.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QRgba64 { %TypeHeaderCode #include %End public: QRgba64(); static QRgba64 fromRgba64(quint64 c); static QRgba64 fromRgba64(quint16 red, quint16 green, quint16 blue, quint16 alpha); static QRgba64 fromRgba(quint8 red, quint8 green, quint8 blue, quint8 alpha); static QRgba64 fromArgb32(uint rgb); bool isOpaque() const; bool isTransparent() const; quint16 red() const; quint16 green() const; quint16 blue() const; quint16 alpha() const; void setRed(quint16 _red); void setGreen(quint16 _green); void setBlue(quint16 _blue); void setAlpha(quint16 _alpha); quint8 red8() const; quint8 green8() const; quint8 blue8() const; quint8 alpha8() const; uint toArgb32() const; ushort toRgb16() const; QRgba64 premultiplied() const; QRgba64 unpremultiplied() const; operator quint64() const; }; QRgba64 qRgba64(quint16 r, quint16 g, quint16 b, quint16 a); QRgba64 qRgba64(quint64 c); QRgba64 qPremultiply(QRgba64 c); QRgba64 qUnpremultiply(QRgba64 c); uint qRed(QRgba64 rgb); uint qGreen(QRgba64 rgb); uint qBlue(QRgba64 rgb); uint qAlpha(QRgba64 rgb); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3636317 PyQt6-6.6.1/sip/QtGui/qscreen.sip0000644000076500000240000000600114532160401015360 0ustar00philstaff// qscreen.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScreen : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QScreen(); QString name() const; int depth() const; QSize size() const; QRect geometry() const; QSizeF physicalSize() const; qreal physicalDotsPerInchX() const; qreal physicalDotsPerInchY() const; qreal physicalDotsPerInch() const; qreal logicalDotsPerInchX() const; qreal logicalDotsPerInchY() const; qreal logicalDotsPerInch() const; QSize availableSize() const; QRect availableGeometry() const; QList virtualSiblings() const; QSize virtualSize() const; QRect virtualGeometry() const; QSize availableVirtualSize() const; QRect availableVirtualGeometry() const; Qt::ScreenOrientation nativeOrientation() const; Qt::ScreenOrientation primaryOrientation() const; Qt::ScreenOrientation orientation() const; int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b) const; QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target) const; QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect) const; bool isPortrait(Qt::ScreenOrientation orientation) const; bool isLandscape(Qt::ScreenOrientation orientation) const; QPixmap grabWindow(WId window = 0, int x = 0, int y = 0, int width = -1, int height = -1); qreal refreshRate() const; qreal devicePixelRatio() const; signals: void geometryChanged(const QRect &geometry); void physicalDotsPerInchChanged(qreal dpi); void logicalDotsPerInchChanged(qreal dpi); void primaryOrientationChanged(Qt::ScreenOrientation orientation); void orientationChanged(Qt::ScreenOrientation orientation); void refreshRateChanged(qreal refreshRate); void physicalSizeChanged(const QSizeF &size); void virtualGeometryChanged(const QRect &rect); void availableGeometryChanged(const QRect &geometry); public: QString manufacturer() const; QString model() const; QString serialNumber() const; QScreen *virtualSiblingAt(QPoint point); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4054868 PyQt6-6.6.1/sip/QtGui/qsessionmanager.sip0000644000076500000240000000370614532160401017130 0ustar00philstaff// qsessionmanager.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SessionManager) class QSessionManager : QObject { %TypeHeaderCode #include %End QSessionManager(QGuiApplication *app /TransferThis/, QString &id, QString &key); virtual ~QSessionManager(); public: QString sessionId() const; QString sessionKey() const; bool allowsInteraction(); bool allowsErrorInteraction(); void release(); void cancel(); enum RestartHint { RestartIfRunning, RestartAnyway, RestartImmediately, RestartNever, }; void setRestartHint(QSessionManager::RestartHint); QSessionManager::RestartHint restartHint() const; void setRestartCommand(const QStringList &); QStringList restartCommand() const; void setDiscardCommand(const QStringList &); QStringList discardCommand() const; void setManagerProperty(const QString &name, const QString &value); void setManagerProperty(const QString &name, const QStringList &value); bool isPhase2() const; void requestPhase2(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4091642 PyQt6-6.6.1/sip/QtGui/qshortcut.sip0000644000076500000240000001370014532160401015760 0ustar00philstaff// qshortcut.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QShortcut : QObject { %TypeHeaderCode #include %End public: QShortcut(QKeySequence::StandardKey key, QObject *parent /TransferThis/, SIP_PYOBJECT member /TypeHint="PYQT_SLOT"/ = 0, SIP_PYOBJECT ambiguousMember /TypeHint="PYQT_SLOT"/ = 0, Qt::ShortcutContext context = Qt::WindowShortcut) [(QKeySequence::StandardKey key, QObject *parent, const char *member = 0, const char *ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut)]; %MethodCode // Construct the shortcut without any connections. Py_BEGIN_ALLOW_THREADS sipCpp = new sipQShortcut(a0, a1, 0, 0, a4); Py_END_ALLOW_THREADS if (a2) { QObject *rx2; QByteArray member2; if ((sipError = pyqt6_qtgui_get_connection_parts(a2, sipCpp, "()", false, &rx2, member2)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activated()), rx2, member2.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(2, a2); } } if (a3) { QObject *rx3; QByteArray member3; if ((sipError = pyqt6_qtgui_get_connection_parts(a3, sipCpp, "()", false, &rx3, member3)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activatedAmbiguously()), rx3, member3.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(3, a3); } } %End QShortcut(const QKeySequence &key, QObject *parent /TransferThis/, SIP_PYOBJECT member /TypeHint="PYQT_SLOT"/ = 0, SIP_PYOBJECT ambiguousMember /TypeHint="PYQT_SLOT"/ = 0, Qt::ShortcutContext context = Qt::WindowShortcut) [(const QKeySequence &key, QObject *parent, const char *member = 0, const char *ambiguousMember = 0, Qt::ShortcutContext context = Qt::WindowShortcut)]; %MethodCode // Construct the shortcut without any connections. Py_BEGIN_ALLOW_THREADS sipCpp = new sipQShortcut(*a0, a1, 0, 0, a4); Py_END_ALLOW_THREADS if (a2) { QObject *rx2; QByteArray member2; if ((sipError = pyqt6_qtgui_get_connection_parts(a2, sipCpp, "()", false, &rx2, member2)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activated()), rx2, member2.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(2, a2); } } if (a3) { QObject *rx3; QByteArray member3; if ((sipError = pyqt6_qtgui_get_connection_parts(a3, sipCpp, "()", false, &rx3, member3)) == sipErrorNone) { Py_BEGIN_ALLOW_THREADS QObject::connect(sipCpp, SIGNAL(activatedAmbiguously()), rx3, member3.constData()); Py_END_ALLOW_THREADS } else { delete sipCpp; if (sipError == sipErrorContinue) sipError = sipBadCallableArg(3, a3); } } %End explicit QShortcut(QObject *parent /TransferThis/); virtual ~QShortcut(); void setKey(const QKeySequence &key); QKeySequence key() const; void setEnabled(bool enable); bool isEnabled() const; void setContext(Qt::ShortcutContext context); Qt::ShortcutContext context() const; void setWhatsThis(const QString &text); QString whatsThis() const; void setAutoRepeat(bool on); bool autoRepeat() const; signals: void activated(); void activatedAmbiguously(); public: void setKeys(const QList &keys); void setKeys(QKeySequence::StandardKey key); QList keys() const; protected: virtual bool event(QEvent *e); }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qtgui_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt6_qtgui_get_connection_parts_t pyqt6_qtgui_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtgui_get_connection_parts_t pyqt6_qtgui_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtgui_get_connection_parts = (pyqt6_qtgui_get_connection_parts_t)sipImportSymbol("pyqt6_get_connection_parts"); Q_ASSERT(pyqt6_qtgui_get_connection_parts); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3763351 PyQt6-6.6.1/sip/QtGui/qstandarditemmodel.sip0000644000076500000240000002275014532160401017612 0ustar00philstaff// qstandarditemmodel.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStandardItemModel : QAbstractItemModel { %TypeHeaderCode #include %End public: explicit QStandardItemModel(QObject *parent /TransferThis/ = 0); QStandardItemModel(int rows, int columns, QObject *parent /TransferThis/ = 0); virtual ~QStandardItemModel(); virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; QObject *parent() const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual Qt::ItemFlags flags(const QModelIndex &index) const; void clear(); virtual Qt::DropActions supportedDropActions() const; virtual QMap itemData(const QModelIndex &index) const; virtual bool setItemData(const QModelIndex &index, const QMap &roles); virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); QStandardItem *itemFromIndex(const QModelIndex &index) const; QModelIndex indexFromItem(const QStandardItem *item) const; QStandardItem *item(int row, int column = 0) const; void setItem(int row, int column, QStandardItem *item /Transfer/); void setItem(int arow, QStandardItem *aitem /Transfer/); QStandardItem *invisibleRootItem() const /Transfer/; QStandardItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QStandardItem *item /Transfer/); QStandardItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QStandardItem *item /Transfer/); void setHorizontalHeaderLabels(const QStringList &labels); void setVerticalHeaderLabels(const QStringList &labels); void setRowCount(int rows); void setColumnCount(int columns); void appendRow(const QList &items /Transfer/); void appendColumn(const QList &items /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertColumn(int column, const QList &items /Transfer/); QStandardItem *takeItem(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; QStandardItem *takeHorizontalHeaderItem(int column) /TransferBack/; QStandardItem *takeVerticalHeaderItem(int row) /TransferBack/; const QStandardItem *itemPrototype() const; void setItemPrototype(const QStandardItem *item /Transfer/); QList findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const; int sortRole() const; void setSortRole(int role); void appendRow(QStandardItem *aitem /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); bool insertRow(int row, const QModelIndex &parent = QModelIndex()); bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QModelIndexList &indexes) const /TransferBack/; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); void setItemRoleNames(const QHash &roleNames); virtual bool clearItemData(const QModelIndex &index); virtual QHash roleNames() const; signals: void itemChanged(QStandardItem *item); }; class QStandardItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QStandardItem(); explicit QStandardItem(const QString &text); QStandardItem(const QIcon &icon, const QString &text); QStandardItem(int rows, int columns = 1); virtual ~QStandardItem(); virtual QVariant data(int role = Qt::UserRole + 1) const; virtual void setData(const QVariant &value, int role = Qt::UserRole + 1); QString text() const; QIcon icon() const; QString toolTip() const; QString statusTip() const; QString whatsThis() const; QSize sizeHint() const; QFont font() const; Qt::Alignment textAlignment() const; QBrush background() const; QBrush foreground() const; Qt::CheckState checkState() const; QString accessibleText() const; QString accessibleDescription() const; Qt::ItemFlags flags() const; void setFlags(Qt::ItemFlags flags); bool isEnabled() const; void setEnabled(bool enabled); bool isEditable() const; void setEditable(bool editable); bool isSelectable() const; void setSelectable(bool selectable); bool isCheckable() const; void setCheckable(bool checkable); bool isDragEnabled() const; void setDragEnabled(bool dragEnabled); bool isDropEnabled() const; void setDropEnabled(bool dropEnabled); QStandardItem *parent() const; int row() const; int column() const; QModelIndex index() const; QStandardItemModel *model() const; int rowCount() const; void setRowCount(int rows); int columnCount() const; void setColumnCount(int columns); bool hasChildren() const; QStandardItem *child(int row, int column = 0) const; void setChild(int row, int column, QStandardItem *item /Transfer/); void setChild(int arow, QStandardItem *aitem /Transfer/); void insertRow(int row, const QList &items /Transfer/); void insertRow(int arow, QStandardItem *aitem /Transfer/); void insertRows(int row, int count); void insertColumn(int column, const QList &items /Transfer/); void insertColumns(int column, int count); void removeRow(int row); void removeColumn(int column); void removeRows(int row, int count); void removeColumns(int column, int count); QStandardItem *takeChild(int row, int column = 0) /TransferBack/; QList takeRow(int row) /TransferBack/; QList takeColumn(int column) /TransferBack/; void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStandardItem *clone() const /Factory/; enum ItemType { Type, UserType, }; virtual int type() const; virtual void read(QDataStream &in); virtual void write(QDataStream &out) const; virtual bool operator<(const QStandardItem &other /NoCopy/) const; void setText(const QString &atext); void setIcon(const QIcon &aicon); void setToolTip(const QString &atoolTip); void setStatusTip(const QString &astatusTip); void setWhatsThis(const QString &awhatsThis); void setSizeHint(const QSize &asizeHint); void setFont(const QFont &afont); void setTextAlignment(Qt::Alignment atextAlignment); void setBackground(const QBrush &abrush); void setForeground(const QBrush &abrush); void setCheckState(Qt::CheckState acheckState); void setAccessibleText(const QString &aaccessibleText); void setAccessibleDescription(const QString &aaccessibleDescription); void appendRow(const QList &items /Transfer/); void appendRow(QStandardItem *aitem /Transfer/); void appendColumn(const QList &items /Transfer/); void insertRows(int row, const QList &items /Transfer/); void appendRows(const QList &items /Transfer/); protected: QStandardItem(const QStandardItem &other); void emitDataChanged(); public: bool isAutoTristate() const; void setAutoTristate(bool tristate); bool isUserTristate() const; void setUserTristate(bool tristate); void clearData(); }; QDataStream &operator<<(QDataStream &out, const QStandardItem &item) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QStandardItem &item /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3695583 PyQt6-6.6.1/sip/QtGui/qstatictext.sip0000644000076500000240000000364114532160401016304 0ustar00philstaff// qstatictext.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStaticText { %TypeHeaderCode #include %End public: enum PerformanceHint { ModerateCaching, AggressiveCaching, }; QStaticText(); explicit QStaticText(const QString &text); QStaticText(const QStaticText &other); ~QStaticText(); void setText(const QString &text); QString text() const; void setTextFormat(Qt::TextFormat textFormat); Qt::TextFormat textFormat() const; void setTextWidth(qreal textWidth); qreal textWidth() const; void setTextOption(const QTextOption &textOption); QTextOption textOption() const; QSizeF size() const; void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont()); void setPerformanceHint(QStaticText::PerformanceHint performanceHint); QStaticText::PerformanceHint performanceHint() const; bool operator==(const QStaticText &) const; bool operator!=(const QStaticText &) const; void swap(QStaticText &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.41028 PyQt6-6.6.1/sip/QtGui/qstylehints.sip0000644000076500000240000000576414532160401016326 0ustar00philstaff// qstylehints.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleHints : QObject { %TypeHeaderCode #include %End public: int mouseDoubleClickInterval() const; int startDragDistance() const; int startDragTime() const; int startDragVelocity() const; int keyboardInputInterval() const; int keyboardAutoRepeatRate() const; int cursorFlashTime() const; bool showIsFullScreen() const; int passwordMaskDelay() const; qreal fontSmoothingGamma() const; bool useRtlExtensions() const; QChar passwordMaskCharacter() const; bool setFocusOnTouchRelease() const; int mousePressAndHoldInterval() const; Qt::TabFocusBehavior tabFocusBehavior() const; bool singleClickActivation() const; signals: void cursorFlashTimeChanged(int cursorFlashTime); void keyboardInputIntervalChanged(int keyboardInputInterval); void mouseDoubleClickIntervalChanged(int mouseDoubleClickInterval); void startDragDistanceChanged(int startDragDistance); void startDragTimeChanged(int startDragTime); void mousePressAndHoldIntervalChanged(int mousePressAndHoldInterval); void tabFocusBehaviorChanged(Qt::TabFocusBehavior tabFocusBehavior); public: bool showIsMaximized() const; bool useHoverEffects() const; void setUseHoverEffects(bool useHoverEffects); signals: void useHoverEffectsChanged(bool useHoverEffects); public: int wheelScrollLines() const; signals: void wheelScrollLinesChanged(int scrollLines); public: bool showShortcutsInContextMenus() const; int mouseQuickSelectionThreshold() const; signals: void mouseQuickSelectionThresholdChanged(int threshold); public: void setShowShortcutsInContextMenus(bool showShortcutsInContextMenus); signals: void showShortcutsInContextMenusChanged(bool); public: int mouseDoubleClickDistance() const; int touchDoubleTapDistance() const; %If (Qt_6_5_0 -) qreal keyboardAutoRepeatRateF() const; %End %If (Qt_6_5_0 -) Qt::ColorScheme colorScheme() const; %End signals: %If (Qt_6_5_0 -) void colorSchemeChanged(Qt::ColorScheme colorScheme); %End private: QStyleHints(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3640985 PyQt6-6.6.1/sip/QtGui/qsurface.sip0000644000076500000240000000314214532160401015534 0ustar00philstaff// qsurface.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurface /Abstract/ { %TypeHeaderCode #include %End public: enum SurfaceClass { Window, Offscreen, }; enum SurfaceType { RasterSurface, OpenGLSurface, RasterGLSurface, OpenVGSurface, VulkanSurface, MetalSurface, %If (Qt_6_1_0 -) Direct3DSurface, %End }; virtual ~QSurface(); QSurface::SurfaceClass surfaceClass() const; virtual QSurfaceFormat format() const = 0; virtual QSurface::SurfaceType surfaceType() const = 0; virtual QSize size() const = 0; bool supportsOpenGL() const; protected: explicit QSurface(QSurface::SurfaceClass type); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3518305 PyQt6-6.6.1/sip/QtGui/qsurfaceformat.sip0000644000076500000240000000710314532160401016746 0ustar00philstaff// qsurfaceformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSurfaceFormat { %TypeHeaderCode #include %End public: enum FormatOption /BaseType=Flag/ { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, %If (Qt_6_2_0 -) ProtectedContent, %End }; typedef QFlags FormatOptions; enum SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer, }; enum RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG, }; enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile, }; QSurfaceFormat(); QSurfaceFormat(QSurfaceFormat::FormatOptions options); QSurfaceFormat(const QSurfaceFormat &other); ~QSurfaceFormat(); void setDepthBufferSize(int size); int depthBufferSize() const; void setStencilBufferSize(int size); int stencilBufferSize() const; void setRedBufferSize(int size); int redBufferSize() const; void setGreenBufferSize(int size); int greenBufferSize() const; void setBlueBufferSize(int size); int blueBufferSize() const; void setAlphaBufferSize(int size); int alphaBufferSize() const; void setSamples(int numSamples); int samples() const; void setSwapBehavior(QSurfaceFormat::SwapBehavior behavior); QSurfaceFormat::SwapBehavior swapBehavior() const; bool hasAlpha() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); QSurfaceFormat::OpenGLContextProfile profile() const; void setRenderableType(QSurfaceFormat::RenderableType type); QSurfaceFormat::RenderableType renderableType() const; void setMajorVersion(int majorVersion); int majorVersion() const; void setMinorVersion(int minorVersion); int minorVersion() const; void setStereo(bool enable); bool stereo() const; std::pair version() const; void setVersion(int major, int minor); void setOptions(QSurfaceFormat::FormatOptions options); void setOption(QSurfaceFormat::FormatOption option, bool on = true); bool testOption(QSurfaceFormat::FormatOption option) const; QSurfaceFormat::FormatOptions options() const; int swapInterval() const; void setSwapInterval(int interval); static void setDefaultFormat(const QSurfaceFormat &format); static QSurfaceFormat defaultFormat(); const QColorSpace &colorSpace() const; void setColorSpace(const QColorSpace &colorSpace); }; bool operator==(const QSurfaceFormat &, const QSurfaceFormat &); bool operator!=(const QSurfaceFormat &, const QSurfaceFormat &); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.348334 PyQt6-6.6.1/sip/QtGui/qsyntaxhighlighter.sip0000644000076500000240000000562514532160401017661 0ustar00philstaff// qsyntaxhighlighter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSyntaxHighlighter : QObject { %TypeHeaderCode #include %End public: explicit QSyntaxHighlighter(QTextDocument *parent /TransferThis/); explicit QSyntaxHighlighter(QObject *parent /TransferThis/); virtual ~QSyntaxHighlighter(); void setDocument(QTextDocument *doc /KeepReference/); QTextDocument *document() const; public slots: void rehighlight(); void rehighlightBlock(const QTextBlock &block); protected: virtual void highlightBlock(const QString &text) = 0; void setFormat(int start, int count, const QTextCharFormat &format); void setFormat(int start, int count, const QColor &color); void setFormat(int start, int count, const QFont &font); QTextCharFormat format(int pos) const; int previousBlockState() const; int currentBlockState() const; void setCurrentBlockState(int newState); void setCurrentBlockUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the syntax highlighter. typedef PyObject *(*helper_func)(QObject *, const sipTypeDef *); static helper_func helper = 0; if (!helper) { helper = (helper_func)sipImportSymbol("qtgui_wrap_ancestors"); Q_ASSERT(helper); } QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = helper(td, sipType_QTextDocument); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->setCurrentBlockUserData(a0); #else sipCpp->sipProtect_setCurrentBlockUserData(a0); #endif %End QTextBlockUserData *currentBlockUserData() const; QTextBlock currentBlock() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.390248 PyQt6-6.6.1/sip/QtGui/qtextcursor.sip0000644000076500000240000001263314532160401016333 0ustar00philstaff// qtextcursor.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextCursor { %TypeHeaderCode #include %End public: QTextCursor(); explicit QTextCursor(QTextDocument *document); explicit QTextCursor(QTextFrame *frame); explicit QTextCursor(const QTextBlock &block); QTextCursor(const QTextCursor &cursor); ~QTextCursor(); bool isNull() const; enum MoveMode { MoveAnchor, KeepAnchor, }; void setPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); int position() const; int anchor() const; void insertText(const QString &text); void insertText(const QString &text, const QTextCharFormat &format); enum MoveOperation { NoMove, Start, Up, StartOfLine, StartOfBlock, StartOfWord, PreviousBlock, PreviousCharacter, PreviousWord, Left, WordLeft, End, Down, EndOfLine, EndOfWord, EndOfBlock, NextBlock, NextCharacter, NextWord, Right, WordRight, NextCell, PreviousCell, NextRow, PreviousRow, }; bool movePosition(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor, int n = 1); void deleteChar(); void deletePreviousChar(); enum SelectionType { WordUnderCursor, LineUnderCursor, BlockUnderCursor, Document, }; void select(QTextCursor::SelectionType selection); bool hasSelection() const; bool hasComplexSelection() const; void removeSelectedText(); void clearSelection(); int selectionStart() const; int selectionEnd() const; QString selectedText() const; QTextDocumentFragment selection() const; void selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const; QTextBlock block() const; QTextCharFormat charFormat() const; void setCharFormat(const QTextCharFormat &format); void mergeCharFormat(const QTextCharFormat &modifier); QTextBlockFormat blockFormat() const; void setBlockFormat(const QTextBlockFormat &format); void mergeBlockFormat(const QTextBlockFormat &modifier); QTextCharFormat blockCharFormat() const; void setBlockCharFormat(const QTextCharFormat &format); void mergeBlockCharFormat(const QTextCharFormat &modifier); bool atBlockStart() const; bool atBlockEnd() const; bool atStart() const; bool atEnd() const; void insertBlock(); void insertBlock(const QTextBlockFormat &format); void insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat); QTextList *insertList(const QTextListFormat &format); QTextList *insertList(QTextListFormat::Style style); QTextList *createList(const QTextListFormat &format); QTextList *createList(QTextListFormat::Style style); QTextList *currentList() const; QTextTable *insertTable(int rows, int cols, const QTextTableFormat &format); QTextTable *insertTable(int rows, int cols); QTextTable *currentTable() const; QTextFrame *insertFrame(const QTextFrameFormat &format); QTextFrame *currentFrame() const; void insertFragment(const QTextDocumentFragment &fragment); void insertHtml(const QString &html); void insertImage(const QTextImageFormat &format); void insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment); void insertImage(const QString &name); void insertImage(const QImage &image, const QString &name = QString()); void beginEditBlock(); void joinPreviousEditBlock(); void endEditBlock(); int blockNumber() const; int columnNumber() const; bool operator!=(const QTextCursor &rhs) const; bool operator<(const QTextCursor &rhs) const; bool operator<=(const QTextCursor &rhs) const; bool operator==(const QTextCursor &rhs) const; bool operator>=(const QTextCursor &rhs) const; bool operator>(const QTextCursor &rhs) const; bool isCopyOf(const QTextCursor &other) const; bool visualNavigation() const; void setVisualNavigation(bool b); QTextDocument *document() const; int positionInBlock() const; void setVerticalMovementX(int x); int verticalMovementX() const; void setKeepPositionOnInsert(bool b); bool keepPositionOnInsert() const; void swap(QTextCursor &other /Constrained/); %If (Qt_6_4_0 -) void insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.378135 PyQt6-6.6.1/sip/QtGui/qtextdocument.sip0000644000076500000240000002752614532160401016643 0ustar00philstaff// qtextdocument.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace Qt { %TypeHeaderCode #include %End bool mightBeRichText(const QString &); QString convertFromPlainText(const QString &plain, Qt::WhiteSpaceMode mode = Qt::WhiteSpacePre); }; class QTextDocument : QObject { %TypeHeaderCode #include %End public: explicit QTextDocument(QObject *parent /TransferThis/ = 0); QTextDocument(const QString &text, QObject *parent /TransferThis/ = 0); virtual ~QTextDocument(); QTextDocument *clone(QObject *parent /TransferThis/ = 0) const /Factory/; bool isEmpty() const; virtual void clear(); void setUndoRedoEnabled(bool enable); bool isUndoRedoEnabled() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDocumentLayout(QAbstractTextDocumentLayout *layout /Transfer/); QAbstractTextDocumentLayout *documentLayout() const; enum MetaInformation { DocumentTitle, DocumentUrl, %If (Qt_6_3_0 -) CssMedia, %End }; void setMetaInformation(QTextDocument::MetaInformation info, const QString &); QString metaInformation(QTextDocument::MetaInformation info) const; QString toHtml() const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); enum FindFlag /BaseType=Flag/ { FindBackward, FindCaseSensitively, FindWholeWords, }; typedef QFlags FindFlags; QTextCursor find(const QRegularExpression &expr, const QTextCursor &cursor, QTextDocument::FindFlags options = QTextDocument::FindFlags()) const; QTextCursor find(const QRegularExpression &expr, int position = 0, QTextDocument::FindFlags options = QTextDocument::FindFlags()) const; QTextCursor find(const QString &subString, const QTextCursor &cursor, QTextDocument::FindFlags options = QTextDocument::FindFlags()) const; QTextCursor find(const QString &subString, int position = 0, QTextDocument::FindFlags options = QTextDocument::FindFlags()) const; QTextFrame *rootFrame() const; QTextObject *object(int objectIndex) const; QTextObject *objectForFormat(const QTextFormat &) const; QTextBlock findBlock(int pos) const; QTextBlock begin() const; QTextBlock end() const; void setPageSize(const QSizeF &size); QSizeF pageSize() const; void setDefaultFont(const QFont &font); QFont defaultFont() const; int pageCount() const; bool isModified() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End enum ResourceType /BaseType=IntEnum/ { UnknownResource, HtmlResource, ImageResource, StyleSheetResource, MarkdownResource, UserResource, }; QVariant resource(int type, const QUrl &name) const; void addResource(int type, const QUrl &name, const QVariant &resource); QList allFormats() const; void markContentsDirty(int from, int length); void setUseDesignMetrics(bool b); bool useDesignMetrics() const; signals: void blockCountChanged(int newBlockCount); void contentsChange(int from, int charsRemoves, int charsAdded); void contentsChanged(); void cursorPositionChanged(const QTextCursor &cursor); void modificationChanged(bool m); void redoAvailable(bool); void undoAvailable(bool); public slots: void undo(); void redo(); void setModified(bool on = true); protected: virtual QTextObject *createObject(const QTextFormat &f) /Factory/; virtual QVariant loadResource(int type, const QUrl &name); public: void drawContents(QPainter *p, const QRectF &rect = QRectF()); void setTextWidth(qreal width); qreal textWidth() const; qreal idealWidth() const; void adjustSize(); QSizeF size() const; int blockCount() const; void setDefaultStyleSheet(const QString &sheet); QString defaultStyleSheet() const; void undo(QTextCursor *cursor); void redo(QTextCursor *cursor); int maximumBlockCount() const; void setMaximumBlockCount(int maximum); QTextOption defaultTextOption() const; void setDefaultTextOption(const QTextOption &option); int revision() const; QTextBlock findBlockByNumber(int blockNumber) const; QTextBlock findBlockByLineNumber(int blockNumber) const; QTextBlock firstBlock() const; QTextBlock lastBlock() const; qreal indentWidth() const; void setIndentWidth(qreal width); signals: void undoCommandAdded(); void documentLayoutChanged(); public: QChar characterAt(int pos) const; qreal documentMargin() const; void setDocumentMargin(qreal margin); int lineCount() const; int characterCount() const; int availableUndoSteps() const; int availableRedoSteps() const; enum Stacks { UndoStack, RedoStack, UndoAndRedoStacks, }; void clearUndoRedoStacks(QTextDocument::Stacks stacks = QTextDocument::UndoAndRedoStacks); Qt::CursorMoveStyle defaultCursorMoveStyle() const; void setDefaultCursorMoveStyle(Qt::CursorMoveStyle style); QUrl baseUrl() const; void setBaseUrl(const QUrl &url); signals: void baseUrlChanged(const QUrl &url); public: QString toRawText() const; enum MarkdownFeature /BaseType=Flag/ { MarkdownNoHTML, MarkdownDialectCommonMark, MarkdownDialectGitHub, }; typedef QFlags MarkdownFeatures; QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const; void setMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub); void setSuperScriptBaseline(qreal baseline); qreal superScriptBaseline() const; void setSubScriptBaseline(qreal baseline); qreal subScriptBaseline() const; void setBaselineOffset(qreal baseline); qreal baselineOffset() const; %If (Qt_6_1_0 -) SIP_PYCALLABLE resourceProvider() const /TypeHint="Callable[[QUrl], QVariant]"/; %MethodCode if (sipCpp->resourceProvider()) sipRes = sipGetUserObject((sipSimpleWrapper *)sipSelf); else sipRes = SIP_NULLPTR; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End %End %If (Qt_6_1_0 -) void setResourceProvider(SIP_PYCALLABLE provider /TypeHint="Callable[[QUrl], QVariant]"/); %MethodCode // Remove any existing callable. Py_XDECREF(sipGetUserObject((sipSimpleWrapper *)sipSelf)); if (a0 == Py_None) { sipSetUserObject((sipSimpleWrapper *)sipSelf, SIP_NULLPTR); sipCpp->setResourceProvider(SIP_NULLPTR); } else { // Save the callable so that resourceProvider() can return it. Py_INCREF(a0); sipSetUserObject((sipSimpleWrapper *)sipSelf, a0); Py_BEGIN_ALLOW_THREADS sipCpp->setResourceProvider([a0] (const QUrl &arg) { QUrl *arg_heap = new QUrl(arg); QVariant qv; int is_err = 1; SIP_BLOCK_THREADS PyObject *arg_obj = sipConvertFromNewType(arg_heap, sipType_QUrl, NULL); if (arg_obj) { PyObject *res_obj = PyObject_CallFunctionObjArgs(a0, arg_obj, NULL); Py_DECREF(arg_obj); if (res_obj) { is_err = 0; QVariant *res = reinterpret_cast( sipConvertToType(res_obj, sipType_QVariant, NULL, 0, NULL, &is_err)); if (!is_err) { qv = *res; delete res; } } } else { delete arg_heap; } if (is_err) { pyqt6_qtgui_err_print(); } SIP_UNBLOCK_THREADS return qv; }); Py_END_ALLOW_THREADS } %End %End %If (Qt_6_1_0 -) static SIP_PYCALLABLE defaultResourceProvider() /TypeHint="Callable[[QUrl], QVariant]"/; %MethodCode if (QTextDocument::defaultResourceProvider()) sipRes = (PyObject *)sipGetTypeUserData((sipWrapperType *)sipTypeAsPyTypeObject(sipType_QTextDocument)); else sipRes = SIP_NULLPTR; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End %End %If (Qt_6_1_0 -) static void setDefaultResourceProvider(SIP_PYCALLABLE provider /TypeHint="Callable[[QUrl], QVariant]"/); %MethodCode sipWrapperType *wt = (sipWrapperType *)sipTypeAsPyTypeObject(sipType_QTextDocument); // Remove any existing callable. Py_XDECREF((PyObject *)sipGetTypeUserData(wt)); if (a0 == Py_None) { sipSetTypeUserData(wt, SIP_NULLPTR); QTextDocument::setDefaultResourceProvider(SIP_NULLPTR); } else { // Save the callable so that defaultResourceProvider() can return it. Py_INCREF(a0); sipSetTypeUserData(wt, a0); Py_BEGIN_ALLOW_THREADS QTextDocument::setDefaultResourceProvider([a0] (const QUrl &arg) { QUrl *arg_heap = new QUrl(arg); QVariant qv; int is_err = 1; SIP_BLOCK_THREADS PyObject *arg_obj = sipConvertFromNewType(arg_heap, sipType_QUrl, NULL); if (arg_obj) { PyObject *res_obj = PyObject_CallFunctionObjArgs(a0, arg_obj, NULL); Py_DECREF(arg_obj); if (res_obj) { is_err = 0; QVariant *res = reinterpret_cast( sipConvertToType(res_obj, sipType_QVariant, NULL, 0, NULL, &is_err)); if (!is_err) { qv = *res; delete res; } } } else { delete arg_heap; } if (is_err) { pyqt6_qtgui_err_print(); } SIP_UNBLOCK_THREADS return qv; }); Py_END_ALLOW_THREADS } %End %End %If (Qt_6_4_0 -) void setLayoutEnabled(bool b); %End %If (Qt_6_4_0 -) bool isLayoutEnabled() const; %End }; ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1701372161.3464 PyQt6-6.6.1/sip/QtGui/qtextdocumentfragment.sip0000644000076500000240000000361714532160401020362 0ustar00philstaff// qtextdocumentfragment.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentFragment { %TypeHeaderCode #include %End public: QTextDocumentFragment(); explicit QTextDocumentFragment(const QTextDocument *document); explicit QTextDocumentFragment(const QTextCursor &range); QTextDocumentFragment(const QTextDocumentFragment &rhs); ~QTextDocumentFragment(); bool isEmpty() const; QString toPlainText() const; QString toHtml() const; static QTextDocumentFragment fromPlainText(const QString &plainText); static QTextDocumentFragment fromHtml(const QString &html, const QTextDocument *resourceProvider = 0); %If (Qt_6_4_0 -) QString toRawText() const; %End %If (Qt_6_4_0 -) QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const; %End %If (Qt_6_4_0 -) static QTextDocumentFragment fromMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4118962 PyQt6-6.6.1/sip/QtGui/qtextdocumentwriter.sip0000644000076500000240000000326214532160401020067 0ustar00philstaff// qtextdocumentwriter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextDocumentWriter { %TypeHeaderCode #include %End public: QTextDocumentWriter(); QTextDocumentWriter(QIODevice *device, const QByteArray &format); QTextDocumentWriter(const QString &fileName, const QByteArray &format = QByteArray()); ~QTextDocumentWriter(); void setFormat(const QByteArray &format); QByteArray format() const; void setDevice(QIODevice *device); QIODevice *device() const; void setFileName(const QString &fileName); QString fileName() const; bool write(const QTextDocument *document); bool write(const QTextDocumentFragment &fragment); static QList supportedDocumentFormats(); private: QTextDocumentWriter(const QTextDocumentWriter &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3730357 PyQt6-6.6.1/sip/QtGui/qtextformat.sip0000644000076500000240000004633214532160401016311 0ustar00philstaff// qtextformat.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextLength { %TypeHeaderCode #include %End public: enum Type { VariableLength, FixedLength, PercentageLength, }; QTextLength(); QTextLength::Type type() const; QTextLength(QTextLength::Type atype, qreal avalue); qreal value(qreal maximumLength) const; qreal rawValue() const; bool operator==(const QTextLength &other) const; bool operator!=(const QTextLength &other) const; QTextLength(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextLength(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End }; %If (Qt_6_3_0 -) QDataStream &operator<<(QDataStream &, const QTextTableCellFormat &) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator<<(QDataStream &, const QTextFrameFormat &) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator<<(QDataStream &, const QTextListFormat &) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator<<(QDataStream &, const QTextBlockFormat &) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator<<(QDataStream &, const QTextCharFormat &) /ReleaseGIL/; %End QDataStream &operator<<(QDataStream &, const QTextLength &) /ReleaseGIL/; %If (Qt_6_3_0 -) QDataStream &operator>>(QDataStream &, QTextTableCellFormat & /Constrained/) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator>>(QDataStream &, QTextFrameFormat & /Constrained/) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator>>(QDataStream &, QTextListFormat & /Constrained/) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator>>(QDataStream &, QTextBlockFormat & /Constrained/) /ReleaseGIL/; %End %If (Qt_6_3_0 -) QDataStream &operator>>(QDataStream &, QTextCharFormat & /Constrained/) /ReleaseGIL/; %End QDataStream &operator>>(QDataStream &, QTextLength & /Constrained/) /ReleaseGIL/; class QTextFormat { %TypeHeaderCode #include %End public: enum FormatType /BaseType=IntEnum/ { InvalidFormat, BlockFormat, CharFormat, ListFormat, FrameFormat, UserFormat, }; enum ObjectTypes /BaseType=IntEnum/ { NoObject, ImageObject, TableObject, TableCellObject, UserObject, }; enum PageBreakFlag /BaseType=Flag/ { PageBreak_Auto, PageBreak_AlwaysBefore, PageBreak_AlwaysAfter, }; typedef QFlags PageBreakFlags; enum Property /BaseType=IntEnum/ { ObjectIndex, CssFloat, LayoutDirection, OutlinePen, BackgroundBrush, ForegroundBrush, BlockAlignment, BlockTopMargin, BlockBottomMargin, BlockLeftMargin, BlockRightMargin, TextIndent, BlockIndent, BlockNonBreakableLines, BlockTrailingHorizontalRulerWidth, FontPointSize, FontSizeAdjustment, FontSizeIncrement, FontWeight, FontItalic, FontUnderline, FontOverline, FontStrikeOut, FontFixedPitch, FontPixelSize, TextUnderlineColor, TextVerticalAlignment, TextOutline, IsAnchor, AnchorHref, AnchorName, ObjectType, ListStyle, ListIndent, FrameBorder, FrameMargin, FramePadding, FrameWidth, FrameHeight, TableColumns, TableColumnWidthConstraints, TableCellSpacing, TableCellPadding, TableCellRowSpan, TableCellColumnSpan, ImageName, ImageWidth, ImageHeight, TextUnderlineStyle, TableHeaderRowCount, FullWidthSelection, PageBreakPolicy, TextToolTip, FrameTopMargin, FrameBottomMargin, FrameLeftMargin, FrameRightMargin, FrameBorderBrush, FrameBorderStyle, BackgroundImageUrl, TabPositions, FirstFontProperty, FontCapitalization, FontLetterSpacing, FontWordSpacing, LastFontProperty, TableCellTopPadding, TableCellBottomPadding, TableCellLeftPadding, TableCellRightPadding, FontStyleHint, FontStyleStrategy, FontKerning, LineHeight, LineHeightType, FontHintingPreference, ListNumberPrefix, ListNumberSuffix, FontStretch, FontLetterSpacingType, HeadingLevel, ImageQuality, FontFamilies, FontStyleName, BlockQuoteLevel, BlockCodeLanguage, BlockCodeFence, BlockMarker, TableBorderCollapse, TableCellTopBorder, TableCellBottomBorder, TableCellLeftBorder, TableCellRightBorder, TableCellTopBorderStyle, TableCellBottomBorderStyle, TableCellLeftBorderStyle, TableCellRightBorderStyle, TableCellTopBorderBrush, TableCellBottomBorderBrush, TableCellLeftBorderBrush, TableCellRightBorderBrush, ImageTitle, ImageAltText, TextSuperScriptBaseline, TextSubScriptBaseline, TextBaselineOffset, OldFontLetterSpacingType, OldFontStretch, OldTextUnderlineColor, %If (Qt_6_4_0 -) OldFontFamily, %End %If (Qt_6_6_0 -) ListStart, %End UserProperty, }; QTextFormat(); explicit QTextFormat(int type); QTextFormat(const QTextFormat &rhs); QTextFormat(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QTextFormat(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End ~QTextFormat(); void merge(const QTextFormat &other); bool isValid() const; int type() const; int objectIndex() const; void setObjectIndex(int object); QVariant property(int propertyId) const; void setProperty(int propertyId, const QList &lengths); void setProperty(int propertyId, const QVariant &value); void clearProperty(int propertyId); bool hasProperty(int propertyId) const; bool boolProperty(int propertyId) const; int intProperty(int propertyId) const; qreal doubleProperty(int propertyId) const; QString stringProperty(int propertyId) const; QColor colorProperty(int propertyId) const; QPen penProperty(int propertyId) const; QBrush brushProperty(int propertyId) const; QTextLength lengthProperty(int propertyId) const; QList lengthVectorProperty(int propertyId) const; QMap properties() const; int objectType() const; bool isCharFormat() const; bool isBlockFormat() const; bool isListFormat() const; bool isFrameFormat() const; bool isImageFormat() const; bool isTableFormat() const; QTextBlockFormat toBlockFormat() const; QTextCharFormat toCharFormat() const; QTextListFormat toListFormat() const; QTextTableFormat toTableFormat() const; QTextFrameFormat toFrameFormat() const; QTextImageFormat toImageFormat() const; bool operator==(const QTextFormat &rhs) const; bool operator!=(const QTextFormat &rhs) const; void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void setBackground(const QBrush &brush); QBrush background() const; void clearBackground(); void setForeground(const QBrush &brush); QBrush foreground() const; void clearForeground(); void setObjectType(int atype); int propertyCount() const; bool isTableCellFormat() const; QTextTableCellFormat toTableCellFormat() const; void swap(QTextFormat &other /Constrained/); bool isEmpty() const; }; QDataStream &operator<<(QDataStream &, const QTextFormat &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTextFormat & /Constrained/) /ReleaseGIL/; class QTextCharFormat : QTextFormat { %TypeHeaderCode #include %End public: enum VerticalAlignment { AlignNormal, AlignSuperScript, AlignSubScript, AlignMiddle, AlignTop, AlignBottom, AlignBaseline, }; QTextCharFormat(); bool isValid() const; void setFont(const QFont &font, QTextCharFormat::FontPropertiesInheritanceBehavior behavior = QTextCharFormat::FontPropertiesAll); QFont font() const; void setFontFamily(const QString &family); QString fontFamily() const; void setFontPointSize(qreal size); qreal fontPointSize() const; void setFontWeight(int weight); int fontWeight() const; void setFontItalic(bool italic); bool fontItalic() const; void setFontUnderline(bool underline); bool fontUnderline() const; void setFontOverline(bool overline); bool fontOverline() const; void setFontStrikeOut(bool strikeOut); bool fontStrikeOut() const; void setUnderlineColor(const QColor &color); QColor underlineColor() const; void setFontFixedPitch(bool fixedPitch); bool fontFixedPitch() const; void setVerticalAlignment(QTextCharFormat::VerticalAlignment alignment); QTextCharFormat::VerticalAlignment verticalAlignment() const; void setAnchor(bool anchor); bool isAnchor() const; void setAnchorHref(const QString &value); QString anchorHref() const; int tableCellRowSpan() const; int tableCellColumnSpan() const; void setTableCellRowSpan(int atableCellRowSpan); void setTableCellColumnSpan(int atableCellColumnSpan); void setTextOutline(const QPen &pen); QPen textOutline() const; enum UnderlineStyle { NoUnderline, SingleUnderline, DashUnderline, DotLine, DashDotLine, DashDotDotLine, WaveUnderline, SpellCheckUnderline, }; void setUnderlineStyle(QTextCharFormat::UnderlineStyle style); QTextCharFormat::UnderlineStyle underlineStyle() const; void setToolTip(const QString &tip); QString toolTip() const; void setAnchorNames(const QStringList &names); QStringList anchorNames() const; void setFontCapitalization(QFont::Capitalization capitalization); QFont::Capitalization fontCapitalization() const; void setFontLetterSpacing(qreal spacing); qreal fontLetterSpacing() const; void setFontWordSpacing(qreal spacing); qreal fontWordSpacing() const; void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault); void setFontStyleStrategy(QFont::StyleStrategy strategy); QFont::StyleHint fontStyleHint() const; QFont::StyleStrategy fontStyleStrategy() const; void setFontKerning(bool enable); bool fontKerning() const; void setFontHintingPreference(QFont::HintingPreference hintingPreference); QFont::HintingPreference fontHintingPreference() const; int fontStretch() const; void setFontStretch(int factor); void setFontLetterSpacingType(QFont::SpacingType letterSpacingType); QFont::SpacingType fontLetterSpacingType() const; enum FontPropertiesInheritanceBehavior { FontPropertiesSpecifiedOnly, FontPropertiesAll, }; void setFontFamilies(const QStringList &families); QVariant fontFamilies() const; void setFontStyleName(const QString &styleName); QVariant fontStyleName() const; void setSuperScriptBaseline(qreal baseline); qreal superScriptBaseline() const; void setSubScriptBaseline(qreal baseline); qreal subScriptBaseline() const; void setBaselineOffset(qreal baseline); qreal baselineOffset() const; }; class QTextBlockFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextBlockFormat(); bool isValid() const; Qt::Alignment alignment() const; void setTopMargin(qreal margin); qreal topMargin() const; void setBottomMargin(qreal margin); qreal bottomMargin() const; void setLeftMargin(qreal margin); qreal leftMargin() const; void setRightMargin(qreal margin); qreal rightMargin() const; void setTextIndent(qreal margin); qreal textIndent() const; int indent() const; void setNonBreakableLines(bool b); bool nonBreakableLines() const; void setAlignment(Qt::Alignment aalignment); void setIndent(int aindent); void setPageBreakPolicy(QTextFormat::PageBreakFlags flags); QTextFormat::PageBreakFlags pageBreakPolicy() const; void setTabPositions(const QList &tabs); QList tabPositions() const; enum LineHeightTypes { SingleHeight, ProportionalHeight, FixedHeight, MinimumHeight, LineDistanceHeight, }; void setLineHeight(qreal height, int heightType); qreal lineHeight() const; qreal lineHeight(qreal scriptLineHeight, qreal scaling = 1.) const; int lineHeightType() const; void setHeadingLevel(int alevel); int headingLevel() const; enum class MarkerType { NoMarker, Unchecked, Checked, }; void setMarker(QTextBlockFormat::MarkerType marker); QTextBlockFormat::MarkerType marker() const; }; class QTextListFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextListFormat(); bool isValid() const; enum Style { ListDisc, ListCircle, ListSquare, ListDecimal, ListLowerAlpha, ListUpperAlpha, ListLowerRoman, ListUpperRoman, }; QTextListFormat::Style style() const; int indent() const; void setStyle(QTextListFormat::Style astyle); void setIndent(int aindent); QString numberPrefix() const; QString numberSuffix() const; void setNumberPrefix(const QString &np); void setNumberSuffix(const QString &ns); %If (Qt_6_6_0 -) void setStart(int indent); %End %If (Qt_6_6_0 -) int start() const; %End }; class QTextImageFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextImageFormat(); bool isValid() const; QString name() const; qreal width() const; qreal height() const; int quality() const; void setName(const QString &aname); void setWidth(qreal awidth); void setHeight(qreal aheight); void setQuality(int quality = 100); }; class QTextFrameFormat : QTextFormat { %TypeHeaderCode #include %End public: QTextFrameFormat(); bool isValid() const; enum Position { InFlow, FloatLeft, FloatRight, }; void setPosition(QTextFrameFormat::Position f); QTextFrameFormat::Position position() const; qreal border() const; qreal margin() const; qreal padding() const; void setWidth(const QTextLength &length); QTextLength width() const; QTextLength height() const; void setBorder(qreal aborder); void setMargin(qreal amargin); void setPadding(qreal apadding); void setWidth(qreal awidth); void setHeight(qreal aheight); void setHeight(const QTextLength &aheight); void setPageBreakPolicy(QTextFormat::PageBreakFlags flags); QTextFormat::PageBreakFlags pageBreakPolicy() const; enum BorderStyle { BorderStyle_None, BorderStyle_Dotted, BorderStyle_Dashed, BorderStyle_Solid, BorderStyle_Double, BorderStyle_DotDash, BorderStyle_DotDotDash, BorderStyle_Groove, BorderStyle_Ridge, BorderStyle_Inset, BorderStyle_Outset, }; void setBorderBrush(const QBrush &brush); QBrush borderBrush() const; void setBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle borderStyle() const; qreal topMargin() const; qreal bottomMargin() const; qreal leftMargin() const; qreal rightMargin() const; void setTopMargin(qreal amargin); void setBottomMargin(qreal amargin); void setLeftMargin(qreal amargin); void setRightMargin(qreal amargin); }; class QTextTableFormat : QTextFrameFormat { %TypeHeaderCode #include %End public: QTextTableFormat(); bool isValid() const; int columns() const; void setColumnWidthConstraints(const QList &constraints); QList columnWidthConstraints() const; void clearColumnWidthConstraints(); qreal cellSpacing() const; void setCellSpacing(qreal spacing); qreal cellPadding() const; Qt::Alignment alignment() const; void setColumns(int acolumns); void setCellPadding(qreal apadding); void setAlignment(Qt::Alignment aalignment); void setHeaderRowCount(int count); int headerRowCount() const; void setBorderCollapse(bool borderCollapse); bool borderCollapse() const; }; class QTextTableCellFormat : QTextCharFormat { %TypeHeaderCode #include %End public: QTextTableCellFormat(); bool isValid() const; void setTopPadding(qreal padding); qreal topPadding() const; void setBottomPadding(qreal padding); qreal bottomPadding() const; void setLeftPadding(qreal padding); qreal leftPadding() const; void setRightPadding(qreal padding); qreal rightPadding() const; void setPadding(qreal padding); void setTopBorder(qreal width); qreal topBorder() const; void setBottomBorder(qreal width); qreal bottomBorder() const; void setLeftBorder(qreal width); qreal leftBorder() const; void setRightBorder(qreal width); qreal rightBorder() const; void setBorder(qreal width); void setTopBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle topBorderStyle() const; void setBottomBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle bottomBorderStyle() const; void setLeftBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle leftBorderStyle() const; void setRightBorderStyle(QTextFrameFormat::BorderStyle style); QTextFrameFormat::BorderStyle rightBorderStyle() const; void setBorderStyle(QTextFrameFormat::BorderStyle style); void setTopBorderBrush(const QBrush &brush); QBrush topBorderBrush() const; void setBottomBorderBrush(const QBrush &brush); QBrush bottomBorderBrush() const; void setLeftBorderBrush(const QBrush &brush); QBrush leftBorderBrush() const; void setRightBorderBrush(const QBrush &brush); QBrush rightBorderBrush() const; void setBorderBrush(const QBrush &brush); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3477437 PyQt6-6.6.1/sip/QtGui/qtextlayout.sip0000644000076500000240000001340214532160401016326 0ustar00philstaff// qtextlayout.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextInlineObject { %TypeHeaderCode #include %End public: bool isValid() const; QRectF rect() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; Qt::LayoutDirection textDirection() const; void setWidth(qreal w); void setAscent(qreal a); void setDescent(qreal d); int textPosition() const; int formatIndex() const; QTextFormat format() const; }; class QTextLayout { %TypeHeaderCode #include %End public: QTextLayout(); QTextLayout(const QString &text); QTextLayout(const QString &text, const QFont &font, const QPaintDevice *paintdevice = 0); QTextLayout(const QTextBlock &b); ~QTextLayout(); void setFont(const QFont &f); QFont font() const; void setText(const QString &string); QString text() const; void setTextOption(const QTextOption &option); const QTextOption &textOption() const; void setPreeditArea(int position, const QString &text); int preeditAreaPosition() const; QString preeditAreaText() const; struct FormatRange { %TypeHeaderCode #include %End int start; int length; QTextCharFormat format; }; void setCacheEnabled(bool enable); bool cacheEnabled() const; void beginLayout(); void endLayout(); QTextLine createLine(); int lineCount() const; QTextLine lineAt(int i) const; QTextLine lineForTextPosition(int pos) const; enum CursorMode { SkipCharacters, SkipWords, }; bool isValidCursorPosition(int pos) const; int nextCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; int previousCursorPosition(int oldPos, QTextLayout::CursorMode mode = QTextLayout::SkipCharacters) const; void draw(QPainter *p, const QPointF &pos, const QList &selections = QList(), const QRectF &clip = QRectF()) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const; void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const; QPointF position() const; void setPosition(const QPointF &p); QRectF boundingRect() const; qreal minimumWidth() const; qreal maximumWidth() const; void clearLayout(); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; int leftCursorPosition(int oldPos) const; int rightCursorPosition(int oldPos) const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End %If (Qt_6_5_0 -) QList glyphRuns(int from, int length, QTextLayout::GlyphRunRetrievalFlags flags) const; %End void setFormats(const QList &overrides); QList formats() const; void clearFormats(); private: QTextLayout(const QTextLayout &); public: %If (Qt_6_5_0 -) enum GlyphRunRetrievalFlag { RetrieveGlyphIndexes, RetrieveGlyphPositions, RetrieveStringIndexes, RetrieveString, RetrieveAll, }; %End %If (Qt_6_5_0 -) typedef QFlags GlyphRunRetrievalFlags; %End }; class QTextLine { %TypeHeaderCode #include %End public: QTextLine(); bool isValid() const; QRectF rect() const; qreal x() const; qreal y() const; qreal width() const; qreal ascent() const; qreal descent() const; qreal height() const; qreal naturalTextWidth() const; QRectF naturalTextRect() const; enum Edge { Leading, Trailing, }; enum CursorPosition { CursorBetweenCharacters, CursorOnCharacter, }; qreal cursorToX(int *cursorPos /In,Out/, QTextLine::Edge edge = QTextLine::Leading) const; int xToCursor(qreal x, QTextLine::CursorPosition edge = QTextLine::CursorBetweenCharacters) const; void setLineWidth(qreal width); void setNumColumns(int columns); void setNumColumns(int columns, qreal alignmentWidth); void setPosition(const QPointF &pos); int textStart() const; int textLength() const; int lineNumber() const; void draw(QPainter *painter, const QPointF &position) const; QPointF position() const; qreal leading() const; void setLeadingIncluded(bool included); bool leadingIncluded() const; qreal horizontalAdvance() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End %If (Qt_6_5_0 -) QList glyphRuns(int from, int length, QTextLayout::GlyphRunRetrievalFlags flags) const; %End }; bool operator==(const QTextLayout::FormatRange &lhs, const QTextLayout::FormatRange &rhs); bool operator!=(const QTextLayout::FormatRange &lhs, const QTextLayout::FormatRange &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3468077 PyQt6-6.6.1/sip/QtGui/qtextlist.sip0000644000076500000240000000266614532160401015776 0ustar00philstaff// qtextlist.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextList : QTextBlockGroup { %TypeHeaderCode #include %End public: explicit QTextList(QTextDocument *doc); virtual ~QTextList(); int count() const /__len__/; QTextBlock item(int i) const; int itemNumber(const QTextBlock &) const; QString itemText(const QTextBlock &) const; void removeItem(int i); void remove(const QTextBlock &); void add(const QTextBlock &block); QTextListFormat format() const; void setFormat(const QTextListFormat &aformat); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.350347 PyQt6-6.6.1/sip/QtGui/qtextobject.sip0000644000076500000240000001701314532160401016261 0ustar00philstaff// qtextobject.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextObject : QObject { %TypeHeaderCode #include %End protected: explicit QTextObject(QTextDocument *doc); virtual ~QTextObject(); void setFormat(const QTextFormat &format); public: QTextFormat format() const; int formatIndex() const; QTextDocument *document() const; int objectIndex() const; }; class QTextBlockGroup : QTextObject { %TypeHeaderCode #include %End protected: explicit QTextBlockGroup(QTextDocument *doc); virtual ~QTextBlockGroup(); virtual void blockInserted(const QTextBlock &block); virtual void blockRemoved(const QTextBlock &block); virtual void blockFormatChanged(const QTextBlock &block); QList blockList() const; }; class QTextFrame : QTextObject { %TypeHeaderCode #include %End public: explicit QTextFrame(QTextDocument *doc); virtual ~QTextFrame(); QTextFrameFormat frameFormat() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int firstPosition() const; int lastPosition() const; QList childFrames() const; QTextFrame *parentFrame() const; class iterator { %TypeHeaderCode #include %End public: iterator(); QTextFrame *parentFrame() const; QTextFrame *currentFrame() const; QTextBlock currentBlock() const; bool atEnd() const; bool operator==(const QTextFrame::iterator &o) const; bool operator!=(const QTextFrame::iterator &o) const; QTextFrame::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextFrame::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextFrame::iterator Iterator; QTextFrame::iterator begin() const; QTextFrame::iterator end() const; void setFrameFormat(const QTextFrameFormat &aformat); }; class QTextBlock /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QTextBlock(); QTextBlock(const QTextBlock &o); bool isValid() const; bool operator==(const QTextBlock &o) const; bool operator!=(const QTextBlock &o) const; bool operator<(const QTextBlock &o) const; int position() const; int length() const; bool contains(int position) const; QTextLayout *layout() const; QTextBlockFormat blockFormat() const; int blockFormatIndex() const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; const QTextDocument *document() const; QTextList *textList() const; class iterator { %TypeHeaderCode #include %End public: iterator(); QTextFragment fragment() const; bool atEnd() const; bool operator==(const QTextBlock::iterator &o) const; bool operator!=(const QTextBlock::iterator &o) const; QTextBlock::iterator &operator+=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)++; else if (a0 < 0) while (a0++) (*sipCpp)--; %End QTextBlock::iterator &operator-=(int); %MethodCode if (a0 > 0) while (a0--) (*sipCpp)--; else if (a0 < 0) while (a0++) (*sipCpp)++; %End }; typedef QTextBlock::iterator Iterator; QTextBlock::iterator begin() const; QTextBlock::iterator end() const; QTextBlock next() const; QTextBlock previous() const; QTextBlockUserData *userData() const; void setUserData(QTextBlockUserData *data /GetWrapper/); %MethodCode // Ownership of the user data is with the document not the text block. const QTextDocument *td = sipCpp->document(); if (td) { PyObject *py_td = qtgui_wrap_ancestors(const_cast(td), sipType_QTextDocument); if (!py_td) { sipIsErr = 1; } else { sipTransferTo(a0Wrapper, py_td); Py_DECREF(py_td); } } sipCpp->setUserData(a0); %End int userState() const; void setUserState(int state); void clearLayout(); int revision() const; void setRevision(int rev); bool isVisible() const; void setVisible(bool visible); int blockNumber() const; int firstLineNumber() const; void setLineCount(int count); int lineCount() const; Qt::LayoutDirection textDirection() const; QList textFormats() const; }; class QTextFragment { %TypeHeaderCode #include %End public: QTextFragment(); QTextFragment(const QTextFragment &o); bool isValid() const; bool operator==(const QTextFragment &o) const; bool operator!=(const QTextFragment &o) const; bool operator<(const QTextFragment &o) const; int position() const; int length() const; bool contains(int position) const; QTextCharFormat charFormat() const; int charFormatIndex() const; QString text() const; %If (PyQt_RawFont) QList glyphRuns(int from = -1, int length = -1) const; %End }; class QTextBlockUserData /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QTextBlockUserData(); }; %ModuleHeaderCode PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td); %End %ModuleCode // Wrap a QObject and ensure that it's ancestors are all wrapped with the // correct ownerships. static PyObject *qtgui_wrap_ancestors_worker(QObject *obj) { if (!obj) { Py_INCREF(Py_None); return Py_None; } PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, sipType_QObject, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } PyObject *qtgui_wrap_ancestors(QObject *obj, const sipTypeDef *td) { PyObject *py_parent = qtgui_wrap_ancestors_worker(obj->parent()); if (!py_parent) return 0; PyObject *py_obj = sipConvertFromType(obj, td, (py_parent != Py_None ? py_parent : 0)); Py_DECREF(py_parent); return py_obj; } %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4048202 PyQt6-6.6.1/sip/QtGui/qtextoption.sip0000644000076500000240000000534214532160401016325 0ustar00philstaff// qtextoption.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextOption { %TypeHeaderCode #include %End public: QTextOption(); QTextOption(Qt::Alignment alignment); ~QTextOption(); QTextOption(const QTextOption &o); Qt::Alignment alignment() const; void setTextDirection(Qt::LayoutDirection aDirection); Qt::LayoutDirection textDirection() const; enum WrapMode { NoWrap, WordWrap, ManualWrap, WrapAnywhere, WrapAtWordBoundaryOrAnywhere, }; void setWrapMode(QTextOption::WrapMode wrap); QTextOption::WrapMode wrapMode() const; enum Flag /BaseType=Flag/ { IncludeTrailingSpaces, ShowTabsAndSpaces, ShowLineAndParagraphSeparators, AddSpaceForLineAndParagraphSeparators, SuppressColors, ShowDocumentTerminator, }; typedef QFlags Flags; QTextOption::Flags flags() const; void setTabArray(const QList &tabStops); QList tabArray() const; void setUseDesignMetrics(bool b); bool useDesignMetrics() const; void setAlignment(Qt::Alignment aalignment); void setFlags(QTextOption::Flags flags); enum TabType { LeftTab, RightTab, CenterTab, DelimiterTab, }; struct Tab { %TypeHeaderCode #include %End Tab(); Tab(qreal pos, QTextOption::TabType tabType, QChar delim = QChar()); bool operator==(const QTextOption::Tab &other) const; bool operator!=(const QTextOption::Tab &other) const; qreal position; QTextOption::TabType type; QChar delimiter; }; void setTabs(const QList &tabStops); QList tabs() const; void setTabStopDistance(qreal tabStopDistance); qreal tabStopDistance() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4192657 PyQt6-6.6.1/sip/QtGui/qtexttable.sip0000644000076500000240000000501114532160401016075 0ustar00philstaff// qtexttable.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextTableCell { %TypeHeaderCode #include %End public: QTextTableCell(); ~QTextTableCell(); QTextTableCell(const QTextTableCell &o); QTextCharFormat format() const; void setFormat(const QTextCharFormat &format); int row() const; int column() const; int rowSpan() const; int columnSpan() const; bool isValid() const; QTextCursor firstCursorPosition() const; QTextCursor lastCursorPosition() const; int tableCellFormatIndex() const; bool operator==(const QTextTableCell &other) const; bool operator!=(const QTextTableCell &other) const; }; class QTextTable : QTextFrame { %TypeHeaderCode #include %End public: explicit QTextTable(QTextDocument *doc); virtual ~QTextTable(); void resize(int rows, int cols); void insertRows(int pos, int num); void insertColumns(int pos, int num); void removeRows(int pos, int num); void removeColumns(int pos, int num); void mergeCells(int row, int col, int numRows, int numCols); void mergeCells(const QTextCursor &cursor); void splitCell(int row, int col, int numRows, int numCols); int rows() const; int columns() const; QTextTableCell cellAt(int row, int col) const; QTextTableCell cellAt(int position) const; QTextTableCell cellAt(const QTextCursor &c) const; QTextCursor rowStart(const QTextCursor &c) const; QTextCursor rowEnd(const QTextCursor &c) const; QTextTableFormat format() const; void setFormat(const QTextTableFormat &aformat); void appendRows(int count); void appendColumns(int count); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3823526 PyQt6-6.6.1/sip/QtGui/qtransform.sip0000644000076500000240000001202314532160401016115 0ustar00philstaff// qtransform.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QTransform { %TypeHeaderCode #include %End %PickleCode sipRes = Py_BuildValue("ddddddddd", sipCpp->m11(), sipCpp->m12(), sipCpp->m13(), sipCpp->m21(), sipCpp->m22(), sipCpp->m23(), sipCpp->m31(), sipCpp->m32(), sipCpp->m33()); %End public: enum TransformationType { TxNone, TxTranslate, TxScale, TxRotate, TxShear, TxProject, }; QTransform(); QTransform(qreal h11, qreal h12, qreal h13, qreal h21, qreal h22, qreal h23, qreal h31, qreal h32, qreal h33); QTransform(qreal h11, qreal h12, qreal h13, qreal h21, qreal h22, qreal h23); QTransform(const QTransform &other); QTransform::TransformationType type() const; void setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33); QTransform inverted(bool *invertible = 0) const; QTransform adjoint() const; QTransform transposed() const; QTransform &translate(qreal dx, qreal dy); QTransform &scale(qreal sx, qreal sy); QTransform &shear(qreal sh, qreal sv); QTransform &rotate(qreal angle, Qt::Axis axis = Qt::ZAxis); %If (Qt_6_5_0 -) QTransform &rotate(qreal a, Qt::Axis axis, qreal distanceToPlane); %End QTransform &rotateRadians(qreal angle, Qt::Axis axis = Qt::ZAxis); %If (Qt_6_5_0 -) QTransform &rotateRadians(qreal a, Qt::Axis axis, qreal distanceToPlane); %End static bool squareToQuad(const QPolygonF &square, QTransform &result); static bool quadToSquare(const QPolygonF &quad, QTransform &result); static bool quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &result); bool operator==(const QTransform &) const; bool operator!=(const QTransform &) const; QTransform &operator*=(const QTransform &) /__imatmul__/; QTransform operator*(const QTransform &o) const /__matmul__/; void reset(); void map(int x /Constrained/, int y /Constrained/, int *tx, int *ty) const; void map(qreal x, qreal y, qreal *tx, qreal *ty) const; QPoint map(const QPoint &p) const; QPointF map(const QPointF &p) const; QLine map(const QLine &l) const; QLineF map(const QLineF &l) const; QPolygonF map(const QPolygonF &a) const; QPolygon map(const QPolygon &a) const; QRegion map(const QRegion &r) const; QPainterPath map(const QPainterPath &p) const; QPolygon mapToPolygon(const QRect &r) const; QRect mapRect(const QRect &) const; QRectF mapRect(const QRectF &) const; bool isAffine() const; bool isIdentity() const; bool isInvertible() const; bool isScaling() const; bool isRotating() const; bool isTranslating() const; qreal determinant() const; qreal m11() const; qreal m12() const; qreal m13() const; qreal m21() const; qreal m22() const; qreal m23() const; qreal m31() const; qreal m32() const; qreal m33() const; qreal dx() const; qreal dy() const; static QTransform fromTranslate(qreal dx, qreal dy); static QTransform fromScale(qreal dx, qreal dy); QTransform &operator*=(qreal num); QTransform &operator/=(qreal div); QTransform &operator+=(qreal num); QTransform &operator-=(qreal num); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; QDataStream &operator<<(QDataStream &, const QTransform &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QTransform & /Constrained/) /ReleaseGIL/; QPoint operator*(const QPoint &p, const QTransform &m); QPointF operator*(const QPointF &p, const QTransform &m); QLineF operator*(const QLineF &l, const QTransform &m); QLine operator*(const QLine &l, const QTransform &m); QPolygon operator*(const QPolygon &a, const QTransform &m); QPolygonF operator*(const QPolygonF &a, const QTransform &m); QRegion operator*(const QRegion &r, const QTransform &m); QTransform operator*(const QTransform &a, qreal n); QTransform operator/(const QTransform &a, qreal n); QTransform operator+(const QTransform &a, qreal n); QTransform operator-(const QTransform &a, qreal n); bool qFuzzyCompare(const QTransform &t1, const QTransform &t2); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3510706 PyQt6-6.6.1/sip/QtGui/qundogroup.sip0000644000076500000240000000377214532160401016137 0ustar00philstaff// qundogroup.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoGroup : QObject { %TypeHeaderCode #include %End public: explicit QUndoGroup(QObject *parent /TransferThis/ = 0); virtual ~QUndoGroup(); void addStack(QUndoStack *stack); void removeStack(QUndoStack *stack); QList stacks() const; QUndoStack *activeStack() const; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; bool isClean() const; public slots: void redo(); void setActiveStack(QUndoStack *stack); void undo(); signals: void activeStackChanged(QUndoStack *stack); void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.390831 PyQt6-6.6.1/sip/QtGui/qundostack.sip0000644000076500000240000000567414532160401016113 0ustar00philstaff// qundostack.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoCommand /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: explicit QUndoCommand(QUndoCommand *parent /TransferThis/ = 0); QUndoCommand(const QString &text, QUndoCommand *parent /TransferThis/ = 0); virtual ~QUndoCommand(); virtual int id() const; virtual bool mergeWith(const QUndoCommand *other); virtual void redo(); void setText(const QString &text); QString text() const; virtual void undo(); int childCount() const; const QUndoCommand *child(int index) const; QString actionText() const; bool isObsolete() const; void setObsolete(bool obsolete); private: QUndoCommand(const QUndoCommand &); }; class QUndoStack : QObject { %TypeHeaderCode #include %End public: explicit QUndoStack(QObject *parent /TransferThis/ = 0); virtual ~QUndoStack(); void clear(); void push(QUndoCommand *cmd /Transfer/); bool canUndo() const; bool canRedo() const; QString undoText() const; QString redoText() const; int count() const /__len__/; int index() const; QString text(int idx) const; QAction *createUndoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; QAction *createRedoAction(QObject *parent /TransferThis/, const QString &prefix = QString()) const /Factory/; bool isActive() const; bool isClean() const; int cleanIndex() const; void beginMacro(const QString &text); void endMacro(); public slots: void redo(); void setActive(bool active = true); void setClean(); void setIndex(int idx); void undo(); void resetClean(); signals: void canRedoChanged(bool canRedo); void canUndoChanged(bool canUndo); void cleanChanged(bool clean); void indexChanged(int idx); void redoTextChanged(const QString &redoText); void undoTextChanged(const QString &undoText); public: void setUndoLimit(int limit); int undoLimit() const; const QUndoCommand *command(int index) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3894465 PyQt6-6.6.1/sip/QtGui/qutimimeconverter.sip0000644000076500000240000000323414532160401017507 0ustar00philstaff// qutimimeconverter.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) %If (macOS) class QUtiMimeConverter { %TypeHeaderCode #include %End public: QUtiMimeConverter(); virtual ~QUtiMimeConverter(); bool canConvert(const QString &mime, const QString &uti) const; virtual QList convertFromMime(const QString &mime, const QVariant &data, const QString &uti) const = 0; virtual QString utiForMime(const QString &mime) const = 0; virtual QString mimeForUti(const QString &uti) const = 0; virtual QVariant convertToMime(const QString &mime, const QList &data, const QString &uti) const = 0; virtual int count(const QMimeData *mimeData) const; private: QUtiMimeConverter(const QUtiMimeConverter &); }; %End %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4032207 PyQt6-6.6.1/sip/QtGui/qvalidator.sip0000644000076500000240000000644114532160401016076 0ustar00philstaff// qvalidator.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QValidator : QObject { %TypeHeaderCode #include %End public: explicit QValidator(QObject *parent /TransferThis/ = 0); virtual ~QValidator(); enum State { Invalid, Intermediate, Acceptable, }; virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const = 0; virtual void fixup(QString & /In,Out/) const; void setLocale(const QLocale &locale); QLocale locale() const; signals: void changed(); }; class QIntValidator : QValidator { %TypeHeaderCode #include %End public: explicit QIntValidator(QObject *parent /TransferThis/ = 0); QIntValidator(int bottom, int top, QObject *parent /TransferThis/ = 0); virtual ~QIntValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; void setBottom(int); void setTop(int); void setRange(int bottom, int top); int bottom() const; int top() const; }; class QDoubleValidator : QValidator { %TypeHeaderCode #include %End public: explicit QDoubleValidator(QObject *parent /TransferThis/ = 0); QDoubleValidator(double bottom, double top, int decimals, QObject *parent /TransferThis/ = 0); virtual ~QDoubleValidator(); virtual QValidator::State validate(QString & /In,Out/, int & /In,Out/) const; void setRange(double bottom, double top, int decimals = 0); void setBottom(double); void setTop(double); void setDecimals(int); double bottom() const; double top() const; int decimals() const; enum Notation { StandardNotation, ScientificNotation, }; void setNotation(QDoubleValidator::Notation); QDoubleValidator::Notation notation() const; %If (Qt_6_3_0 -) virtual void fixup(QString &input) const; %End }; class QRegularExpressionValidator : QValidator { %TypeHeaderCode #include %End public: explicit QRegularExpressionValidator(QObject *parent /TransferThis/ = 0); QRegularExpressionValidator(const QRegularExpression &re, QObject *parent /TransferThis/ = 0); virtual ~QRegularExpressionValidator(); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; QRegularExpression regularExpression() const; void setRegularExpression(const QRegularExpression &re); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.398149 PyQt6-6.6.1/sip/QtGui/qvectornd.sip0000644000076500000240000002170014532160401015730 0ustar00philstaff// qvectornd.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QVector2D { %TypeHeaderCode #include %End public: QVector2D(); QVector2D(float xpos, float ypos); explicit QVector2D(QPoint point); explicit QVector2D(QPointF point); explicit QVector2D(QVector3D vector); explicit QVector2D(QVector4D vector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); if (x && y) sipRes = PyUnicode_FromFormat("PyQt6.QtGui.QVector2D(%R, %R)", x, y); Py_XDECREF(x); Py_XDECREF(y); %End bool isNull() const; float x() const; float y() const; void setX(float x); void setY(float y); float operator[](int i) const; float length() const; float lengthSquared() const; QVector2D normalized() const; void normalize(); float distanceToPoint(QVector2D point) const; float distanceToLine(QVector2D point, QVector2D direction) const; QVector2D &operator+=(QVector2D vector); QVector2D &operator-=(QVector2D vector); QVector2D &operator*=(float factor); QVector2D &operator*=(QVector2D vector); QVector2D &operator/=(float divisor); QVector2D &operator/=(QVector2D vector); static float dotProduct(QVector2D v1, QVector2D v2); QVector3D toVector3D() const; QVector4D toVector4D() const; QPoint toPoint() const; QPointF toPointF() const; }; class QVector3D { %TypeHeaderCode #include %End public: QVector3D(); QVector3D(float xpos, float ypos, float zpos); explicit QVector3D(QPoint point); explicit QVector3D(QPointF point); QVector3D(QVector2D vector, float zpos); %If (Qt_6_1_0 -) explicit QVector3D(QVector2D vector); %End %If (- Qt_6_1_0) QVector3D(QVector2D vector); %End explicit QVector3D(QVector4D vector); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); if (x && y && z) sipRes = PyUnicode_FromFormat( "PyQt6.QtGui.QVector3D(%R, %R, %R)", x, y, z); Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); %End bool isNull() const; float x() const; float y() const; float z() const; void setX(float x); void setY(float y); void setZ(float z); float operator[](int i) const; float length() const; float lengthSquared() const; QVector3D normalized() const; void normalize(); QVector3D &operator+=(QVector3D vector); QVector3D &operator-=(QVector3D vector); QVector3D &operator*=(float factor); QVector3D &operator*=(QVector3D vector); QVector3D &operator/=(float divisor); QVector3D &operator/=(QVector3D vector); static float dotProduct(QVector3D v1, QVector3D v2); static QVector3D crossProduct(QVector3D v1, QVector3D v2); static QVector3D normal(QVector3D v1, QVector3D v2); static QVector3D normal(QVector3D v1, QVector3D v2, QVector3D v3); QVector3D project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; QVector3D unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const; float distanceToPoint(QVector3D point) const; float distanceToPlane(QVector3D plane, QVector3D normal) const; float distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const; float distanceToLine(QVector3D point, QVector3D direction) const; QVector2D toVector2D() const; QVector4D toVector4D() const; QPoint toPoint() const; QPointF toPointF() const; }; class QVector4D { %TypeHeaderCode #include %End public: QVector4D(); QVector4D(float xpos, float ypos, float zpos, float wpos); explicit QVector4D(QPoint point); explicit QVector4D(QPointF point); %If (Qt_6_1_0 -) explicit QVector4D(QVector2D vector); %End %If (- Qt_6_1_0) QVector4D(QVector2D vector); %End QVector4D(QVector2D vector, float zpos, float wpos); %If (Qt_6_1_0 -) explicit QVector4D(QVector3D vector); %End %If (- Qt_6_1_0) QVector4D(QVector3D vector); %End QVector4D(QVector3D vector, float wpos); SIP_PYOBJECT __repr__() const /TypeHint="str"/; %MethodCode PyObject *x = PyFloat_FromDouble(sipCpp->x()); PyObject *y = PyFloat_FromDouble(sipCpp->y()); PyObject *z = PyFloat_FromDouble(sipCpp->z()); PyObject *w = PyFloat_FromDouble(sipCpp->w()); if (x && y && z && w) sipRes = PyUnicode_FromFormat( "PyQt6.QtGui.QVector4D(%R, %R, %R, %R)", x, y, z, w); Py_XDECREF(x); Py_XDECREF(y); Py_XDECREF(z); Py_XDECREF(w); %End bool isNull() const; float x() const; float y() const; float z() const; float w() const; void setX(float x); void setY(float y); void setZ(float z); void setW(float w); float operator[](int i) const; float length() const; float lengthSquared() const; QVector4D normalized() const; void normalize(); QVector4D &operator+=(QVector4D vector); QVector4D &operator-=(QVector4D vector); QVector4D &operator*=(float factor); QVector4D &operator*=(QVector4D vector); QVector4D &operator/=(float divisor); QVector4D &operator/=(QVector4D vector); static float dotProduct(QVector4D v1, QVector4D v2); QVector2D toVector2D() const; QVector2D toVector2DAffine() const; QVector3D toVector3D() const; QVector3D toVector3DAffine() const; QPoint toPoint() const; QPointF toPointF() const; }; bool operator==(QVector4D v1, QVector4D v2); bool operator==(QVector3D v1, QVector3D v2); bool operator==(QVector2D v1, QVector2D v2); bool operator!=(QVector4D v1, QVector4D v2); bool operator!=(QVector3D v1, QVector3D v2); bool operator!=(QVector2D v1, QVector2D v2); QVector4D operator+(QVector4D v1, QVector4D v2); QVector3D operator+(QVector3D v1, QVector3D v2); QVector2D operator+(QVector2D v1, QVector2D v2); QVector4D operator-(QVector4D vector); QVector4D operator-(QVector4D v1, QVector4D v2); QVector3D operator-(QVector3D vector); QVector3D operator-(QVector3D v1, QVector3D v2); QVector2D operator-(QVector2D vector); QVector2D operator-(QVector2D v1, QVector2D v2); QVector4D operator*(const QMatrix4x4 &matrix, const QVector4D &vector); QVector4D operator*(const QVector4D &vector, const QMatrix4x4 &matrix); QVector4D operator*(QVector4D v1, QVector4D v2); QVector4D operator*(QVector4D vector, float factor); QVector4D operator*(float factor, QVector4D vector); QVector3D operator*(const QMatrix4x4 &matrix, const QVector3D &vector); QVector3D operator*(const QVector3D &vector, const QMatrix4x4 &matrix); QVector3D operator*(QVector3D v1, QVector3D v2); QVector3D operator*(QVector3D vector, float factor); QVector3D operator*(float factor, QVector3D vector); QVector2D operator*(QVector2D v1, QVector2D v2); QVector2D operator*(QVector2D vector, float factor); QVector2D operator*(float factor, QVector2D vector); QVector4D operator/(QVector4D vector, QVector4D divisor); QVector4D operator/(QVector4D vector, float divisor); QVector3D operator/(QVector3D vector, QVector3D divisor); QVector3D operator/(QVector3D vector, float divisor); QVector2D operator/(QVector2D vector, QVector2D divisor); QVector2D operator/(QVector2D vector, float divisor); bool qFuzzyCompare(QVector4D v1, QVector4D v2); bool qFuzzyCompare(QVector3D v1, QVector3D v2); bool qFuzzyCompare(QVector2D v1, QVector2D v2); QDataStream &operator<<(QDataStream &, QVector4D) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, QVector3D) /ReleaseGIL/; QDataStream &operator<<(QDataStream &, QVector2D) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector4D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector3D & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QVector2D & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3606167 PyQt6-6.6.1/sip/QtGui/qwindow.sip0000644000076500000240000001610414532160401015415 0ustar00philstaff// qwindow.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWindow : QObject, QSurface { %TypeHeaderCode #include %End public: explicit QWindow(QScreen *screen = 0); explicit QWindow(QWindow *parent /TransferThis/); virtual ~QWindow(); void setSurfaceType(QSurface::SurfaceType surfaceType); virtual QSurface::SurfaceType surfaceType() const; bool isVisible() const; void create(); WId winId() const; QWindow *parent(QWindow::AncestorMode mode = QWindow::ExcludeTransients) const; void setParent(QWindow *parent /Transfer/); bool isTopLevel() const; bool isModal() const; Qt::WindowModality modality() const; void setModality(Qt::WindowModality modality); void setFormat(const QSurfaceFormat &format); virtual QSurfaceFormat format() const; QSurfaceFormat requestedFormat() const; void setFlags(Qt::WindowFlags flags); Qt::WindowFlags flags() const; Qt::WindowType type() const; QString title() const; void setOpacity(qreal level); public slots: void requestActivate(); public: bool isActive() const; void reportContentOrientationChange(Qt::ScreenOrientation orientation); Qt::ScreenOrientation contentOrientation() const; qreal devicePixelRatio() const; Qt::WindowState windowState() const; void setWindowState(Qt::WindowState state); void setTransientParent(QWindow *parent); QWindow *transientParent() const; enum AncestorMode { ExcludeTransients, IncludeTransients, }; bool isAncestorOf(const QWindow *child, QWindow::AncestorMode mode = QWindow::IncludeTransients) const; bool isExposed() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; QSize minimumSize() const; QSize maximumSize() const; QSize baseSize() const; QSize sizeIncrement() const; void setMinimumSize(const QSize &size); void setMaximumSize(const QSize &size); void setBaseSize(const QSize &size); void setSizeIncrement(const QSize &size); void setGeometry(int posx, int posy, int w, int h); void setGeometry(const QRect &rect); QRect geometry() const; QMargins frameMargins() const; QRect frameGeometry() const; QPoint framePosition() const; void setFramePosition(const QPoint &point); int width() const; int height() const; int x() const; int y() const; virtual QSize size() const; QPoint position() const; void setPosition(const QPoint &pt); void setPosition(int posx, int posy); void resize(const QSize &newSize); void resize(int w, int h); void setFilePath(const QString &filePath); QString filePath() const; void setIcon(const QIcon &icon); QIcon icon() const; void destroy(); bool setKeyboardGrabEnabled(bool grab); bool setMouseGrabEnabled(bool grab); QScreen *screen() const; void setScreen(QScreen *screen); virtual QObject *focusObject() const; QPoint mapToGlobal(const QPoint &pos) const; QPointF mapToGlobal(const QPointF &pos) const; QPoint mapFromGlobal(const QPoint &pos) const; QPointF mapFromGlobal(const QPointF &pos) const; QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); public slots: void setVisible(bool visible); void show() /ReleaseGIL/; void hide(); void showMinimized() /ReleaseGIL/; void showMaximized() /ReleaseGIL/; void showFullScreen() /ReleaseGIL/; void showNormal() /ReleaseGIL/; bool close(); void raise(); void lower(); void setTitle(const QString &); void setX(int arg); void setY(int arg); void setWidth(int arg); void setHeight(int arg); void setMinimumWidth(int w); void setMinimumHeight(int h); void setMaximumWidth(int w); void setMaximumHeight(int h); void alert(int msec); void requestUpdate(); signals: void screenChanged(QScreen *screen); void modalityChanged(Qt::WindowModality modality); void windowStateChanged(Qt::WindowState windowState); void xChanged(int arg); void yChanged(int arg); void widthChanged(int arg); void heightChanged(int arg); void minimumWidthChanged(int arg); void minimumHeightChanged(int arg); void maximumWidthChanged(int arg); void maximumHeightChanged(int arg); void visibleChanged(bool arg); void contentOrientationChanged(Qt::ScreenOrientation orientation); void focusObjectChanged(QObject *object); void windowTitleChanged(const QString &title); protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void touchEvent(QTouchEvent *); virtual void tabletEvent(QTabletEvent *); public: enum Visibility { Hidden, AutomaticVisibility, Windowed, Minimized, Maximized, FullScreen, }; QWindow::Visibility visibility() const; void setVisibility(QWindow::Visibility v); qreal opacity() const; void setMask(const QRegion ®ion); QRegion mask() const; static QWindow *fromWinId(WId id); signals: void visibilityChanged(QWindow::Visibility visibility); void activeChanged(); void opacityChanged(qreal opacity); public: void setFlag(Qt::WindowType, bool on = true); Qt::WindowStates windowStates() const; void setWindowStates(Qt::WindowStates states); public slots: bool startSystemResize(Qt::Edges edges); bool startSystemMove(); protected: virtual void paintEvent(QPaintEvent *); virtual void closeEvent(QCloseEvent *); virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result /Out/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3874702 PyQt6-6.6.1/sip/QtGui/qwindowdefs.sip0000644000076500000240000000176114532160401016262 0ustar00philstaff// qwindowdefs.sip generated by MetaSIP // // This file is part of the QtGui Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QWindowList; typedef quintptr WId; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5239918 PyQt6-6.6.1/sip/QtHelp/0000755000076500000240000000000014532160403013354 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3117108 PyQt6-6.6.1/sip/QtHelp/QtHelpmod.sip0000644000076500000240000000445314532160401015772 0ustar00philstaff// QtHelpmod.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtHelp, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qcompressedhelpinfo.sip %Include qhelpcontentwidget.sip %Include qhelpengine.sip %Include qhelpenginecore.sip %Include qhelpfilterdata.sip %Include qhelpfilterengine.sip %Include qhelpfiltersettingswidget.sip %Include qhelpindexwidget.sip %Include qhelplink.sip %Include qhelpsearchengine.sip %Include qhelpsearchquerywidget.sip %Include qhelpsearchresultwidget.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.308713 PyQt6-6.6.1/sip/QtHelp/qcompressedhelpinfo.sip0000644000076500000240000000262514532160401020146 0ustar00philstaff// qcompressedhelpinfo.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCompressedHelpInfo { %TypeHeaderCode #include %End public: QCompressedHelpInfo(); QCompressedHelpInfo(const QCompressedHelpInfo &other); ~QCompressedHelpInfo(); void swap(QCompressedHelpInfo &other); QString namespaceName() const; QString component() const; QVersionNumber version() const; static QCompressedHelpInfo fromCompressedHelpFile(const QString &documentationFileName); bool isNull() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3109164 PyQt6-6.6.1/sip/QtHelp/qhelpcontentwidget.sip0000644000076500000240000000445414532160401020006 0ustar00philstaff// qhelpcontentwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpContentItem /NoDefaultCtors/ { %TypeHeaderCode #include %End public: ~QHelpContentItem(); QHelpContentItem *child(int row) const; int childCount() const; QString title() const; QUrl url() const; int row() const; QHelpContentItem *parent() const; int childPosition(QHelpContentItem *child) const; }; class QHelpContentModel : QAbstractItemModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpContentModel(); void createContents(const QString &customFilterName); QHelpContentItem *contentItemAt(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &index, int role) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; bool isCreatingContents() const; signals: void contentsCreationStarted(); void contentsCreated(); }; class QHelpContentWidget : QTreeView { %TypeHeaderCode #include %End public: QModelIndex indexOf(const QUrl &link); signals: void linkActivated(const QUrl &link); private: QHelpContentWidget(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3112955 PyQt6-6.6.1/sip/QtHelp/qhelpengine.sip0000644000076500000240000000252114532160401016366 0ustar00philstaff// qhelpengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngine : QHelpEngineCore { %TypeHeaderCode #include %End public: QHelpEngine(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngine(); QHelpContentModel *contentModel() const; QHelpIndexModel *indexModel() const; QHelpContentWidget *contentWidget(); QHelpIndexWidget *indexWidget(); QHelpSearchEngine *searchEngine(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3102152 PyQt6-6.6.1/sip/QtHelp/qhelpenginecore.sip0000644000076500000240000001013014532160401017232 0ustar00philstaff// qhelpenginecore.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpEngineCore : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QHelpContentModel, &sipType_QHelpContentModel, -1, 1}, {sipName_QHelpContentWidget, &sipType_QHelpContentWidget, -1, 2}, {sipName_QHelpEngineCore, &sipType_QHelpEngineCore, 10, 3}, {sipName_QHelpFilterEngine, &sipType_QHelpFilterEngine, -1, 4}, {sipName_QHelpFilterSettingsWidget, &sipType_QHelpFilterSettingsWidget, -1, 5}, {sipName_QHelpIndexModel, &sipType_QHelpIndexModel, -1, 6}, {sipName_QHelpIndexWidget, &sipType_QHelpIndexWidget, -1, 7}, {sipName_QHelpSearchEngine, &sipType_QHelpSearchEngine, -1, 8}, {sipName_QHelpSearchQueryWidget, &sipType_QHelpSearchQueryWidget, -1, 9}, {sipName_QHelpSearchResultWidget, &sipType_QHelpSearchResultWidget, -1, -1}, {sipName_QHelpEngine, &sipType_QHelpEngine, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QHelpEngineCore(const QString &collectionFile, QObject *parent /TransferThis/ = 0); virtual ~QHelpEngineCore(); bool setupData(); QString collectionFile() const; void setCollectionFile(const QString &fileName); bool copyCollectionFile(const QString &fileName); static QString namespaceName(const QString &documentationFileName); bool registerDocumentation(const QString &documentationFileName); bool unregisterDocumentation(const QString &namespaceName); QString documentationFileName(const QString &namespaceName); QStringList registeredDocumentations() const; QUrl findFile(const QUrl &url) const; QByteArray fileData(const QUrl &url) const; bool removeCustomValue(const QString &key); QVariant customValue(const QString &key, const QVariant &defaultValue = QVariant()) const; bool setCustomValue(const QString &key, const QVariant &value); static QVariant metaData(const QString &documentationFileName, const QString &name); QString error() const; bool autoSaveFilter() const; void setAutoSaveFilter(bool save); signals: void setupStarted(); void setupFinished(); void warning(const QString &msg); public: QHelpFilterEngine *filterEngine() const; QList files(const QString namespaceName, const QString &filterName, const QString &extensionFilter = QString()); void setUsesFilterEngine(bool uses); bool usesFilterEngine() const; QList documentsForIdentifier(const QString &id) const; QList documentsForIdentifier(const QString &id, const QString &filterName) const; QList documentsForKeyword(const QString &keyword) const; QList documentsForKeyword(const QString &keyword, const QString &filterName) const; bool isReadOnly() const; void setReadOnly(bool enable); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3095853 PyQt6-6.6.1/sip/QtHelp/qhelpfilterdata.sip0000644000076500000240000000262614532160401017246 0ustar00philstaff// qhelpfilterdata.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpFilterData { %TypeHeaderCode #include %End public: QHelpFilterData(); QHelpFilterData(const QHelpFilterData &other); ~QHelpFilterData(); bool operator==(const QHelpFilterData &other) const; void swap(QHelpFilterData &other); void setComponents(const QStringList &components); void setVersions(const QList &versions); QStringList components() const; QList versions() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3144217 PyQt6-6.6.1/sip/QtHelp/qhelpfilterengine.sip0000644000076500000240000000354114532160401017577 0ustar00philstaff// qhelpfilterengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpFilterEngine : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QMap namespaceToComponent() const; QMap namespaceToVersion() const; QStringList filters() const; QString activeFilter() const; bool setActiveFilter(const QString &filterName); QStringList availableComponents() const; QHelpFilterData filterData(const QString &filterName) const; bool setFilterData(const QString &filterName, const QHelpFilterData &filterData); bool removeFilter(const QString &filterName); QStringList namespacesForFilter(const QString &filterName) const; signals: void filterActivated(const QString &newFilter); protected: virtual ~QHelpFilterEngine(); public: QList availableVersions() const; QStringList indices() const; QStringList indices(const QString &filterName) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3139865 PyQt6-6.6.1/sip/QtHelp/qhelpfiltersettingswidget.sip0000644000076500000240000000266114532160401021400 0ustar00philstaff// qhelpfiltersettingswidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpFilterSettingsWidget : QWidget { %TypeHeaderCode #include %End public: explicit QHelpFilterSettingsWidget(QWidget *parent /TransferThis/ = 0); virtual ~QHelpFilterSettingsWidget(); void setAvailableComponents(const QStringList &components); void setAvailableVersions(const QList &versions); void readSettings(const QHelpFilterEngine *filterEngine); bool applySettings(QHelpFilterEngine *filterEngine) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3121653 PyQt6-6.6.1/sip/QtHelp/qhelpindexwidget.sip0000644000076500000240000000345414532160401017442 0ustar00philstaff// qhelpindexwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpIndexModel : QStringListModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QHelpEngineCore *helpEngine() const; void createIndex(const QString &customFilterName); QModelIndex filter(const QString &filter, const QString &wildcard = QString()); bool isCreatingIndex() const; signals: void indexCreationStarted(); void indexCreated(); private: virtual ~QHelpIndexModel(); }; class QHelpIndexWidget : QListView { %TypeHeaderCode #include %End public slots: void filterIndices(const QString &filter, const QString &wildcard = QString()); void activateCurrentItem(); signals: void documentActivated(const QHelpLink &document, const QString &keyword); void documentsActivated(const QList &documents, const QString &keyword); private: QHelpIndexWidget(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3136008 PyQt6-6.6.1/sip/QtHelp/qhelplink.sip0000644000076500000240000000203014532160401016051 0ustar00philstaff// qhelplink.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QHelpLink { %TypeHeaderCode #include %End QUrl url; QString title; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3128102 PyQt6-6.6.1/sip/QtHelp/qhelpsearchengine.sip0000644000076500000240000000453714532160401017565 0ustar00philstaff// qhelpsearchengine.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQuery { %TypeHeaderCode #include %End public: enum FieldName { DEFAULT, FUZZY, WITHOUT, PHRASE, ALL, ATLEAST, }; QHelpSearchQuery(); QHelpSearchQuery(QHelpSearchQuery::FieldName field, const QStringList &wordList); }; class QHelpSearchEngine : QObject { %TypeHeaderCode #include %End public: QHelpSearchEngine(QHelpEngineCore *helpEngine, QObject *parent /TransferThis/ = 0); virtual ~QHelpSearchEngine(); QHelpSearchQueryWidget *queryWidget(); QHelpSearchResultWidget *resultWidget(); public slots: void reindexDocumentation(); void cancelIndexing(); void cancelSearching(); signals: void indexingStarted(); void indexingFinished(); void searchingStarted(); void searchingFinished(int hits); public: int searchResultCount() const; QList searchResults(int start, int end) const; QString searchInput() const; public slots: void search(const QString &searchInput); }; class QHelpSearchResult { %TypeHeaderCode #include %End public: QHelpSearchResult(); QHelpSearchResult(const QHelpSearchResult &other); QHelpSearchResult(const QUrl &url, const QString &title, const QString &snippet); ~QHelpSearchResult(); QString title() const; QUrl url() const; QString snippet() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3132415 PyQt6-6.6.1/sip/QtHelp/qhelpsearchquerywidget.sip0000644000076500000240000000302014532160401020653 0ustar00philstaff// qhelpsearchquerywidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchQueryWidget : QWidget { %TypeHeaderCode #include %End public: explicit QHelpSearchQueryWidget(QWidget *parent /TransferThis/ = 0); virtual ~QHelpSearchQueryWidget(); void expandExtendedSearch(); void collapseExtendedSearch(); signals: void search(); private: virtual void focusInEvent(QFocusEvent *focusEvent); virtual void changeEvent(QEvent *event); public: bool isCompactMode() const; void setCompactMode(bool on); QString searchInput() const; void setSearchInput(const QString &searchInput); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3090997 PyQt6-6.6.1/sip/QtHelp/qhelpsearchresultwidget.sip0000644000076500000240000000230614532160401021032 0ustar00philstaff// qhelpsearchresultwidget.sip generated by MetaSIP // // This file is part of the QtHelp Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHelpSearchResultWidget : QWidget /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QHelpSearchResultWidget(); QUrl linkAt(const QPoint &point); signals: void requestShowLink(const QUrl &url); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.660299 PyQt6-6.6.1/sip/QtMultimedia/0000755000076500000240000000000014532160403014556 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5638077 PyQt6-6.6.1/sip/QtMultimedia/QtMultimediamod.sip0000644000076500000240000000523314532160402020374 0ustar00philstaff// QtMultimediamod.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtMultimedia, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qaudio.sip %Include qaudiobuffer.sip %Include qaudiodecoder.sip %Include qaudiodevice.sip %Include qaudioformat.sip %Include qaudioinput.sip %Include qaudiooutput.sip %Include qaudiosink.sip %Include qaudiosource.sip %Include qcamera.sip %Include qcameradevice.sip %Include qcapturablewindow.sip %Include qimagecapture.sip %Include qmediacapturesession.sip %Include qmediadevices.sip %Include qmediaformat.sip %Include qmediametadata.sip %Include qmediaplayer.sip %Include qmediarecorder.sip %Include qmediatimerange.sip %Include qscreencapture.sip %Include qsoundeffect.sip %Include qvideoframe.sip %Include qvideoframeformat.sip %Include qvideosink.sip %Include qwindowcapture.sip %Include qpymultimedia_qlist.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.570164 PyQt6-6.6.1/sip/QtMultimedia/qaudio.sip0000644000076500000240000000275414532160402016564 0ustar00philstaff// qaudio.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) namespace QAudio { %TypeHeaderCode #include %End enum Error { NoError, OpenError, IOError, UnderrunError, FatalError, }; enum State { ActiveState, SuspendedState, StoppedState, IdleState, }; enum VolumeScale { LinearVolumeScale, CubicVolumeScale, LogarithmicVolumeScale, DecibelVolumeScale, }; float convertVolume(float volume, QAudio::VolumeScale from, QAudio::VolumeScale to); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5603096 PyQt6-6.6.1/sip/QtMultimedia/qaudiobuffer.sip0000644000076500000240000000371114532160402017750 0ustar00philstaff// qaudiobuffer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioBuffer { %TypeHeaderCode #include %End public: QAudioBuffer(); QAudioBuffer(const QByteArray &data, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(int numFrames, const QAudioFormat &format, qint64 startTime = -1); QAudioBuffer(const QAudioBuffer &other); ~QAudioBuffer(); bool isValid() const; QAudioFormat format() const; qsizetype frameCount() const; qsizetype sampleCount() const; qsizetype byteCount() const; qint64 duration() const; qint64 startTime() const; void swap(QAudioBuffer &other /Constrained/); void detach(); SIP_PYOBJECT constData() const /TypeHint="PyQt6.sip.voidptr"/; %MethodCode sipRes = sipConvertFromConstVoidPtrAndSize(sipCpp->constData(), sipCpp->byteCount()); %End SIP_PYOBJECT data() /TypeHint="PyQt6.sip.voidptr"/; %MethodCode sipRes = sipConvertFromVoidPtrAndSize(sipCpp->data(), sipCpp->byteCount()); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5743392 PyQt6-6.6.1/sip/QtMultimedia/qaudiodecoder.sip0000644000076500000240000000423614532160402020107 0ustar00philstaff// qaudiodecoder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioDecoder : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, ResourceError, FormatError, AccessDeniedError, NotSupportedError, }; explicit QAudioDecoder(QObject *parent /TransferThis/ = 0); virtual ~QAudioDecoder(); bool isSupported() const; bool isDecoding() const; QUrl source() const; void setSource(const QUrl &fileName); QIODevice *sourceDevice() const; void setSourceDevice(QIODevice *device); QAudioDecoder::Error error() const; QString errorString() const; QAudioBuffer read() const /ReleaseGIL/; bool bufferAvailable() const; qint64 position() const; qint64 duration() const; QAudioFormat audioFormat() const; void setAudioFormat(const QAudioFormat &format); public slots: void start(); void stop(); signals: void bufferAvailableChanged(bool); void bufferReady(); void finished(); void isDecodingChanged(bool); void error(QAudioDecoder::Error error); void sourceChanged(); void positionChanged(qint64 position); void durationChanged(qint64 duration); void formatChanged(const QAudioFormat &format); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5593302 PyQt6-6.6.1/sip/QtMultimedia/qaudiodevice.sip0000644000076500000240000000361214532160402017736 0ustar00philstaff// qaudiodevice.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioDevice { %TypeHeaderCode #include %End public: enum Mode { Null, Input, Output, }; QAudioDevice(); QAudioDevice(const QAudioDevice &other); ~QAudioDevice(); void swap(QAudioDevice &other /Constrained/); bool operator==(const QAudioDevice &other) const; bool operator!=(const QAudioDevice &other) const; bool isNull() const; QByteArray id() const; QString description() const; bool isDefault() const; QAudioDevice::Mode mode() const; bool isFormatSupported(const QAudioFormat &format) const; QAudioFormat preferredFormat() const; int minimumSampleRate() const; int maximumSampleRate() const; int minimumChannelCount() const; int maximumChannelCount() const; QList supportedSampleFormats() const; %If (Qt_6_4_0 -) QAudioFormat::ChannelConfig channelConfiguration() const; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5644789 PyQt6-6.6.1/sip/QtMultimedia/qaudioformat.sip0000644000076500000240000000641514532160402017773 0ustar00philstaff// qaudioformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioFormat { %TypeHeaderCode #include %End public: enum AudioChannelPosition { UnknownPosition, FrontLeft, FrontRight, FrontCenter, LFE, BackLeft, BackRight, FrontLeftOfCenter, FrontRightOfCenter, BackCenter, LFE2, SideLeft, SideRight, TopFrontLeft, TopFrontRight, TopFrontCenter, TopCenter, TopBackLeft, TopBackRight, TopSideLeft, TopSideRight, TopBackCenter, BottomFrontCenter, BottomFrontLeft, BottomFrontRight, }; enum ChannelConfig { ChannelConfigUnknown, ChannelConfigMono, ChannelConfigStereo, ChannelConfig2Dot1, ChannelConfigSurround5Dot0, ChannelConfigSurround5Dot1, ChannelConfigSurround7Dot0, ChannelConfigSurround7Dot1, %If (Qt_6_4_0 -) ChannelConfig3Dot0, %End %If (Qt_6_4_0 -) ChannelConfig3Dot1, %End }; enum SampleFormat { Unknown, UInt8, Int16, Int32, Float, }; bool isValid() const; void setSampleRate(int sampleRate); int sampleRate() const; void setChannelCount(int channelCount); int channelCount() const; qint32 bytesForDuration(qint64 duration) const; qint64 durationForBytes(qint32 byteCount) const; qint32 bytesForFrames(qint32 frameCount) const; qint32 framesForBytes(qint32 byteCount) const; qint32 framesForDuration(qint64 duration) const; qint64 durationForFrames(qint32 frameCount) const; int bytesPerFrame() const; void setChannelConfig(QAudioFormat::ChannelConfig config); QAudioFormat::ChannelConfig channelConfig() const; int channelOffset(QAudioFormat::AudioChannelPosition channel) const; void setSampleFormat(QAudioFormat::SampleFormat f); QAudioFormat::SampleFormat sampleFormat() const; int bytesPerSample() const; float normalizedSampleValue(const void *sample) const; %If (Qt_6_4_0 -) static QAudioFormat::ChannelConfig defaultChannelConfigForChannelCount(int channelCount); %End }; %End %If (Qt_6_2_0 -) bool operator==(const QAudioFormat &a, const QAudioFormat &b); %End %If (Qt_6_2_0 -) bool operator!=(const QAudioFormat &a, const QAudioFormat &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5722542 PyQt6-6.6.1/sip/QtMultimedia/qaudioinput.sip0000644000076500000240000000303514532160402017635 0ustar00philstaff// qaudioinput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioInput : QObject { %TypeHeaderCode #include %End public: QAudioInput(const QAudioDevice &deviceInfo, QObject *parent /TransferThis/ = 0); explicit QAudioInput(QObject *parent /TransferThis/ = 0); virtual ~QAudioInput(); QAudioDevice device() const; float volume() const; bool isMuted() const; public slots: void setDevice(const QAudioDevice &device); void setMuted(bool muted); void setVolume(float volume); signals: void deviceChanged(); void volumeChanged(float volume); void mutedChanged(bool muted); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5597649 PyQt6-6.6.1/sip/QtMultimedia/qaudiooutput.sip0000644000076500000240000000303714532160402020040 0ustar00philstaff// qaudiooutput.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioOutput : QObject { %TypeHeaderCode #include %End public: QAudioOutput(const QAudioDevice &device, QObject *parent /TransferThis/ = 0); explicit QAudioOutput(QObject *parent /TransferThis/ = 0); virtual ~QAudioOutput(); float volume() const; QAudioDevice device() const; bool isMuted() const; public slots: void setDevice(const QAudioDevice &device); void setVolume(float volume); void setMuted(bool muted); signals: void deviceChanged(); void volumeChanged(float volume); void mutedChanged(bool muted); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.561852 PyQt6-6.6.1/sip/QtMultimedia/qaudiosink.sip0000644000076500000240000000345614532160402017451 0ustar00philstaff// qaudiosink.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioSink : QObject { %TypeHeaderCode #include %End public: QAudioSink(const QAudioDevice &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioSink(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(qsizetype bytes); qsizetype bufferSize() const; qsizetype bytesFree() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; void setVolume(qreal); qreal volume() const; signals: void stateChanged(QAudio::State state); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5706198 PyQt6-6.6.1/sip/QtMultimedia/qaudiosource.sip0000644000076500000240000000350614532160402020001 0ustar00philstaff// qaudiosource.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAudioSource : QObject { %TypeHeaderCode #include %End public: QAudioSource(const QAudioDevice &audioDeviceInfo, const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); QAudioSource(const QAudioFormat &format = QAudioFormat(), QObject *parent /TransferThis/ = 0); virtual ~QAudioSource(); QAudioFormat format() const; void start(QIODevice *device); QIODevice *start(); void stop(); void reset(); void suspend(); void resume(); void setBufferSize(qsizetype bytes); qsizetype bufferSize() const; qsizetype bytesAvailable() const; void setVolume(qreal volume); qreal volume() const; qint64 processedUSecs() const; qint64 elapsedUSecs() const; QAudio::Error error() const; QAudio::State state() const; signals: void stateChanged(QAudio::State state); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5656884 PyQt6-6.6.1/sip/QtMultimedia/qcamera.sip0000644000076500000240000001662414532160402016714 0ustar00philstaff// qcamera.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QCamera : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAudioDecoder, &sipType_QAudioDecoder, -1, 1}, {sipName_QAudioInput, &sipType_QAudioInput, -1, 2}, {sipName_QAudioOutput, &sipType_QAudioOutput, -1, 3}, {sipName_QAudioSink, &sipType_QAudioSink, -1, 4}, {sipName_QAudioSource, &sipType_QAudioSource, -1, 5}, {sipName_QCamera, &sipType_QCamera, -1, 6}, {sipName_QImageCapture, &sipType_QImageCapture, -1, 7}, {sipName_QMediaCaptureSession, &sipType_QMediaCaptureSession, -1, 8}, {sipName_QMediaDevices, &sipType_QMediaDevices, -1, 9}, {sipName_QMediaPlayer, &sipType_QMediaPlayer, -1, 10}, {sipName_QMediaRecorder, &sipType_QMediaRecorder, -1, 11}, #if QT_VERSION >= 0x060500 {sipName_QScreenCapture, &sipType_QScreenCapture, -1, 12}, #else {0, 0, -1, 12}, #endif {sipName_QSoundEffect, &sipType_QSoundEffect, -1, 13}, {sipName_QVideoSink, &sipType_QVideoSink, -1, 14}, #if QT_VERSION >= 0x060600 {sipName_QWindowCapture, &sipType_QWindowCapture, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { NoError, CameraError, }; enum FocusMode { FocusModeAuto, FocusModeAutoNear, FocusModeAutoFar, FocusModeHyperfocal, FocusModeInfinity, FocusModeManual, }; enum FlashMode { FlashOff, FlashOn, FlashAuto, }; enum TorchMode { TorchOff, TorchOn, TorchAuto, }; enum ExposureMode { ExposureAuto, ExposureManual, ExposurePortrait, ExposureNight, ExposureSports, ExposureSnow, ExposureBeach, ExposureAction, ExposureLandscape, ExposureNightPortrait, ExposureTheatre, ExposureSunset, ExposureSteadyPhoto, ExposureFireworks, ExposureParty, ExposureCandlelight, ExposureBarcode, }; enum WhiteBalanceMode { WhiteBalanceAuto, WhiteBalanceManual, WhiteBalanceSunlight, WhiteBalanceCloudy, WhiteBalanceShade, WhiteBalanceTungsten, WhiteBalanceFluorescent, WhiteBalanceFlash, WhiteBalanceSunset, }; enum class Feature { ColorTemperature, ExposureCompensation, IsoSensitivity, ManualExposureTime, CustomFocusPoint, FocusDistance, }; typedef QFlags Features; QCamera(const QCameraDevice &cameraDevice, QObject *parent /TransferThis/ = 0); QCamera(QCameraDevice::Position position, QObject *parent /TransferThis/ = 0); explicit QCamera(QObject *parent /TransferThis/ = 0); virtual ~QCamera(); bool isAvailable() const; bool isActive() const; QMediaCaptureSession *captureSession() const; QCameraDevice cameraDevice() const; void setCameraDevice(const QCameraDevice &cameraDevice); QCameraFormat cameraFormat() const; void setCameraFormat(const QCameraFormat &format); QCamera::Error error() const; QString errorString() const; QCamera::Features supportedFeatures() const; QCamera::FocusMode focusMode() const; void setFocusMode(QCamera::FocusMode mode); bool isFocusModeSupported(QCamera::FocusMode mode) const; QPointF focusPoint() const; QPointF customFocusPoint() const; void setCustomFocusPoint(const QPointF &point); void setFocusDistance(float d); float focusDistance() const; float minimumZoomFactor() const; float maximumZoomFactor() const; float zoomFactor() const; void setZoomFactor(float factor); QCamera::FlashMode flashMode() const; bool isFlashModeSupported(QCamera::FlashMode mode) const; bool isFlashReady() const; QCamera::TorchMode torchMode() const; bool isTorchModeSupported(QCamera::TorchMode mode) const; QCamera::ExposureMode exposureMode() const; bool isExposureModeSupported(QCamera::ExposureMode mode) const; float exposureCompensation() const; int isoSensitivity() const; int manualIsoSensitivity() const; float exposureTime() const; float manualExposureTime() const; int minimumIsoSensitivity() const; int maximumIsoSensitivity() const; float minimumExposureTime() const; float maximumExposureTime() const; QCamera::WhiteBalanceMode whiteBalanceMode() const; bool isWhiteBalanceModeSupported(QCamera::WhiteBalanceMode mode) const; int colorTemperature() const; public slots: void setActive(bool active); void start(); void stop(); void zoomTo(float zoom, float rate); void setFlashMode(QCamera::FlashMode mode); void setTorchMode(QCamera::TorchMode mode); void setExposureMode(QCamera::ExposureMode mode); void setExposureCompensation(float ev); void setManualIsoSensitivity(int iso); void setAutoIsoSensitivity(); void setManualExposureTime(float seconds); void setAutoExposureTime(); void setWhiteBalanceMode(QCamera::WhiteBalanceMode mode); void setColorTemperature(int colorTemperature); signals: void activeChanged(bool); void errorChanged(); void errorOccurred(QCamera::Error error, const QString &errorString); void cameraDeviceChanged(); void cameraFormatChanged(); void supportedFeaturesChanged(); void focusModeChanged(); void zoomFactorChanged(float); void minimumZoomFactorChanged(float); void maximumZoomFactorChanged(float); void focusDistanceChanged(float); void customFocusPointChanged(); void flashReady(bool); void flashModeChanged(); void torchModeChanged(); void exposureTimeChanged(float speed); void isoSensitivityChanged(int); void exposureCompensationChanged(float); void exposureModeChanged(); void whiteBalanceModeChanged() const; void colorTemperatureChanged() const; void focusPointChanged(); void manualExposureTimeChanged(float speed); void manualIsoSensitivityChanged(int); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5667882 PyQt6-6.6.1/sip/QtMultimedia/qcameradevice.sip0000644000076500000240000000405514532160402020067 0ustar00philstaff// qcameradevice.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QCameraFormat { %TypeHeaderCode #include %End public: QCameraFormat(); QCameraFormat(const QCameraFormat &other); ~QCameraFormat(); QVideoFrameFormat::PixelFormat pixelFormat() const; QSize resolution() const; float minFrameRate() const; float maxFrameRate() const; bool isNull() const; bool operator==(const QCameraFormat &other) const; bool operator!=(const QCameraFormat &other) const; }; %End %If (Qt_6_2_0 -) class QCameraDevice { %TypeHeaderCode #include %End public: QCameraDevice(); QCameraDevice(const QCameraDevice &other); ~QCameraDevice(); bool operator==(const QCameraDevice &other) const; bool operator!=(const QCameraDevice &other) const; bool isNull() const; QByteArray id() const; QString description() const; bool isDefault() const; enum Position { UnspecifiedPosition, BackFace, FrontFace, }; QCameraDevice::Position position() const; QList photoResolutions() const; QList videoFormats() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5710468 PyQt6-6.6.1/sip/QtMultimedia/qcapturablewindow.sip0000644000076500000240000000272614532160402021034 0ustar00philstaff// qcapturablewindow.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_6_0 -) class QCapturableWindow { %TypeHeaderCode #include %End public: QCapturableWindow(); ~QCapturableWindow(); QCapturableWindow(const QCapturableWindow &other); void swap(QCapturableWindow &other /Constrained/); bool isValid() const; QString description() const; }; %End %If (Qt_6_6_0 -) bool operator==(const QCapturableWindow &lhs, const QCapturableWindow &rhs); %End %If (Qt_6_6_0 -) bool operator!=(const QCapturableWindow &lhs, const QCapturableWindow &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5609093 PyQt6-6.6.1/sip/QtMultimedia/qimagecapture.sip0000644000076500000240000000572614532160402020133 0ustar00philstaff// qimagecapture.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QImageCapture : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, NotReadyError, ResourceError, OutOfSpaceError, NotSupportedFeatureError, FormatError, }; enum Quality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality, }; enum FileFormat { UnspecifiedFormat, JPEG, PNG, WebP, Tiff, }; explicit QImageCapture(QObject *parent /TransferThis/ = 0); virtual ~QImageCapture(); bool isAvailable() const; QMediaCaptureSession *captureSession() const; QImageCapture::Error error() const; QString errorString() const; bool isReadyForCapture() const; QImageCapture::FileFormat fileFormat() const; void setFileFormat(QImageCapture::FileFormat format); static QList supportedFormats(); static QString fileFormatName(QImageCapture::FileFormat c); static QString fileFormatDescription(QImageCapture::FileFormat c); QSize resolution() const; void setResolution(const QSize &); void setResolution(int width, int height); QImageCapture::Quality quality() const; void setQuality(QImageCapture::Quality quality); QMediaMetaData metaData() const; void setMetaData(const QMediaMetaData &metaData); void addMetaData(const QMediaMetaData &metaData); public slots: int captureToFile(const QString &location = QString()); int capture(); signals: void errorChanged(); void errorOccurred(int id, QImageCapture::Error error, const QString &errorString); void readyForCaptureChanged(bool ready); void metaDataChanged(); void fileFormatChanged(); void qualityChanged(); void resolutionChanged(); void imageExposed(int id); void imageCaptured(int id, const QImage &preview); void imageAvailable(int id, const QVideoFrame &frame); void imageSaved(int id, const QString &fileName); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5777555 PyQt6-6.6.1/sip/QtMultimedia/qmediacapturesession.sip0000644000076500000240000000450514532160402021526 0ustar00philstaff// qmediacapturesession.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaCaptureSession : QObject { %TypeHeaderCode #include %End public: explicit QMediaCaptureSession(QObject *parent /TransferThis/ = 0); virtual ~QMediaCaptureSession(); QAudioInput *audioInput() const; void setAudioInput(QAudioInput *device); QCamera *camera() const; void setCamera(QCamera *camera); QImageCapture *imageCapture(); void setImageCapture(QImageCapture *imageCapture); QMediaRecorder *recorder(); void setRecorder(QMediaRecorder *recorder); void setVideoOutput(QObject *output); QObject *videoOutput() const; void setVideoSink(QVideoSink *sink); QVideoSink *videoSink() const; void setAudioOutput(QAudioOutput *output); QAudioOutput *audioOutput() const; signals: void audioInputChanged(); void cameraChanged(); void imageCaptureChanged(); void recorderChanged(); void videoOutputChanged(); void audioOutputChanged(); public: %If (Qt_6_5_0 -) QScreenCapture *screenCapture(); %End %If (Qt_6_5_0 -) void setScreenCapture(QScreenCapture *screenCapture); %End signals: %If (Qt_6_5_0 -) void screenCaptureChanged(); %End public: %If (Qt_6_6_0 -) QWindowCapture *windowCapture(); %End %If (Qt_6_6_0 -) void setWindowCapture(QWindowCapture *windowCapture); %End signals: %If (Qt_6_6_0 -) void windowCaptureChanged(); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5760727 PyQt6-6.6.1/sip/QtMultimedia/qmediadevices.sip0000644000076500000240000000300414532160402020072 0ustar00philstaff// qmediadevices.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaDevices : QObject { %TypeHeaderCode #include %End public: QMediaDevices(QObject *parent /TransferThis/ = 0); virtual ~QMediaDevices(); static QList audioInputs(); static QList audioOutputs(); static QList videoInputs(); static QAudioDevice defaultAudioInput(); static QAudioDevice defaultAudioOutput(); static QCameraDevice defaultVideoInput(); signals: void audioInputsChanged(); void audioOutputsChanged(); void videoInputsChanged(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5756032 PyQt6-6.6.1/sip/QtMultimedia/qmediaformat.sip0000644000076500000240000000642514532160402017752 0ustar00philstaff// qmediaformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaFormat { %TypeHeaderCode #include %End public: enum FileFormat { UnspecifiedFormat, WMV, AVI, Matroska, MPEG4, Ogg, QuickTime, WebM, Mpeg4Audio, AAC, WMA, MP3, FLAC, Wave, }; enum class AudioCodec { Unspecified, MP3, AAC, AC3, EAC3, FLAC, DolbyTrueHD, Opus, Vorbis, Wave, WMA, ALAC, }; enum class VideoCodec { Unspecified, MPEG1, MPEG2, MPEG4, H264, H265, VP8, VP9, AV1, Theora, WMV, MotionJPEG, }; enum ConversionMode { Encode, Decode, }; enum ResolveFlags { NoFlags, RequiresVideo, }; QMediaFormat(QMediaFormat::FileFormat format = QMediaFormat::UnspecifiedFormat); QMediaFormat(const QMediaFormat &other); ~QMediaFormat(); void swap(QMediaFormat &other /Constrained/); QMediaFormat::FileFormat fileFormat() const; void setFileFormat(QMediaFormat::FileFormat f); void setVideoCodec(QMediaFormat::VideoCodec codec); QMediaFormat::VideoCodec videoCodec() const; void setAudioCodec(QMediaFormat::AudioCodec codec); QMediaFormat::AudioCodec audioCodec() const; bool isSupported(QMediaFormat::ConversionMode mode) const; QMimeType mimeType() const; QList supportedFileFormats(QMediaFormat::ConversionMode m); QList supportedVideoCodecs(QMediaFormat::ConversionMode m); QList supportedAudioCodecs(QMediaFormat::ConversionMode m); static QString fileFormatName(QMediaFormat::FileFormat c); static QString audioCodecName(QMediaFormat::AudioCodec c); static QString videoCodecName(QMediaFormat::VideoCodec c); static QString fileFormatDescription(QMediaFormat::FileFormat c); static QString audioCodecDescription(QMediaFormat::AudioCodec c); static QString videoCodecDescription(QMediaFormat::VideoCodec c); void resolveForEncoding(QMediaFormat::ResolveFlags flags); bool operator==(const QMediaFormat &other) const; bool operator!=(const QMediaFormat &other) const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5673544 PyQt6-6.6.1/sip/QtMultimedia/qmediametadata.sip0000644000076500000240000000421214532160402020232 0ustar00philstaff// qmediametadata.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaMetaData { %TypeHeaderCode #include %End public: enum Key { Title, Author, Comment, Description, Genre, Date, Language, Publisher, Copyright, Url, Duration, MediaType, FileFormat, AudioBitRate, AudioCodec, VideoBitRate, VideoCodec, VideoFrameRate, AlbumTitle, AlbumArtist, ContributingArtist, TrackNumber, Composer, LeadPerformer, ThumbnailImage, CoverArtImage, Orientation, Resolution, }; QVariant value(QMediaMetaData::Key k) const; void insert(QMediaMetaData::Key k, const QVariant &value); QList keys() const; QString stringValue(QMediaMetaData::Key k) const; static QString metaDataKeyToString(QMediaMetaData::Key k); protected: %If (Qt_6_4_0 -) static QMetaType keyType(QMediaMetaData::Key key); %End }; %End %If (Qt_6_2_0 -) bool operator==(const QMediaMetaData &a, const QMediaMetaData &b); %End %If (Qt_6_2_0 -) bool operator!=(const QMediaMetaData &a, const QMediaMetaData &b); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5736578 PyQt6-6.6.1/sip/QtMultimedia/qmediaplayer.sip0000644000076500000240000000777714532160402017771 0ustar00philstaff// qmediaplayer.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaPlayer : QObject { %TypeHeaderCode #include %End public: enum PlaybackState { StoppedState, PlayingState, PausedState, }; enum MediaStatus { NoMedia, LoadingMedia, LoadedMedia, StalledMedia, BufferingMedia, BufferedMedia, EndOfMedia, InvalidMedia, }; enum Error { NoError, ResourceError, FormatError, NetworkError, AccessDeniedError, }; explicit QMediaPlayer(QObject *parent /TransferThis/ = 0); virtual ~QMediaPlayer(); QList audioTracks() const; QList videoTracks() const; QList subtitleTracks() const; int activeAudioTrack() const; int activeVideoTrack() const; int activeSubtitleTrack() const; void setActiveAudioTrack(int index); void setActiveVideoTrack(int index); void setActiveSubtitleTrack(int index); void setAudioOutput(QAudioOutput *output); QAudioOutput *audioOutput() const; void setVideoOutput(QObject *); QObject *videoOutput() const; void setVideoSink(QVideoSink *sink); QVideoSink *videoSink() const; QUrl source() const; const QIODevice *sourceDevice() const; QMediaPlayer::PlaybackState playbackState() const; QMediaPlayer::MediaStatus mediaStatus() const; qint64 duration() const; qint64 position() const; bool hasAudio() const; bool hasVideo() const; float bufferProgress() const; QMediaTimeRange bufferedTimeRange() const; bool isSeekable() const; qreal playbackRate() const; QMediaPlayer::Error error() const; QString errorString() const; bool isAvailable() const; QMediaMetaData metaData() const; public slots: void play(); void pause(); void stop(); void setPosition(qint64 position); void setPlaybackRate(qreal rate); void setSource(const QUrl &source); void setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl()); signals: void sourceChanged(const QUrl &media); void playbackStateChanged(QMediaPlayer::PlaybackState newState); void mediaStatusChanged(QMediaPlayer::MediaStatus status); void durationChanged(qint64 duration); void positionChanged(qint64 position); void hasAudioChanged(bool available); void hasVideoChanged(bool videoAvailable); void bufferProgressChanged(float progress); void seekableChanged(bool seekable); void playbackRateChanged(qreal rate); void metaDataChanged(); void videoOutputChanged(); void audioOutputChanged(); void tracksChanged(); void activeTracksChanged(); void errorChanged(); void errorOccurred(QMediaPlayer::Error error, const QString &errorString); public: enum Loops /BaseType=IntEnum/ { Infinite, Once, }; int loops() const; void setLoops(int loops); signals: void loopsChanged(); public: %If (Qt_6_5_0 -) bool isPlaying() const; %End signals: %If (Qt_6_5_0 -) void playingChanged(bool playing); %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.562635 PyQt6-6.6.1/sip/QtMultimedia/qmediarecorder.sip0000644000076500000240000000714014532160402020262 0ustar00philstaff// qmediarecorder.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaRecorder : QObject { %TypeHeaderCode #include %End public: enum Quality { VeryLowQuality, LowQuality, NormalQuality, HighQuality, VeryHighQuality, }; enum EncodingMode { ConstantQualityEncoding, ConstantBitRateEncoding, AverageBitRateEncoding, TwoPassEncoding, }; enum RecorderState { StoppedState, RecordingState, PausedState, }; enum Error { NoError, ResourceError, FormatError, OutOfSpaceError, LocationNotWritable, }; QMediaRecorder(QObject *parent /TransferThis/ = 0); virtual ~QMediaRecorder(); bool isAvailable() const; QUrl outputLocation() const; void setOutputLocation(const QUrl &location); QUrl actualLocation() const; QMediaRecorder::RecorderState recorderState() const; QMediaRecorder::Error error() const; QString errorString() const; qint64 duration() const; QMediaFormat mediaFormat() const; void setMediaFormat(const QMediaFormat &format); QMediaRecorder::EncodingMode encodingMode() const; void setEncodingMode(QMediaRecorder::EncodingMode); QMediaRecorder::Quality quality() const; void setQuality(QMediaRecorder::Quality quality); QSize videoResolution() const; void setVideoResolution(const QSize &); void setVideoResolution(int width, int height); qreal videoFrameRate() const; void setVideoFrameRate(qreal frameRate); int videoBitRate() const; void setVideoBitRate(int bitRate); int audioBitRate() const; void setAudioBitRate(int bitRate); int audioChannelCount() const; void setAudioChannelCount(int channels); int audioSampleRate() const; void setAudioSampleRate(int sampleRate); QMediaMetaData metaData() const; void setMetaData(const QMediaMetaData &metaData); QMediaCaptureSession *captureSession() const; public slots: void record(); void pause(); void stop(); signals: void recorderStateChanged(QMediaRecorder::RecorderState state /ScopesStripped=1/); void durationChanged(qint64 duration); void actualLocationChanged(const QUrl &location); void errorOccurred(QMediaRecorder::Error error /ScopesStripped=1/, const QString &errorString); void errorChanged(); void metaDataChanged(); void mediaFormatChanged(); void encodingModeChanged(); void qualityChanged(); void videoResolutionChanged(); void videoFrameRateChanged(); void videoBitRateChanged(); void audioBitRateChanged(); void audioChannelCountChanged(); void audioSampleRateChanged(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5662577 PyQt6-6.6.1/sip/QtMultimedia/qmediatimerange.sip0000644000076500000240000000574614532160402020442 0ustar00philstaff// qmediatimerange.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMediaTimeRange { %TypeHeaderCode #include %End public: QMediaTimeRange(); QMediaTimeRange(const QMediaTimeRange::Interval &); QMediaTimeRange(qint64 start, qint64 end); QMediaTimeRange(const QMediaTimeRange &range); ~QMediaTimeRange(); qint64 earliestTime() const; qint64 latestTime() const; QList intervals() const; bool isEmpty() const; bool isContinuous() const; bool contains(qint64 time) const; void addInterval(const QMediaTimeRange::Interval &interval); void addInterval(qint64 start, qint64 end); void addTimeRange(const QMediaTimeRange &); void removeInterval(const QMediaTimeRange::Interval &interval); void removeInterval(qint64 start, qint64 end); void removeTimeRange(const QMediaTimeRange &); QMediaTimeRange &operator+=(const QMediaTimeRange::Interval &); QMediaTimeRange &operator+=(const QMediaTimeRange &); QMediaTimeRange &operator-=(const QMediaTimeRange::Interval &); QMediaTimeRange &operator-=(const QMediaTimeRange &); void clear(); struct Interval { %TypeHeaderCode #include %End Interval(qint64 start, qint64 end); qint64 start() const; qint64 end() const; bool contains(qint64 time) const; bool isNormal() const; QMediaTimeRange::Interval normalized() const; QMediaTimeRange::Interval translated(qint64 offset) const; }; }; %End %If (Qt_6_2_0 -) bool operator==(const QMediaTimeRange &, const QMediaTimeRange &); %End %If (Qt_6_2_0 -) bool operator!=(const QMediaTimeRange &, const QMediaTimeRange &); %End %If (Qt_6_2_0 -) QMediaTimeRange operator+(const QMediaTimeRange &, const QMediaTimeRange &); %End %If (Qt_6_2_0 -) QMediaTimeRange operator-(const QMediaTimeRange &, const QMediaTimeRange &); %End %If (Qt_6_2_0 -) bool operator==(QMediaTimeRange::Interval lhs, QMediaTimeRange::Interval rhs); %End %If (Qt_6_2_0 -) bool operator!=(QMediaTimeRange::Interval lhs, QMediaTimeRange::Interval rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5696843 PyQt6-6.6.1/sip/QtMultimedia/qpymultimedia_qlist.sip0000644000076500000240000002531514532160402021400 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtMultimedia module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) %MappedType QList /TypeHintIn="Iterable[QAudioFormat.SampleFormat]", TypeHintOut="List[QAudioFormat.SampleFormat]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QAudioFormat_SampleFormat); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QAudioFormat_SampleFormat); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QAudioFormat.SampleFormat' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QImageCapture.FileFormat]", TypeHintOut="List[QImageCapture.FileFormat]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QImageCapture_FileFormat); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QImageCapture_FileFormat); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QImageCapture.FileFormat' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QMediaFormat.FileFormat]", TypeHintOut="List[QMediaFormat.FileFormat]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QMediaFormat_FileFormat); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QMediaFormat_FileFormat); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QMediaFormat.FileFormat' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QMediaFormat.AudioCodec]", TypeHintOut="List[QMediaFormat.AudioCodec]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(static_cast(sipCpp->at(i)), sipType_QMediaFormat_AudioCodec); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QMediaFormat_AudioCodec); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QMediaFormat.AudioCodec' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %MappedType QList /TypeHintIn="Iterable[QMediaFormat.VideoCodec]", TypeHintOut="List[QMediaFormat.VideoCodec]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(static_cast(sipCpp->at(i)), sipType_QMediaFormat_VideoCodec); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QMediaFormat_VideoCodec); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QMediaFormat.VideoCodec' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.572833 PyQt6-6.6.1/sip/QtMultimedia/qscreencapture.sip0000644000076500000240000000340314532160402020316 0ustar00philstaff// qscreencapture.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QScreenCapture : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound, }; explicit QScreenCapture(QObject *parent /TransferThis/ = 0); virtual ~QScreenCapture(); QMediaCaptureSession *captureSession() const; void setScreen(QScreen *screen); QScreen *screen() const; bool isActive() const; QScreenCapture::Error error() const; QString errorString() const; public slots: void setActive(bool active); void start(); void stop(); signals: void activeChanged(bool); void errorChanged(); void screenChanged(QScreen *); void errorOccurred(QScreenCapture::Error error, const QString &errorString); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5716014 PyQt6-6.6.1/sip/QtMultimedia/qsoundeffect.sip0000644000076500000240000000422614532160402017764 0ustar00philstaff// qsoundeffect.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QSoundEffect : QObject { %TypeHeaderCode #include %End public: enum Loop { Infinite, }; enum Status { Null, Loading, Ready, Error, }; QSoundEffect(const QAudioDevice &audioDevice, QObject *parent /TransferThis/ = 0); explicit QSoundEffect(QObject *parent /TransferThis/ = 0); virtual ~QSoundEffect(); static QStringList supportedMimeTypes(); QAudioDevice audioDevice(); void setAudioDevice(const QAudioDevice &device); QUrl source() const; void setSource(const QUrl &url); int loopCount() const; int loopsRemaining() const; void setLoopCount(int loopCount); float volume() const; void setVolume(float volume); bool isMuted() const; void setMuted(bool muted); bool isLoaded() const; bool isPlaying() const; QSoundEffect::Status status() const; public slots: void play(); void stop(); signals: void audioDeviceChanged(); void sourceChanged(); void loopCountChanged(); void loopsRemainingChanged(); void volumeChanged(); void mutedChanged(); void loadedChanged(); void playingChanged(); void statusChanged(); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.563323 PyQt6-6.6.1/sip/QtMultimedia/qvideoframe.sip0000644000076500000240000000615514532160402017603 0ustar00philstaff// qvideoframe.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QVideoFrame { %TypeHeaderCode #include %End public: QVideoFrame(); QVideoFrame(const QVideoFrameFormat &format); QVideoFrame(const QVideoFrame &other); ~QVideoFrame(); enum HandleType { NoHandle, RhiTextureHandle, }; enum MapMode { NotMapped, ReadOnly, WriteOnly, ReadWrite, }; bool isValid() const; QVideoFrameFormat::PixelFormat pixelFormat() const; QVideoFrame::HandleType handleType() const; QSize size() const; int width() const; int height() const; bool isMapped() const; bool isReadable() const; bool isWritable() const; QVideoFrame::MapMode mapMode() const; bool map(QVideoFrame::MapMode mode); void unmap(); int bytesPerLine(int plane) const; void *bits(int plane) [uchar * (int plane)]; int mappedBytes(int plane) const; qint64 startTime() const; void setStartTime(qint64 time); qint64 endTime() const; void setEndTime(qint64 time); int planeCount() const; bool operator==(const QVideoFrame &other) const; bool operator!=(const QVideoFrame &other) const; QVideoFrameFormat surfaceFormat() const; QImage toImage() const; struct PaintOptions { %TypeHeaderCode #include %End QColor backgroundColor; Qt::AspectRatioMode aspectRatioMode; enum PaintFlag /BaseType=Flag/ { DontDrawSubtitles, }; typedef QFlags PaintFlags; QVideoFrame::PaintOptions::PaintFlags paintFlags; }; QString subtitleText() const; void setSubtitleText(const QString &text); void paint(QPainter *painter, const QRectF &rect, const QVideoFrame::PaintOptions &options); %If (Qt_6_3_0 -) enum RotationAngle { Rotation0, Rotation90, Rotation180, Rotation270, }; %End %If (Qt_6_3_0 -) void setRotationAngle(QVideoFrame::RotationAngle); %End %If (Qt_6_3_0 -) QVideoFrame::RotationAngle rotationAngle() const; %End %If (Qt_6_3_0 -) void setMirrored(bool); %End %If (Qt_6_3_0 -) bool mirrored() const; %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.576978 PyQt6-6.6.1/sip/QtMultimedia/qvideoframeformat.sip0000644000076500000240000001114614532160402021010 0ustar00philstaff// qvideoframeformat.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QVideoFrameFormat { %TypeHeaderCode #include %End public: enum PixelFormat { Format_Invalid, Format_YUV420P, Format_YUV422P, %If (Qt_6_4_0 -) Format_YUV420P10, %End Format_YV12, Format_UYVY, Format_YUYV, Format_NV12, Format_NV21, Format_IMC1, Format_IMC2, Format_IMC3, Format_IMC4, Format_Y8, Format_Y16, Format_P010, Format_P016, Format_Jpeg, Format_SamplerExternalOES, Format_ARGB8888, Format_ARGB8888_Premultiplied, Format_XRGB8888, Format_BGRA8888, Format_BGRA8888_Premultiplied, Format_BGRX8888, Format_ABGR8888, Format_XBGR8888, Format_RGBA8888, Format_RGBX8888, Format_AYUV, Format_AYUV_Premultiplied, Format_SamplerRect, }; enum Direction { TopToBottom, BottomToTop, }; enum YCbCrColorSpace { YCbCr_Undefined, YCbCr_BT601, YCbCr_BT709, YCbCr_xvYCC601, YCbCr_xvYCC709, YCbCr_JPEG, %If (Qt_6_3_0 -) YCbCr_BT2020, %End }; QVideoFrameFormat(); QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat pixelFormat); QVideoFrameFormat(const QVideoFrameFormat &format); ~QVideoFrameFormat(); bool operator==(const QVideoFrameFormat &format) const; bool operator!=(const QVideoFrameFormat &format) const; bool isValid() const; QVideoFrameFormat::PixelFormat pixelFormat() const; QSize frameSize() const; void setFrameSize(const QSize &size); void setFrameSize(int width, int height); int frameWidth() const; int frameHeight() const; int planeCount() const; QRect viewport() const; void setViewport(const QRect &viewport); QVideoFrameFormat::Direction scanLineDirection() const; void setScanLineDirection(QVideoFrameFormat::Direction direction); qreal frameRate() const; void setFrameRate(qreal rate); QVideoFrameFormat::YCbCrColorSpace yCbCrColorSpace() const; void setYCbCrColorSpace(QVideoFrameFormat::YCbCrColorSpace colorSpace); bool isMirrored() const; void setMirrored(bool mirrored); static QVideoFrameFormat::PixelFormat pixelFormatFromImageFormat(QImage::Format format); static QImage::Format imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format); %If (Qt_6_2_0 -) static QString pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat); %End %If (Qt_6_4_0 -) enum ColorSpace { ColorSpace_Undefined, ColorSpace_BT601, ColorSpace_BT709, ColorSpace_AdobeRgb, ColorSpace_BT2020, }; %End %If (Qt_6_4_0 -) enum ColorTransfer { ColorTransfer_Unknown, ColorTransfer_BT709, ColorTransfer_BT601, ColorTransfer_Linear, ColorTransfer_Gamma22, ColorTransfer_Gamma28, ColorTransfer_ST2084, ColorTransfer_STD_B67, }; %End %If (Qt_6_4_0 -) enum ColorRange { ColorRange_Unknown, ColorRange_Video, ColorRange_Full, }; %End %If (Qt_6_4_0 -) QVideoFrameFormat::ColorSpace colorSpace() const; %End %If (Qt_6_4_0 -) void setColorSpace(QVideoFrameFormat::ColorSpace colorSpace); %End %If (Qt_6_4_0 -) QVideoFrameFormat::ColorTransfer colorTransfer() const; %End %If (Qt_6_4_0 -) void setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer); %End %If (Qt_6_4_0 -) QVideoFrameFormat::ColorRange colorRange() const; %End %If (Qt_6_4_0 -) void setColorRange(QVideoFrameFormat::ColorRange range); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5748794 PyQt6-6.6.1/sip/QtMultimedia/qvideosink.sip0000644000076500000240000000274414532160402017455 0ustar00philstaff// qvideosink.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QVideoSink : QObject { %TypeHeaderCode #include %End public: QVideoSink(QObject *parent /TransferThis/ = 0); virtual ~QVideoSink(); QSize videoSize() const; QString subtitleText() const; void setSubtitleText(const QString &subtitle); void setVideoFrame(const QVideoFrame &frame); QVideoFrame videoFrame() const; signals: void videoFrameChanged(const QVideoFrame &frame) const; void subtitleTextChanged(const QString &subtitleText) const; void videoSizeChanged(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5613844 PyQt6-6.6.1/sip/QtMultimedia/qwindowcapture.sip0000644000076500000240000000345314532160402020353 0ustar00philstaff// qwindowcapture.sip generated by MetaSIP // // This file is part of the QtMultimedia Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_6_0 -) class QWindowCapture : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, InternalError, CapturingNotSupported, CaptureFailed, NotFound, }; explicit QWindowCapture(QObject *parent /TransferThis/ = 0); virtual ~QWindowCapture(); static QList capturableWindows(); void setWindow(QCapturableWindow window); QCapturableWindow window() const; bool isActive() const; QWindowCapture::Error error() const; QString errorString() const; public slots: void setActive(bool active); void start(); void stop(); signals: void activeChanged(bool); void windowChanged(QCapturableWindow window); void errorChanged(); void errorOccurred(QWindowCapture::Error error, const QString &errorString); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.7214298 PyQt6-6.6.1/sip/QtMultimediaWidgets/0000755000076500000240000000000014532160403016105 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.71392 PyQt6-6.6.1/sip/QtMultimediaWidgets/QtMultimediaWidgetsmod.sip0000644000076500000240000000404314532160402023250 0ustar00philstaff// QtMultimediaWidgetsmod.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtMultimediaWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtMultimedia/QtMultimediamod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qgraphicsvideoitem.sip %Include qvideowidget.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7151227 PyQt6-6.6.1/sip/QtMultimediaWidgets/qgraphicsvideoitem.sip0000644000076500000240000000372714532160402022521 0ustar00philstaff// qgraphicsvideoitem.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGraphicsVideoItem : QGraphicsObject { %TypeHeaderCode #include %End public: explicit QGraphicsVideoItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsVideoItem(); QVideoSink *videoSink() const; Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); QPointF offset() const; void setOffset(const QPointF &offset); QSizeF size() const; void setSize(const QSizeF &size); QSizeF nativeSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual int type() const; signals: void nativeSizeChanged(const QSizeF &size); protected: virtual void timerEvent(QTimerEvent *event); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); }; %End %ModuleCode // This is needed by the %ConvertToSubClassCode. #include %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7144794 PyQt6-6.6.1/sip/QtMultimediaWidgets/qvideowidget.sip0000644000076500000240000000453714532160402021325 0ustar00philstaff// qvideowidget.sip generated by MetaSIP // // This file is part of the QtMultimediaWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QVideoWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGraphicsVideoItem, &sipType_QGraphicsVideoItem, -1, 1}, {sipName_QVideoWidget, &sipType_QVideoWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QVideoWidget(QWidget *parent /TransferThis/ = 0); virtual ~QVideoWidget(); QVideoSink *videoSink() const; Qt::AspectRatioMode aspectRatioMode() const; bool isFullScreen() const; virtual QSize sizeHint() const; public slots: void setFullScreen(bool fullScreen); void setAspectRatioMode(Qt::AspectRatioMode mode); signals: void fullScreenChanged(bool fullScreen); void aspectRatioModeChanged(Qt::AspectRatioMode mode); protected: virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void moveEvent(QMoveEvent *event); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.508126 PyQt6-6.6.1/sip/QtNetwork/0000755000076500000240000000000014532160403014115 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2663815 PyQt6-6.6.1/sip/QtNetwork/QtNetworkmod.sip0000644000076500000240000000606314532160401017273 0ustar00philstaff// QtNetworkmod.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtNetwork, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qabstractnetworkcache.sip %Include qabstractsocket.sip %Include qauthenticator.sip %Include qdnslookup.sip %Include qhostaddress.sip %Include qhostinfo.sip %Include qhstspolicy.sip %Include qhttp1configuration.sip %Include qhttp2configuration.sip %Include qhttpmultipart.sip %Include qlocalserver.sip %Include qlocalsocket.sip %Include qnetworkaccessmanager.sip %Include qnetworkcookie.sip %Include qnetworkcookiejar.sip %Include qnetworkdatagram.sip %Include qnetworkdiskcache.sip %Include qnetworkinformation.sip %Include qnetworkinterface.sip %Include qnetworkproxy.sip %Include qnetworkreply.sip %Include qnetworkrequest.sip %Include qocspresponse.sip %Include qpassworddigestor.sip %Include qssl.sip %Include qsslcertificate.sip %Include qsslcertificateextension.sip %Include qsslcipher.sip %Include qsslconfiguration.sip %Include qssldiffiehellmanparameters.sip %Include qsslellipticcurve.sip %Include qsslerror.sip %Include qsslkey.sip %Include qsslpresharedkeyauthenticator.sip %Include qsslserver.sip %Include qsslsocket.sip %Include qtcpserver.sip %Include qtcpsocket.sip %Include qudpsocket.sip %Include qpynetwork_qmap.sip %Include qpynetwork_qlist.sip %Include qpynetwork_qhash.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2789433 PyQt6-6.6.1/sip/QtNetwork/qabstractnetworkcache.sip0000644000076500000240000000566314532160401021224 0ustar00philstaff// qabstractnetworkcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCacheMetaData { %TypeHeaderCode #include %End typedef QList> RawHeaderList; typedef QHash AttributesMap; public: QNetworkCacheMetaData(); QNetworkCacheMetaData(const QNetworkCacheMetaData &other); ~QNetworkCacheMetaData(); bool operator==(const QNetworkCacheMetaData &other) const; bool operator!=(const QNetworkCacheMetaData &other) const; bool isValid() const; QUrl url() const; void setUrl(const QUrl &url); QNetworkCacheMetaData::RawHeaderList rawHeaders() const; void setRawHeaders(const QNetworkCacheMetaData::RawHeaderList &headers); QDateTime lastModified() const; void setLastModified(const QDateTime &dateTime); QDateTime expirationDate() const; void setExpirationDate(const QDateTime &dateTime); bool saveToDisk() const; void setSaveToDisk(bool allow); QNetworkCacheMetaData::AttributesMap attributes() const; void setAttributes(const QNetworkCacheMetaData::AttributesMap &attributes); void swap(QNetworkCacheMetaData &other /Constrained/); }; QDataStream &operator<<(QDataStream &, const QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QNetworkCacheMetaData & /Constrained/) /ReleaseGIL/; class QAbstractNetworkCache : QObject { %TypeHeaderCode #include %End public: virtual ~QAbstractNetworkCache(); virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0; virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0; virtual QIODevice *data(const QUrl &url) = 0 /Factory/; virtual bool remove(const QUrl &url) = 0; virtual qint64 cacheSize() const = 0; virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData) = 0; virtual void insert(QIODevice *device) = 0; public slots: virtual void clear() = 0; protected: explicit QAbstractNetworkCache(QObject *parent /TransferThis/ = 0); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2809584 PyQt6-6.6.1/sip/QtNetwork/qabstractsocket.sip0000644000076500000240000002533214532160401020032 0ustar00philstaff// qabstractsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSocket : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractNetworkCache, &sipType_QAbstractNetworkCache, 11, 1}, {sipName_QAbstractSocket, &sipType_QAbstractSocket, 12, 2}, {sipName_QDnsLookup, &sipType_QDnsLookup, -1, 3}, {sipName_QHttpMultiPart, &sipType_QHttpMultiPart, -1, 4}, {sipName_QLocalServer, &sipType_QLocalServer, -1, 5}, {sipName_QLocalSocket, &sipType_QLocalSocket, -1, 6}, {sipName_QNetworkAccessManager, &sipType_QNetworkAccessManager, -1, 7}, {sipName_QNetworkCookieJar, &sipType_QNetworkCookieJar, -1, 8}, #if QT_VERSION >= 0x060100 {sipName_QNetworkInformation, &sipType_QNetworkInformation, -1, 9}, #else {0, 0, -1, 9}, #endif {sipName_QNetworkReply, &sipType_QNetworkReply, -1, 10}, {sipName_QTcpServer, &sipType_QTcpServer, 15, -1}, {sipName_QNetworkDiskCache, &sipType_QNetworkDiskCache, -1, -1}, {sipName_QTcpSocket, &sipType_QTcpSocket, 14, 13}, {sipName_QUdpSocket, &sipType_QUdpSocket, -1, -1}, #if defined(SIP_FEATURE_PyQt_SSL) {sipName_QSslSocket, &sipType_QSslSocket, -1, -1}, #else {0, 0, -1, -1}, #endif #if QT_VERSION >= 0x060400 && defined(SIP_FEATURE_PyQt_SSL) {sipName_QSslServer, &sipType_QSslServer, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum SocketType { TcpSocket, UdpSocket, SctpSocket, UnknownSocketType, }; enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol, }; enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, NetworkError, AddressInUseError, SocketAddressNotAvailableError, UnsupportedSocketOperationError, UnfinishedSocketOperationError, ProxyAuthenticationRequiredError, SslHandshakeFailedError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyConnectionTimeoutError, ProxyNotFoundError, ProxyProtocolError, OperationError, SslInternalError, SslInvalidUserDataError, TemporaryError, UnknownSocketError, }; enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, ListeningState, ClosingState, }; QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent /TransferThis/); virtual ~QAbstractSocket(); virtual void connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; void connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; bool isValid() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; quint16 localPort() const; QHostAddress localAddress() const; quint16 peerPort() const; QHostAddress peerAddress() const; QString peerName() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); void abort(); virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); virtual qintptr socketDescriptor() const; QAbstractSocket::SocketType socketType() const; QAbstractSocket::SocketState state() const; QAbstractSocket::SocketError error() const; virtual void close(); virtual bool isSequential() const; bool flush() /ReleaseGIL/; virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; signals: void hostFound(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState); void errorOccurred(QAbstractSocket::SocketError); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QAbstractSocket::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QAbstractSocket::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End virtual qint64 skipData(qint64 maxSize) /ReleaseGIL/; void setSocketState(QAbstractSocket::SocketState state); void setSocketError(QAbstractSocket::SocketError socketError); void setLocalPort(quint16 port); void setLocalAddress(const QHostAddress &address); void setPeerPort(quint16 port); void setPeerAddress(const QHostAddress &address); void setPeerName(const QString &name); public: enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, SendBufferSizeSocketOption, ReceiveBufferSizeSocketOption, PathMtuSocketOption, }; virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); enum BindFlag /BaseType=Flag/ { DefaultForPlatform, ShareAddress, DontShareAddress, ReuseAddressHint, }; typedef QFlags BindMode; enum PauseMode /BaseType=Flag/ { PauseNever, PauseOnSslErrors, }; typedef QFlags PauseModes; virtual void resume() /ReleaseGIL/; QAbstractSocket::PauseModes pauseMode() const; void setPauseMode(QAbstractSocket::PauseModes pauseMode); virtual bool bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = QAbstractSocket::DefaultForPlatform); bool bind(quint16 port = 0, QAbstractSocket::BindMode mode = QAbstractSocket::DefaultForPlatform); QString protocolTag() const; void setProtocolTag(const QString &tag); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2777605 PyQt6-6.6.1/sip/QtNetwork/qauthenticator.sip0000644000076500000240000000306014532160401017662 0ustar00philstaff// qauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAuthenticator { %TypeHeaderCode #include %End public: QAuthenticator(); QAuthenticator(const QAuthenticator &other); ~QAuthenticator(); bool operator==(const QAuthenticator &other) const; bool operator!=(const QAuthenticator &other) const; QString user() const; void setUser(const QString &user); QString password() const; void setPassword(const QString &password); QString realm() const; bool isNull() const; QVariant option(const QString &opt) const; QVariantHash options() const; void setOption(const QString &opt, const QVariant &value); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2674203 PyQt6-6.6.1/sip/QtNetwork/qdnslookup.sip0000644000076500000240000001176014532160401017034 0ustar00philstaff// qdnslookup.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDnsDomainNameRecord { %TypeHeaderCode #include %End public: QDnsDomainNameRecord(); QDnsDomainNameRecord(const QDnsDomainNameRecord &other); ~QDnsDomainNameRecord(); void swap(QDnsDomainNameRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QString value() const; }; class QDnsHostAddressRecord { %TypeHeaderCode #include %End public: QDnsHostAddressRecord(); QDnsHostAddressRecord(const QDnsHostAddressRecord &other); ~QDnsHostAddressRecord(); void swap(QDnsHostAddressRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QHostAddress value() const; }; class QDnsMailExchangeRecord { %TypeHeaderCode #include %End public: QDnsMailExchangeRecord(); QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other); ~QDnsMailExchangeRecord(); void swap(QDnsMailExchangeRecord &other /Constrained/); QString exchange() const; QString name() const; quint16 preference() const; quint32 timeToLive() const; }; class QDnsServiceRecord { %TypeHeaderCode #include %End public: QDnsServiceRecord(); QDnsServiceRecord(const QDnsServiceRecord &other); ~QDnsServiceRecord(); void swap(QDnsServiceRecord &other /Constrained/); QString name() const; quint16 port() const; quint16 priority() const; QString target() const; quint32 timeToLive() const; quint16 weight() const; }; class QDnsTextRecord { %TypeHeaderCode #include %End public: QDnsTextRecord(); QDnsTextRecord(const QDnsTextRecord &other); ~QDnsTextRecord(); void swap(QDnsTextRecord &other /Constrained/); QString name() const; quint32 timeToLive() const; QList values() const; }; class QDnsLookup : QObject { %TypeHeaderCode #include %End public: enum Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, ServerFailureError, ServerRefusedError, NotFoundError, %If (Qt_6_6_0 -) TimeoutError, %End }; enum Type { A, AAAA, ANY, CNAME, MX, NS, PTR, SRV, TXT, }; explicit QDnsLookup(QObject *parent /TransferThis/ = 0); QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent /TransferThis/ = 0); QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent /TransferThis/ = 0); %If (Qt_6_6_0 -) QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent /TransferThis/ = 0); %End virtual ~QDnsLookup(); QDnsLookup::Error error() const; QString errorString() const; bool isFinished() const; QString name() const; void setName(const QString &name); QDnsLookup::Type type() const; void setType(QDnsLookup::Type); QList canonicalNameRecords() const; QList hostAddressRecords() const; QList mailExchangeRecords() const; QList nameServerRecords() const; QList pointerRecords() const; QList serviceRecords() const; QList textRecords() const; public slots: void abort() /ReleaseGIL/; void lookup() /ReleaseGIL/; signals: void finished(); void nameChanged(const QString &name); void typeChanged(QDnsLookup::Type type /ScopesStripped=1/); public: QHostAddress nameserver() const; void setNameserver(const QHostAddress &nameserver); %If (Qt_6_6_0 -) void setNameserver(const QHostAddress &nameserver, quint16 port); %End signals: void nameserverChanged(const QHostAddress &nameserver); public: %If (Qt_6_6_0 -) quint16 nameserverPort() const; %End %If (Qt_6_6_0 -) void setNameserverPort(quint16 port); %End signals: %If (Qt_6_6_0 -) void nameserverPortChanged(quint16 port); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2697005 PyQt6-6.6.1/sip/QtNetwork/qhostaddress.sip0000644000076500000240000001310114532160401017330 0ustar00philstaff// qhostaddress.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostAddress /TypeHintIn="Union[QHostAddress, QHostAddress.SpecialAddress]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode // SIP doesn't support automatic type convertors so we explicitly allow a // QHostAddress::SpecialAddress to be used whenever a QHostAddress is expected. bool is_special_address = true; int special_address = sipConvertToEnum(sipPy, sipType_QHostAddress_SpecialAddress); if (PyErr_Occurred()) { PyErr_Clear(); is_special_address = false; } if (sipIsErr == NULL) return (is_special_address || sipCanConvertToType(sipPy, sipType_QHostAddress, SIP_NO_CONVERTORS)); if (is_special_address) { *sipCppPtr = new QHostAddress(static_cast(special_address)); return sipGetState(sipTransferObj); } *sipCppPtr = reinterpret_cast(sipConvertToType(sipPy, sipType_QHostAddress, sipTransferObj, SIP_NO_CONVERTORS, 0, sipIsErr)); return 0; %End public: enum SpecialAddress { Null, Broadcast, LocalHost, LocalHostIPv6, AnyIPv4, AnyIPv6, Any, }; QHostAddress(); QHostAddress(QHostAddress::SpecialAddress address /Constrained/); explicit QHostAddress(quint32 ip4Addr); explicit QHostAddress(const QString &address); explicit QHostAddress(const Q_IPV6ADDR &ip6Addr); QHostAddress(const QHostAddress ©); ~QHostAddress(); void setAddress(QHostAddress::SpecialAddress address /Constrained/); void setAddress(quint32 ip4Addr); bool setAddress(const QString &address); void setAddress(const Q_IPV6ADDR &ip6Addr); QAbstractSocket::NetworkLayerProtocol protocol() const; quint32 toIPv4Address(bool *ok = 0) const; Q_IPV6ADDR toIPv6Address() const; QString toString() const; QString scopeId() const; void setScopeId(const QString &id); bool operator==(const QHostAddress &address) const; bool operator==(QHostAddress::SpecialAddress address) const; bool operator!=(const QHostAddress &address) const; bool operator!=(QHostAddress::SpecialAddress address) const; bool isNull() const; void clear(); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool isInSubnet(const QHostAddress &subnet, int netmask) const; bool isInSubnet(const std::pair &subnet) const; bool isLoopback() const; static std::pair parseSubnet(const QString &subnet); void swap(QHostAddress &other /Constrained/); bool isMulticast() const; enum ConversionModeFlag /BaseType=Flag/ { ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertUnspecifiedAddress, ConvertLocalHost, TolerantConversion, StrictConversion, }; typedef QFlags ConversionMode; bool isEqual(const QHostAddress &address, QHostAddress::ConversionMode mode = QHostAddress::TolerantConversion) const; bool isGlobal() const; bool isLinkLocal() const; bool isSiteLocal() const; bool isUniqueLocalUnicast() const; bool isBroadcast() const; %If (Qt_6_6_0 -) bool isPrivateUse() const; %End }; bool operator==(QHostAddress::SpecialAddress address1, const QHostAddress &address2); bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs); QDataStream &operator<<(QDataStream &, const QHostAddress &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QHostAddress &) /ReleaseGIL/; // Q_IPV6ADDR is implemented as a Python 16-tuple of ints. %MappedType Q_IPV6ADDR /TypeHint="Tuple[int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode // Create the tuple. PyObject *t; if ((t = PyTuple_New(16)) == NULL) return NULL; // Set the tuple elements. for (int i = 0; i < 16; ++i) { PyObject *pobj; if ((pobj = PyLong_FromLong((*sipCpp)[i])) == NULL) { Py_DECREF(t); return NULL; } PyTuple_SetItem(t, i, pobj); } return t; %End %ConvertToTypeCode // Check the type if that is all that is required. if (sipIsErr == NULL) return (PySequence_Check(sipPy) && PySequence_Size(sipPy) == 16); Q_IPV6ADDR *qa = new Q_IPV6ADDR; for (Py_ssize_t i = 0; i < 16; ++i) { PyObject *itm = PySequence_GetItem(sipPy, i); if (!itm) { delete qa; *sipIsErr = 1; return 0; } (*qa)[i] = PyLong_AsLong(itm); Py_DECREF(itm); } *sipCppPtr = qa; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2710748 PyQt6-6.6.1/sip/QtNetwork/qhostinfo.sip0000644000076500000240000000565314532160401016653 0ustar00philstaff// qhostinfo.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHostInfo { %TypeHeaderCode #include %End public: enum HostInfoError { NoError, HostNotFound, UnknownError, }; explicit QHostInfo(int id = -1); QHostInfo(const QHostInfo &d); ~QHostInfo(); QString hostName() const; void setHostName(const QString &name); QList addresses() const; void setAddresses(const QList &addresses); QHostInfo::HostInfoError error() const; void setError(QHostInfo::HostInfoError error); QString errorString() const; void setErrorString(const QString &errorString); void setLookupId(int id); int lookupId() const; static int lookupHost(const QString &name, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtnetwork_get_connection_parts(a1, 0, "(QHostInfo)", true, &receiver, slot_signature)) == sipErrorNone) { QHostInfo::lookupHost(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End static void abortHostLookup(int lookupId); static QHostInfo fromName(const QString &name); static QString localHostName(); static QString localDomainName(); void swap(QHostInfo &other /Constrained/); }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qtnetwork_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt6_qtnetwork_get_connection_parts_t pyqt6_qtnetwork_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtnetwork_get_connection_parts_t pyqt6_qtnetwork_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtnetwork_get_connection_parts = (pyqt6_qtnetwork_get_connection_parts_t)sipImportSymbol("pyqt6_get_connection_parts"); Q_ASSERT(pyqt6_qtnetwork_get_connection_parts); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.287513 PyQt6-6.6.1/sip/QtNetwork/qhstspolicy.sip0000644000076500000240000000356214532160401017220 0ustar00philstaff// qhstspolicy.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHstsPolicy { %TypeHeaderCode #include %End public: enum PolicyFlag /BaseType=Flag/ { IncludeSubDomains, }; typedef QFlags PolicyFlags; QHstsPolicy(); QHstsPolicy(const QDateTime &expiry, QHstsPolicy::PolicyFlags flags, const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); QHstsPolicy(const QHstsPolicy &rhs); ~QHstsPolicy(); void swap(QHstsPolicy &other); void setHost(const QString &host, QUrl::ParsingMode mode = QUrl::DecodedMode); QString host(QUrl::ComponentFormattingOptions options = QUrl::FullyDecoded) const; void setExpiry(const QDateTime &expiry); QDateTime expiry() const; void setIncludesSubDomains(bool include); bool includesSubDomains() const; bool isExpired() const; }; bool operator==(const QHstsPolicy &lhs, const QHstsPolicy &rhs); bool operator!=(const QHstsPolicy &lhs, const QHstsPolicy &rhs); ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.27151 PyQt6-6.6.1/sip/QtNetwork/qhttp1configuration.sip0000644000076500000240000000314014532160401020637 0ustar00philstaff// qhttp1configuration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QHttp1Configuration { %TypeHeaderCode #include %End public: QHttp1Configuration(); QHttp1Configuration(const QHttp1Configuration &other); ~QHttp1Configuration(); void setNumberOfConnectionsPerHost(qsizetype amount); qsizetype numberOfConnectionsPerHost() const; void swap(QHttp1Configuration &other); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_5_0 -) bool operator==(const QHttp1Configuration &lhs, const QHttp1Configuration &rhs); %End %If (Qt_6_5_0 -) bool operator!=(const QHttp1Configuration &lhs, const QHttp1Configuration &rhs); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.284033 PyQt6-6.6.1/sip/QtNetwork/qhttp2configuration.sip0000644000076500000240000000350714532160401020647 0ustar00philstaff// qhttp2configuration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHttp2Configuration { %TypeHeaderCode #include %End public: QHttp2Configuration(); QHttp2Configuration(const QHttp2Configuration &other); ~QHttp2Configuration(); void setServerPushEnabled(bool enable); bool serverPushEnabled() const; void setHuffmanCompressionEnabled(bool enable); bool huffmanCompressionEnabled() const; bool setSessionReceiveWindowSize(unsigned int size); unsigned int sessionReceiveWindowSize() const; bool setStreamReceiveWindowSize(unsigned int size); unsigned int streamReceiveWindowSize() const; bool setMaxFrameSize(unsigned int size); unsigned int maxFrameSize() const; void swap(QHttp2Configuration &other /Constrained/); }; bool operator==(const QHttp2Configuration &lhs, const QHttp2Configuration &rhs); bool operator!=(const QHttp2Configuration &lhs, const QHttp2Configuration &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2915177 PyQt6-6.6.1/sip/QtNetwork/qhttpmultipart.sip0000644000076500000240000000407714532160401017742 0ustar00philstaff// qhttpmultipart.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHttpPart { %TypeHeaderCode #include %End public: QHttpPart(); QHttpPart(const QHttpPart &other); ~QHttpPart(); bool operator==(const QHttpPart &other) const; bool operator!=(const QHttpPart &other) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue); void setBody(const QByteArray &body); void setBodyDevice(QIODevice *device); void swap(QHttpPart &other /Constrained/); }; class QHttpMultiPart : QObject { %TypeHeaderCode #include %End public: enum ContentType { MixedType, RelatedType, FormDataType, AlternativeType, }; explicit QHttpMultiPart(QObject *parent /TransferThis/ = 0); QHttpMultiPart(QHttpMultiPart::ContentType contentType, QObject *parent /TransferThis/ = 0); virtual ~QHttpMultiPart(); void append(const QHttpPart &httpPart); void setContentType(QHttpMultiPart::ContentType contentType); QByteArray boundary() const; void setBoundary(const QByteArray &boundary); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2704353 PyQt6-6.6.1/sip/QtNetwork/qlocalserver.sip0000644000076500000240000000456114532160401017340 0ustar00philstaff// qlocalserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalServer : QObject { %TypeHeaderCode #include %End public: explicit QLocalServer(QObject *parent /TransferThis/ = 0); virtual ~QLocalServer(); void close(); QString errorString() const; virtual bool hasPendingConnections() const; bool isListening() const; bool listen(const QString &name); bool listen(qintptr socketDescriptor); int maxPendingConnections() const; virtual QLocalSocket *nextPendingConnection(); QString serverName() const; QString fullServerName() const; QAbstractSocket::SocketError serverError() const; void setMaxPendingConnections(int numConnections); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; static bool removeServer(const QString &name); signals: void newConnection(); protected: virtual void incomingConnection(quintptr socketDescriptor); public: enum SocketOption /BaseType=Flag/ { UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, %If (Qt_6_2_0 -) AbstractNamespaceOption, %End }; typedef QFlags SocketOptions; void setSocketOptions(QLocalServer::SocketOptions options); QLocalServer::SocketOptions socketOptions() const; qintptr socketDescriptor() const; %If (Qt_6_3_0 -) void setListenBacklogSize(int size); %End %If (Qt_6_3_0 -) int listenBacklogSize() const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2819607 PyQt6-6.6.1/sip/QtNetwork/qlocalsocket.sip0000644000076500000240000001512314532160401017316 0ustar00philstaff// qlocalsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLocalSocket : QIODevice { %TypeHeaderCode #include %End public: enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, SocketTimeoutError, DatagramTooLargeError, ConnectionError, UnsupportedSocketOperationError, OperationError, UnknownSocketError, }; enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState, }; QLocalSocket(QObject *parent /TransferThis/ = 0); virtual ~QLocalSocket(); void connectToServer(const QString &name, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void connectToServer(QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; void disconnectFromServer() /ReleaseGIL/; virtual bool open(QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); QString serverName() const; void setServerName(const QString &name); QString fullServerName() const; void abort(); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); QLocalSocket::LocalSocketError error() const; bool flush(); bool isValid() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); bool setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState state = QLocalSocket::ConnectedState, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); qintptr socketDescriptor() const; QLocalSocket::LocalSocketState state() const; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; signals: void connected(); void disconnected(); void errorOccurred(QLocalSocket::LocalSocketError socketError); void stateChanged(QLocalSocket::LocalSocketState socketState); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *, qint64)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QLocalSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *, qint64)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QLocalSocket::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End virtual qint64 skipData(qint64 maxSize) /ReleaseGIL/; public: %If (Qt_6_2_0 -) enum SocketOption /BaseType=Flag/ { NoOptions, AbstractNamespaceOption, }; %End %If (Qt_6_2_0 -) typedef QFlags SocketOptions; %End %If (Qt_6_2_0 -) void setSocketOptions(QLocalSocket::SocketOptions option); %End %If (Qt_6_2_0 -) QLocalSocket::SocketOptions socketOptions() const; %End protected: %If (Qt_6_3_0 -) virtual SIP_PYOBJECT readLineData(qint64 maxlen) /ReleaseGIL,TypeHint="bytes"/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QLocalSocket::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2748108 PyQt6-6.6.1/sip/QtNetwork/qnetworkaccessmanager.sip0000644000076500000240000001134314532160401021221 0ustar00philstaff// qnetworkaccessmanager.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAccessManager : QObject { %TypeHeaderCode #include %End public: enum Operation { HeadOperation, GetOperation, PutOperation, PostOperation, DeleteOperation, CustomOperation, }; explicit QNetworkAccessManager(QObject *parent /TransferThis/ = 0); virtual ~QNetworkAccessManager(); QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &proxy); QNetworkCookieJar *cookieJar() const; void setCookieJar(QNetworkCookieJar *cookieJar /Transfer/); QNetworkReply *head(const QNetworkRequest &request); QNetworkReply *get(const QNetworkRequest &request); QNetworkReply *post(const QNetworkRequest &request, QIODevice *data); QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *post(const QNetworkRequest &request, QHttpMultiPart *multiPart); QNetworkReply *put(const QNetworkRequest &request, QIODevice *data); QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data); QNetworkReply *put(const QNetworkRequest &request, QHttpMultiPart *multiPart); signals: void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator); void authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator); void finished(QNetworkReply *reply); %If (PyQt_SSL) void encrypted(QNetworkReply *reply); %End %If (PyQt_SSL) void sslErrors(QNetworkReply *reply, const QList &errors); %End %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QNetworkReply *reply, QSslPreSharedKeyAuthenticator *authenticator); %End protected: virtual QNetworkReply *createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *device = 0) /AbortOnException,DisallowNone,ReleaseGIL/; public: QNetworkProxyFactory *proxyFactory() const; void setProxyFactory(QNetworkProxyFactory *factory /Transfer/); QAbstractNetworkCache *cache() const; void setCache(QAbstractNetworkCache *cache /Transfer/); QNetworkReply *deleteResource(const QNetworkRequest &request); QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = 0); QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data); QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QHttpMultiPart *multiPart); void clearAccessCache(); virtual QStringList supportedSchemes() const; %If (PyQt_SSL) void connectToHostEncrypted(const QString &hostName, quint16 port = 443, const QSslConfiguration &sslConfiguration = QSslConfiguration::defaultConfiguration()); %End %If (PyQt_SSL) void connectToHostEncrypted(const QString &hostName, quint16 port, const QSslConfiguration &sslConfiguration, const QString &peerName); %End void connectToHost(const QString &hostName, quint16 port = 80); protected slots: QStringList supportedSchemesImplementation() const; public: void clearConnectionCache(); void setStrictTransportSecurityEnabled(bool enabled); bool isStrictTransportSecurityEnabled() const; void addStrictTransportSecurityHosts(const QList &knownHosts); QList strictTransportSecurityHosts() const; void setRedirectPolicy(QNetworkRequest::RedirectPolicy policy); QNetworkRequest::RedirectPolicy redirectPolicy() const; void enableStrictTransportSecurityStore(bool enabled, const QString &storeDir = QString()); bool isStrictTransportSecurityStoreEnabled() const; bool autoDeleteReplies() const; void setAutoDeleteReplies(bool autoDelete); int transferTimeout() const; void setTransferTimeout(int timeout = QNetworkRequest::DefaultTransferTimeoutConstant); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2658682 PyQt6-6.6.1/sip/QtNetwork/qnetworkcookie.sip0000644000076500000240000000475414532160401017706 0ustar00philstaff// qnetworkcookie.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookie { %TypeHeaderCode #include %End public: enum RawForm { NameAndValueOnly, Full, }; QNetworkCookie(const QByteArray &name = QByteArray(), const QByteArray &value = QByteArray()); QNetworkCookie(const QNetworkCookie &other); ~QNetworkCookie(); bool isSecure() const; void setSecure(bool enable); bool isSessionCookie() const; QDateTime expirationDate() const; void setExpirationDate(const QDateTime &date); QString domain() const; void setDomain(const QString &domain); QString path() const; void setPath(const QString &path); QByteArray name() const; void setName(const QByteArray &cookieName); QByteArray value() const; void setValue(const QByteArray &value); QByteArray toRawForm(QNetworkCookie::RawForm form = QNetworkCookie::Full) const; static QList parseCookies(const QByteArray &cookieString); bool operator==(const QNetworkCookie &other) const; bool operator!=(const QNetworkCookie &other) const; bool isHttpOnly() const; void setHttpOnly(bool enable); void swap(QNetworkCookie &other /Constrained/); bool hasSameIdentifier(const QNetworkCookie &other) const; void normalize(const QUrl &url); %If (Qt_6_1_0 -) enum class SameSite { Default, None /PyName=None_/, Lax, Strict, }; %End %If (Qt_6_1_0 -) QNetworkCookie::SameSite sameSitePolicy() const; %End %If (Qt_6_1_0 -) void setSameSitePolicy(QNetworkCookie::SameSite sameSite); %End }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.29097 PyQt6-6.6.1/sip/QtNetwork/qnetworkcookiejar.sip0000644000076500000240000000326714532160401020401 0ustar00philstaff// qnetworkcookiejar.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkCookieJar : QObject { %TypeHeaderCode #include %End public: explicit QNetworkCookieJar(QObject *parent /TransferThis/ = 0); virtual ~QNetworkCookieJar(); virtual QList cookiesForUrl(const QUrl &url) const; virtual bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); virtual bool insertCookie(const QNetworkCookie &cookie); virtual bool updateCookie(const QNetworkCookie &cookie); virtual bool deleteCookie(const QNetworkCookie &cookie); protected: void setAllCookies(const QList &cookieList); QList allCookies() const; virtual bool validateCookie(const QNetworkCookie &cookie, const QUrl &url) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2632997 PyQt6-6.6.1/sip/QtNetwork/qnetworkdatagram.sip0000644000076500000240000000362514532160401020211 0ustar00philstaff// qnetworkdatagram.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkDatagram { %TypeHeaderCode #include %End public: QNetworkDatagram(); QNetworkDatagram(const QByteArray &data, const QHostAddress &destinationAddress = QHostAddress(), quint16 port = 0); QNetworkDatagram(const QNetworkDatagram &other); ~QNetworkDatagram(); void swap(QNetworkDatagram &other /Constrained/); void clear(); bool isValid() const; bool isNull() const; uint interfaceIndex() const; void setInterfaceIndex(uint index); QHostAddress senderAddress() const; QHostAddress destinationAddress() const; int senderPort() const; int destinationPort() const; void setSender(const QHostAddress &address, quint16 port = 0); void setDestination(const QHostAddress &address, quint16 port); int hopLimit() const; void setHopLimit(int count); QByteArray data() const; void setData(const QByteArray &data); QNetworkDatagram makeReply(const QByteArray &payload) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2781973 PyQt6-6.6.1/sip/QtNetwork/qnetworkdiskcache.sip0000644000076500000240000000353114532160401020343 0ustar00philstaff// qnetworkdiskcache.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkDiskCache : QAbstractNetworkCache { %TypeHeaderCode #include %End public: explicit QNetworkDiskCache(QObject *parent /TransferThis/ = 0); virtual ~QNetworkDiskCache(); QString cacheDirectory() const; void setCacheDirectory(const QString &cacheDir); qint64 maximumCacheSize() const; void setMaximumCacheSize(qint64 size); virtual qint64 cacheSize() const; virtual QNetworkCacheMetaData metaData(const QUrl &url); virtual void updateMetaData(const QNetworkCacheMetaData &metaData); virtual QIODevice *data(const QUrl &url) /Factory/; virtual bool remove(const QUrl &url); virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData); virtual void insert(QIODevice *device); QNetworkCacheMetaData fileMetaData(const QString &fileName) const; public slots: virtual void clear(); protected: virtual qint64 expire(); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.274151 PyQt6-6.6.1/sip/QtNetwork/qnetworkinformation.sip0000644000076500000240000000560614532160401020757 0ustar00philstaff// qnetworkinformation.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_1_0 -) class QNetworkInformation : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum class Reachability { Unknown, Disconnected, Local, Site, Online, }; enum class Feature { Reachability, %If (Qt_6_2_0 -) CaptivePortal, %End %If (Qt_6_3_0 -) TransportMedium, %End %If (Qt_6_3_0 -) Metered, %End }; typedef QFlags Features; QNetworkInformation::Reachability reachability() const; QString backendName() const; bool supports(QNetworkInformation::Features features) const; static bool load(QStringView backend); static bool load(QNetworkInformation::Features features); static QStringList availableBackends(); static QNetworkInformation *instance(); signals: void reachabilityChanged(QNetworkInformation::Reachability newReachability /ScopesStripped=1/); public: %If (Qt_6_2_0 -) bool isBehindCaptivePortal() const; %End signals: %If (Qt_6_2_0 -) void isBehindCaptivePortalChanged(bool state); %End public: %If (Qt_6_3_0 -) enum class TransportMedium { Unknown, Ethernet, Cellular, WiFi, Bluetooth, }; %End %If (Qt_6_3_0 -) QNetworkInformation::TransportMedium transportMedium() const; %End %If (Qt_6_3_0 -) bool isMetered() const; %End %If (Qt_6_3_0 -) QNetworkInformation::Features supportedFeatures() const; %End %If (Qt_6_3_0 -) static bool loadDefaultBackend(); %End signals: %If (Qt_6_3_0 -) void transportMediumChanged(QNetworkInformation::TransportMedium current); %End %If (Qt_6_3_0 -) void isMeteredChanged(bool isMetered); %End public: %If (Qt_6_4_0 -) static bool loadBackendByName(QStringView backend); %End %If (Qt_6_4_0 -) static bool loadBackendByFeatures(QNetworkInformation::Features features); %End private: virtual ~QNetworkInformation(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2729354 PyQt6-6.6.1/sip/QtNetwork/qnetworkinterface.sip0000644000076500000240000000721014532160401020363 0ustar00philstaff// qnetworkinterface.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkAddressEntry { %TypeHeaderCode #include %End public: QNetworkAddressEntry(); QNetworkAddressEntry(const QNetworkAddressEntry &other); ~QNetworkAddressEntry(); QHostAddress ip() const; void setIp(const QHostAddress &newIp); QHostAddress netmask() const; void setNetmask(const QHostAddress &newNetmask); QHostAddress broadcast() const; void setBroadcast(const QHostAddress &newBroadcast); bool operator==(const QNetworkAddressEntry &other) const; bool operator!=(const QNetworkAddressEntry &other) const; int prefixLength() const; void setPrefixLength(int length); void swap(QNetworkAddressEntry &other /Constrained/); enum DnsEligibilityStatus { DnsEligibilityUnknown, DnsIneligible, DnsEligible, }; QNetworkAddressEntry::DnsEligibilityStatus dnsEligibility() const; void setDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status); bool isLifetimeKnown() const; QDeadlineTimer preferredLifetime() const; QDeadlineTimer validityLifetime() const; void setAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity); void clearAddressLifetime(); bool isPermanent() const; bool isTemporary() const; }; class QNetworkInterface { %TypeHeaderCode #include %End public: enum InterfaceFlag /BaseType=Flag/ { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast, }; typedef QFlags InterfaceFlags; QNetworkInterface(); QNetworkInterface(const QNetworkInterface &other); ~QNetworkInterface(); bool isValid() const; QString name() const; QNetworkInterface::InterfaceFlags flags() const; QString hardwareAddress() const; QList addressEntries() const; static QNetworkInterface interfaceFromName(const QString &name); static QNetworkInterface interfaceFromIndex(int index); static QList allInterfaces(); static QList allAddresses(); int index() const; QString humanReadableName() const; void swap(QNetworkInterface &other /Constrained/); static int interfaceIndexFromName(const QString &name); static QString interfaceNameFromIndex(int index); enum InterfaceType { Unknown, Loopback, Virtual, Ethernet, Slip, CanBus, Ppp, Fddi, Wifi, Ieee80211, Phonet, Ieee802154, SixLoWPAN, Ieee80216, Ieee1394, }; QNetworkInterface::InterfaceType type() const; int maximumTransmissionUnit() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2922795 PyQt6-6.6.1/sip/QtNetwork/qnetworkproxy.sip0000644000076500000240000001174314532160401017612 0ustar00philstaff// qnetworkproxy.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkProxy { %TypeHeaderCode #include %End public: enum ProxyType { DefaultProxy, Socks5Proxy, NoProxy, HttpProxy, HttpCachingProxy, FtpCachingProxy, }; QNetworkProxy(); QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString()); QNetworkProxy(const QNetworkProxy &other); ~QNetworkProxy(); void setType(QNetworkProxy::ProxyType type); QNetworkProxy::ProxyType type() const; void setUser(const QString &userName); QString user() const; void setPassword(const QString &password); QString password() const; void setHostName(const QString &hostName); QString hostName() const; void setPort(quint16 port); quint16 port() const; static void setApplicationProxy(const QNetworkProxy &proxy); static QNetworkProxy applicationProxy(); bool isCachingProxy() const; bool isTransparentProxy() const; bool operator==(const QNetworkProxy &other) const; bool operator!=(const QNetworkProxy &other) const; enum Capability /BaseType=Flag/ { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, SctpTunnelingCapability, SctpListeningCapability, }; typedef QFlags Capabilities; void setCapabilities(QNetworkProxy::Capabilities capab); QNetworkProxy::Capabilities capabilities() const; void swap(QNetworkProxy &other /Constrained/); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); }; class QNetworkProxyQuery { %TypeHeaderCode #include %End public: enum QueryType { TcpSocket, UdpSocket, TcpServer, UrlRequest, SctpSocket, SctpServer, }; QNetworkProxyQuery(); QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::UrlRequest); QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpSocket); QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType type = QNetworkProxyQuery::TcpServer); QNetworkProxyQuery(const QNetworkProxyQuery &other); ~QNetworkProxyQuery(); bool operator==(const QNetworkProxyQuery &other) const; bool operator!=(const QNetworkProxyQuery &other) const; QNetworkProxyQuery::QueryType queryType() const; void setQueryType(QNetworkProxyQuery::QueryType type); int peerPort() const; void setPeerPort(int port); QString peerHostName() const; void setPeerHostName(const QString &hostname); int localPort() const; void setLocalPort(int port); QString protocolTag() const; void setProtocolTag(const QString &protocolTag); QUrl url() const; void setUrl(const QUrl &url); void swap(QNetworkProxyQuery &other /Constrained/); }; class QNetworkProxyFactory /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QNetworkProxyFactory(); virtual ~QNetworkProxyFactory(); virtual QList queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0; static void setApplicationProxyFactory(QNetworkProxyFactory *factory /Transfer/); static QList proxyForQuery(const QNetworkProxyQuery &query); static QList systemProxyForQuery(const QNetworkProxyQuery &query = QNetworkProxyQuery()); static void setUseSystemConfiguration(bool enable); static bool usesSystemConfiguration(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2682955 PyQt6-6.6.1/sip/QtNetwork/qnetworkreply.sip0000644000076500000240000001314014532160401017555 0ustar00philstaff// qnetworkreply.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkReply : QIODevice { %TypeHeaderCode #include %End public: enum NetworkError { NoError, ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, TimeoutError, OperationCanceledError, SslHandshakeFailedError, UnknownNetworkError, ProxyConnectionRefusedError, ProxyConnectionClosedError, ProxyNotFoundError, ProxyTimeoutError, ProxyAuthenticationRequiredError, UnknownProxyError, ContentAccessDenied, ContentOperationNotPermittedError, ContentNotFoundError, AuthenticationRequiredError, UnknownContentError, ProtocolUnknownError, ProtocolInvalidOperationError, ProtocolFailure, ContentReSendError, TemporaryNetworkFailureError, NetworkSessionFailedError, BackgroundRequestNotAllowedError, ContentConflictError, ContentGoneError, InternalServerError, OperationNotImplementedError, ServiceUnavailableError, UnknownServerError, TooManyRedirectsError, InsecureRedirectError, }; virtual ~QNetworkReply(); virtual void abort() = 0; virtual void close(); virtual bool isSequential() const; qint64 readBufferSize() const; virtual void setReadBufferSize(qint64 size); QNetworkAccessManager *manager() const; QNetworkAccessManager::Operation operation() const; QNetworkRequest request() const; QNetworkReply::NetworkError error() const; QUrl url() const; QVariant header(QNetworkRequest::KnownHeaders header) const; bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; QVariant attribute(QNetworkRequest::Attribute code) const; %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End public slots: virtual void ignoreSslErrors(); signals: void metaDataChanged(); void finished(); %If (PyQt_SSL) void encrypted(); %End void errorOccurred(QNetworkReply::NetworkError); %If (PyQt_SSL) void sslErrors(const QList &errors); %End void uploadProgress(qint64 bytesSent, qint64 bytesTotal); void downloadProgress(qint64 bytesReceived, qint64 bytesTotal); %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End void redirected(const QUrl &url); void redirectAllowed(); protected: explicit QNetworkReply(QObject *parent /TransferThis/ = 0); virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QNetworkReply::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End void setOperation(QNetworkAccessManager::Operation operation); void setRequest(const QNetworkRequest &request); void setError(QNetworkReply::NetworkError errorCode, const QString &errorString); void setUrl(const QUrl &url); void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); void setRawHeader(const QByteArray &headerName, const QByteArray &value); void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); void setFinished(bool finished); public: bool isFinished() const; bool isRunning() const; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End typedef std::pair RawHeaderPair; const QList> &rawHeaderPairs() const; protected: %If (PyQt_SSL) virtual void sslConfigurationImplementation(QSslConfiguration &) const; %End %If (PyQt_SSL) virtual void setSslConfigurationImplementation(const QSslConfiguration &); %End %If (PyQt_SSL) virtual void ignoreSslErrorsImplementation(const QList &); %End signals: %If (Qt_6_3_0 -) void socketStartedConnecting(); %End %If (Qt_6_3_0 -) void requestSent(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2848873 PyQt6-6.6.1/sip/QtNetwork/qnetworkrequest.sip0000644000076500000240000001177514532160401020126 0ustar00philstaff// qnetworkrequest.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QNetworkRequest { %TypeHeaderCode #include %End public: enum KnownHeaders { ContentTypeHeader, ContentLengthHeader, LocationHeader, LastModifiedHeader, CookieHeader, SetCookieHeader, ContentDispositionHeader, UserAgentHeader, ServerHeader, IfModifiedSinceHeader, ETagHeader, IfMatchHeader, IfNoneMatchHeader, }; enum Attribute { HttpStatusCodeAttribute, HttpReasonPhraseAttribute, RedirectionTargetAttribute, ConnectionEncryptedAttribute, CacheLoadControlAttribute, CacheSaveControlAttribute, SourceIsFromCacheAttribute, DoNotBufferUploadDataAttribute, HttpPipeliningAllowedAttribute, HttpPipeliningWasUsedAttribute, CustomVerbAttribute, CookieLoadControlAttribute, AuthenticationReuseAttribute, CookieSaveControlAttribute, BackgroundRequestAttribute, EmitAllUploadProgressSignalsAttribute, Http2AllowedAttribute, Http2WasUsedAttribute, OriginalContentLengthAttribute, RedirectPolicyAttribute, Http2DirectAttribute, AutoDeleteReplyOnFinishAttribute, %If (Qt_6_3_0 -) ConnectionCacheExpiryTimeoutSecondsAttribute, %End %If (Qt_6_3_0 -) Http2CleartextAllowedAttribute, %End %If (Qt_6_5_0 -) UseCredentialsAttribute, %End User, UserMax, }; enum CacheLoadControl { AlwaysNetwork, PreferNetwork, PreferCache, AlwaysCache, }; enum LoadControl { Automatic, Manual, }; enum Priority { HighPriority, NormalPriority, LowPriority, }; explicit QNetworkRequest(const QUrl &url); QNetworkRequest(); QNetworkRequest(const QNetworkRequest &other); ~QNetworkRequest(); QUrl url() const; void setUrl(const QUrl &url); QVariant header(QNetworkRequest::KnownHeaders header) const; void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value); bool hasRawHeader(const QByteArray &headerName) const; QList rawHeaderList() const; QByteArray rawHeader(const QByteArray &headerName) const; void setRawHeader(const QByteArray &headerName, const QByteArray &value); QVariant attribute(QNetworkRequest::Attribute code, const QVariant &defaultValue = QVariant()) const; void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &configuration); %End bool operator==(const QNetworkRequest &other) const; bool operator!=(const QNetworkRequest &other) const; void setOriginatingObject(QObject *object /KeepReference/); QObject *originatingObject() const; QNetworkRequest::Priority priority() const; void setPriority(QNetworkRequest::Priority priority); void swap(QNetworkRequest &other /Constrained/); int maximumRedirectsAllowed() const; void setMaximumRedirectsAllowed(int maximumRedirectsAllowed); enum RedirectPolicy { ManualRedirectPolicy, NoLessSafeRedirectPolicy, SameOriginRedirectPolicy, UserVerifiedRedirectPolicy, }; QString peerVerifyName() const; void setPeerVerifyName(const QString &peerName); %If (Qt_6_5_0 -) QHttp1Configuration http1Configuration() const; %End QHttp2Configuration http2Configuration() const; %If (Qt_6_5_0 -) void setHttp1Configuration(const QHttp1Configuration &configuration); %End void setHttp2Configuration(const QHttp2Configuration &configuration); enum TransferTimeoutConstant { DefaultTransferTimeoutConstant, }; int transferTimeout() const; void setTransferTimeout(int timeout = QNetworkRequest::DefaultTransferTimeoutConstant); %If (Qt_6_2_0 -) qint64 decompressedSafetyCheckThreshold() const; %End %If (Qt_6_2_0 -) void setDecompressedSafetyCheckThreshold(qint64 threshold); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2897956 PyQt6-6.6.1/sip/QtNetwork/qocspresponse.sip0000644000076500000240000000374414532160401017544 0ustar00philstaff// qocspresponse.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) %ModuleCode #include %End %End %If (PyQt_SSL) enum class QOcspCertificateStatus { Good, Revoked, Unknown, }; %End %If (PyQt_SSL) enum class QOcspRevocationReason { None, Unspecified, KeyCompromise, CACompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCRL, }; %End %If (PyQt_SSL) class QOcspResponse { %TypeHeaderCode #include %End public: QOcspResponse(); QOcspResponse(const QOcspResponse &other); ~QOcspResponse(); QOcspCertificateStatus certificateStatus() const; QOcspRevocationReason revocationReason() const; QSslCertificate responder() const; QSslCertificate subject() const; void swap(QOcspResponse &other); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (PyQt_SSL) bool operator==(const QOcspResponse &lhs, const QOcspResponse &rhs); %End %If (PyQt_SSL) bool operator!=(const QOcspResponse &lhs, const QOcspResponse &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2686777 PyQt6-6.6.1/sip/QtNetwork/qpassworddigestor.sip0000644000076500000240000000254314532160401020420 0ustar00philstaff// qpassworddigestor.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) namespace QPasswordDigestor { %TypeHeaderCode #include %End QByteArray deriveKeyPbkdf1(QCryptographicHash::Algorithm algorithm, const QByteArray &password, const QByteArray &salt, int iterations, quint64 dkLen); QByteArray deriveKeyPbkdf2(QCryptographicHash::Algorithm algorithm, const QByteArray &password, const QByteArray &salt, int iterations, quint64 dkLen); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2905667 PyQt6-6.6.1/sip/QtNetwork/qpynetwork_qhash.sip0000644000076500000240000000660214532160401020243 0ustar00philstaff// This is the SIP interface definition for the QHash based mapped types // specific to the QtNetwork module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QHash /TypeHint="Dict[QNetworkRequest.Attribute, QVariant]", TypeHintValue="{}"/ { %TypeHeaderCode #include #include #include %End %ConvertFromTypeCode PyObject *d = PyDict_New(); if (!d) return 0; QHash::const_iterator it = sipCpp->constBegin(); QHash::const_iterator end = sipCpp->constEnd(); while (it != end) { PyObject *kobj = sipConvertFromEnum(it.key(), sipType_QNetworkRequest_Attribute); if (!kobj) { Py_DECREF(d); return 0; } QVariant *v = new QVariant(it.value()); PyObject *vobj = sipConvertFromNewType(v, sipType_QVariant, sipTransferObj); if (!vobj) { delete v; Py_DECREF(kobj); Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, kobj, vobj); Py_DECREF(vobj); Py_DECREF(kobj); if (rc < 0) { Py_DECREF(d); return 0; } ++it; } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); QHash *qh = new QHash; Py_ssize_t pos = 0; PyObject *kobj, *vobj; while (PyDict_Next(sipPy, &pos, &kobj, &vobj)) { int k = sipConvertToEnum(kobj, sipType_QNetworkRequest_Attribute); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "a key has type '%s' but 'QNetworkRequest.Attribute' is expected", sipPyTypeName(Py_TYPE(kobj))); delete qh; *sipIsErr = 1; return 0; } int vstate; QVariant *v = reinterpret_cast( sipForceConvertToType(vobj, sipType_QVariant, sipTransferObj, SIP_NOT_NONE, &vstate, sipIsErr)); if (*sipIsErr) { // Any error must be internal, so leave the exception as it is. delete qh; return 0; } qh->insert(static_cast(k), *v); sipReleaseType(v, sipType_QVariant, vstate); } *sipCppPtr = qh; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.287075 PyQt6-6.6.1/sip/QtNetwork/qpynetwork_qlist.sip0000644000076500000240000001554114532160401020275 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtNetwork module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_1_0 -) %If (PyQt_SSL) %MappedType QList /TypeHintIn="Iterable[QSsl.SslProtocol]", TypeHintOut="List[QSsl.SslProtocol]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QSsl_SslProtocol); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QSsl_SslProtocol); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QSsl.SslProtocol' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %End %If (Qt_6_1_0 -) %If (PyQt_SSL) %MappedType QList /TypeHintIn="Iterable[QSsl.ImplementedClass]", TypeHintOut="List[QSsl.ImplementedClass]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(static_cast(sipCpp->at(i)), sipType_QSsl_ImplementedClass); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QSsl_ImplementedClass); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QSsl.ImplementedClass' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %End %If (Qt_6_1_0 -) %If (PyQt_SSL) %MappedType QList /TypeHintIn="Iterable[QSsl.SupportedFeature]", TypeHintOut="List[QSsl.SupportedFeature]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(static_cast(sipCpp->at(i)), sipType_QSsl_SupportedFeature); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QSsl_SupportedFeature); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QSsl.SupportedFeature' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2758338 PyQt6-6.6.1/sip/QtNetwork/qpynetwork_qmap.sip0000644000076500000240000001157114532160401020076 0ustar00philstaff// This is the SIP interface definition for the QMap and QMultiMap based mapped // types specific to the QtNetwork module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) %MappedType QMultiMap /TypeHintOut="Dict[QSsl.AlternativeNameEntryType, List[QString]]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode // Get the enum member objects that are the dictionary keys. static PyObject *email_entry = 0; if (!email_entry) { email_entry = sipConvertFromEnum(static_cast(QSsl::EmailEntry), sipType_QSsl_AlternativeNameEntryType); if (!email_entry) return 0; } static PyObject *dns_entry = 0; if (!dns_entry) { dns_entry = sipConvertFromEnum(static_cast(QSsl::DnsEntry), sipType_QSsl_AlternativeNameEntryType); if (!dns_entry) return 0; } static PyObject *ip_address_entry = 0; if (!ip_address_entry) { ip_address_entry = sipConvertFromEnum( static_cast(QSsl::IpAddressEntry), sipType_QSsl_AlternativeNameEntryType); if (!ip_address_entry) return 0; } // Create the dictionary. PyObject *d = PyDict_New(); if (!d) return 0; QList vl; // Handle the Qssl::EmailEntry key. vl = sipCpp->values(QSsl::EmailEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, email_entry, vlobj); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SetItem(vlobj, i, vobj); } } // Handle the Qssl::DnsEntry key. vl = sipCpp->values(QSsl::DnsEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, dns_entry, vlobj); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SetItem(vlobj, i, vobj); } } // Handle the Qssl::IpAddressEntry key. vl = sipCpp->values(QSsl::IpAddressEntry); if (!vl.isEmpty()) { PyObject *vlobj = PyList_New(vl.count()); if (!vlobj) { Py_DECREF(d); return 0; } int rc = PyDict_SetItem(d, ip_address_entry, vlobj); Py_DECREF(vlobj); if (rc < 0) { Py_DECREF(d); return 0; } for (int i = 0; i < vl.count(); ++i) { QString *s = new QString(vl.at(i)); PyObject *vobj = sipConvertFromNewType(s, sipType_QString, sipTransferObj); if (!vobj) { delete s; Py_DECREF(d); return 0; } PyList_SetItem(vlobj, i, vobj); } } return d; %End %ConvertToTypeCode if (!sipIsErr) return PyDict_Check(sipPy); PyErr_SetString(PyExc_NotImplementedError, "converting to QMultiMap is unsupported"); return 0; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2829587 PyQt6-6.6.1/sip/QtNetwork/qssl.sip0000644000076500000240000000707314532160401015621 0ustar00philstaff// qssl.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) namespace QSsl { %TypeHeaderCode #include %End enum KeyType { PrivateKey, PublicKey, }; enum EncodingFormat { Pem, Der, }; enum KeyAlgorithm { Opaque, Rsa, Dsa, Ec, Dh, }; enum AlternativeNameEntryType { EmailEntry, DnsEntry, IpAddressEntry, }; enum SslProtocol { UnknownProtocol, TlsV1_0, TlsV1_0OrLater, TlsV1_1, TlsV1_1OrLater, TlsV1_2, TlsV1_2OrLater, AnyProtocol, SecureProtocols, DtlsV1_0, DtlsV1_0OrLater, DtlsV1_2, DtlsV1_2OrLater, TlsV1_3, TlsV1_3OrLater, }; enum SslOption /BaseType=Flag/ { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, SslOptionDisableSessionSharing, SslOptionDisableSessionPersistence, SslOptionDisableServerCipherPreference, }; typedef QFlags SslOptions; enum class AlertLevel { Warning, Fatal, Unknown, }; enum class AlertType { CloseNotify, UnexpectedMessage, BadRecordMac, RecordOverflow, DecompressionFailure, HandshakeFailure, NoCertificate, BadCertificate, UnsupportedCertificate, CertificateRevoked, CertificateExpired, CertificateUnknown, IllegalParameter, UnknownCa, AccessDenied, DecodeError, DecryptError, ExportRestriction, ProtocolVersion, InsufficientSecurity, InternalError, InappropriateFallback, UserCancelled, NoRenegotiation, MissingExtension, UnsupportedExtension, CertificateUnobtainable, UnrecognizedName, BadCertificateStatusResponse, BadCertificateHashValue, UnknownPskIdentity, CertificateRequired, NoApplicationProtocol, UnknownAlertMessage, }; %If (Qt_6_1_0 -) enum class ImplementedClass { Key, Certificate, Socket, DiffieHellman, EllipticCurve, Dtls, %If (Qt_6_2_0 -) DtlsCookie, %End }; %End %If (Qt_6_1_0 -) enum class SupportedFeature { CertificateVerification, ClientSideAlpn, ServerSideAlpn, Ocsp, Psk, SessionTicket, Alerts, }; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2931447 PyQt6-6.6.1/sip/QtNetwork/qsslcertificate.sip0000644000076500000240000000726314532160401020025 0ustar00philstaff// qsslcertificate.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificate { %TypeHeaderCode #include %End public: enum SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, StateOrProvinceName, DistinguishedNameQualifier, SerialNumber, EmailAddress, }; QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem) /ReleaseGIL/; QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate(const QSslCertificate &other); ~QSslCertificate(); bool operator==(const QSslCertificate &other) const; bool operator!=(const QSslCertificate &other) const; bool isNull() const; void clear(); QByteArray version() const; QByteArray serialNumber() const; QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const; QStringList issuerInfo(QSslCertificate::SubjectInfo info) const; QStringList issuerInfo(const QByteArray &attribute) const; QStringList subjectInfo(QSslCertificate::SubjectInfo info) const; QStringList subjectInfo(const QByteArray &attribute) const; QMultiMap subjectAlternativeNames() const; QDateTime effectiveDate() const; QDateTime expiryDate() const; QSslKey publicKey() const; QByteArray toPem() const; QByteArray toDer() const; static QList fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString); static QList fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem); static QList fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem); Qt::HANDLE handle() const; void swap(QSslCertificate &other /Constrained/); bool isBlacklisted() const; QList subjectInfoAttributes() const; QList issuerInfoAttributes() const; QList extensions() const; QString toText() const; static QList verify(const QList &certificateChain, const QString &hostName = QString()); bool isSelfSigned() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End static bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList *caCertificates = 0, const QByteArray &passPhrase = QByteArray()) /ReleaseGIL/; QString issuerDisplayName() const; QString subjectDisplayName() const; enum class PatternSyntax { RegularExpression, Wildcard, FixedString, }; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2835646 PyQt6-6.6.1/sip/QtNetwork/qsslcertificateextension.sip0000644000076500000240000000262214532160401021754 0ustar00philstaff// qsslcertificateextension.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCertificateExtension { %TypeHeaderCode #include %End public: QSslCertificateExtension(); QSslCertificateExtension(const QSslCertificateExtension &other); ~QSslCertificateExtension(); void swap(QSslCertificateExtension &other /Constrained/); QString oid() const; QString name() const; QVariant value() const; bool isCritical() const; bool isSupported() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2719448 PyQt6-6.6.1/sip/QtNetwork/qsslcipher.sip0000644000076500000240000000323614532160401017011 0ustar00philstaff// qsslcipher.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslCipher { %TypeHeaderCode #include %End public: QSslCipher(); explicit QSslCipher(const QString &name); QSslCipher(const QString &name, QSsl::SslProtocol protocol); QSslCipher(const QSslCipher &other); ~QSslCipher(); bool operator==(const QSslCipher &other) const; bool operator!=(const QSslCipher &other) const; bool isNull() const; QString name() const; int supportedBits() const; int usedBits() const; QString keyExchangeMethod() const; QString authenticationMethod() const; QString encryptionMethod() const; QString protocolString() const; QSsl::SslProtocol protocol() const; void swap(QSslCipher &other /Constrained/); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2653418 PyQt6-6.6.1/sip/QtNetwork/qsslconfiguration.sip0000644000076500000240000001212114532160401020377 0ustar00philstaff// qsslconfiguration.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslConfiguration { %TypeHeaderCode #include %End public: QSslConfiguration(); QSslConfiguration(const QSslConfiguration &other); ~QSslConfiguration(); bool isNull() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); QSslCertificate localCertificate() const; void setLocalCertificate(const QSslCertificate &certificate); QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; QSslKey privateKey() const; void setPrivateKey(const QSslKey &key); QList ciphers() const; void setCiphers(const QString &ciphers); void setCiphers(const QList &ciphers); QList caCertificates() const; void setCaCertificates(const QList &certificates); static QSslConfiguration defaultConfiguration(); static void setDefaultConfiguration(const QSslConfiguration &configuration); bool operator==(const QSslConfiguration &other) const; bool operator!=(const QSslConfiguration &other) const; void setSslOption(QSsl::SslOption option, bool on); bool testSslOption(QSsl::SslOption option) const; void swap(QSslConfiguration &other /Constrained/); QList localCertificateChain() const; void setLocalCertificateChain(const QList &localChain); QByteArray sessionTicket() const; void setSessionTicket(const QByteArray &sessionTicket); int sessionTicketLifeTimeHint() const; enum NextProtocolNegotiationStatus { NextProtocolNegotiationNone, NextProtocolNegotiationNegotiated, NextProtocolNegotiationUnsupported, }; void setAllowedNextProtocols(const QList &protocols); QList allowedNextProtocols() const; QByteArray nextNegotiatedProtocol() const; QSslConfiguration::NextProtocolNegotiationStatus nextProtocolNegotiationStatus() const; QSsl::SslProtocol sessionProtocol() const; static QList supportedCiphers(); static QList systemCaCertificates(); QList ellipticCurves() const; void setEllipticCurves(const QList &curves); static QList supportedEllipticCurves(); QSslKey ephemeralServerKey() const; QByteArray preSharedKeyIdentityHint() const; void setPreSharedKeyIdentityHint(const QByteArray &hint); QSslDiffieHellmanParameters diffieHellmanParameters() const; void setDiffieHellmanParameters(const QSslDiffieHellmanParameters &dhparams); QMap backendConfiguration() const; void setBackendConfigurationOption(const QByteArray &name, const QVariant &value); void setBackendConfiguration(const QMap &backendConfiguration = QMap()); void setOcspStaplingEnabled(bool enable); bool ocspStaplingEnabled() const; void addCaCertificate(const QSslCertificate &certificate); bool addCaCertificates(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = QSslCertificate::PatternSyntax::FixedString); void addCaCertificates(const QList &certificates); bool handshakeMustInterruptOnError() const; void setHandshakeMustInterruptOnError(bool interrupt); bool missingCertificateIsFatal() const; void setMissingCertificateIsFatal(bool cannotRecover); static const char *NextProtocolHttp1_1 /Encoding="None",NoSetter/; %If (Qt_6_3_0 -) %If (PyQt_DTLS) bool dtlsCookieVerificationEnabled() const; %End %End %If (Qt_6_3_0 -) %If (PyQt_DTLS) void setDtlsCookieVerificationEnabled(bool enable); %End %End %If (Qt_6_3_0 -) %If (PyQt_DTLS) static QSslConfiguration defaultDtlsConfiguration(); %End %End %If (Qt_6_3_0 -) %If (PyQt_DTLS) static void setDefaultDtlsConfiguration(const QSslConfiguration &configuration); %End %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2734442 PyQt6-6.6.1/sip/QtNetwork/qssldiffiehellmanparameters.sip0000644000076500000240000000417314532160401022413 0ustar00philstaff// qssldiffiehellmanparameters.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslDiffieHellmanParameters { %TypeHeaderCode #include %End public: enum Error { NoError, InvalidInputDataError, UnsafeParametersError, }; QSslDiffieHellmanParameters(); QSslDiffieHellmanParameters(const QSslDiffieHellmanParameters &other); ~QSslDiffieHellmanParameters(); void swap(QSslDiffieHellmanParameters &other /Constrained/); static QSslDiffieHellmanParameters defaultParameters(); static QSslDiffieHellmanParameters fromEncoded(const QByteArray &encoded, QSsl::EncodingFormat encoding = QSsl::Pem); static QSslDiffieHellmanParameters fromEncoded(QIODevice *device, QSsl::EncodingFormat encoding = QSsl::Pem); bool isEmpty() const; bool isValid() const; QSslDiffieHellmanParameters::Error error() const; QString errorString() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (PyQt_SSL) bool operator==(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs); %End %If (PyQt_SSL) bool operator!=(const QSslDiffieHellmanParameters &lhs, const QSslDiffieHellmanParameters &rhs); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.277339 PyQt6-6.6.1/sip/QtNetwork/qsslellipticcurve.sip0000644000076500000240000000307214532160401020407 0ustar00philstaff// qsslellipticcurve.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslEllipticCurve { %TypeHeaderCode #include %End public: QSslEllipticCurve(); static QSslEllipticCurve fromShortName(const QString &name); static QSslEllipticCurve fromLongName(const QString &name); QString shortName() const; QString longName() const; bool isValid() const; bool isTlsNamedCurve() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (PyQt_SSL) bool operator==(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End %If (PyQt_SSL) bool operator!=(QSslEllipticCurve lhs, QSslEllipticCurve rhs); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.279519 PyQt6-6.6.1/sip/QtNetwork/qsslerror.sip0000644000076500000240000000536314532160401016673 0ustar00philstaff// qsslerror.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslError { %TypeHeaderCode #include %End public: enum SslError { UnspecifiedError, NoError, UnableToGetIssuerCertificate, UnableToDecryptCertificateSignature, UnableToDecodeIssuerPublicKey, CertificateSignatureFailed, CertificateNotYetValid, CertificateExpired, InvalidNotBeforeField, InvalidNotAfterField, SelfSignedCertificate, SelfSignedCertificateInChain, UnableToGetLocalIssuerCertificate, UnableToVerifyFirstCertificate, CertificateRevoked, InvalidCaCertificate, PathLengthExceeded, InvalidPurpose, CertificateUntrusted, CertificateRejected, SubjectIssuerMismatch, AuthorityIssuerSerialNumberMismatch, NoPeerCertificate, HostNameMismatch, NoSslSupport, CertificateBlacklisted, CertificateStatusUnknown, OcspNoResponseFound, OcspMalformedRequest, OcspMalformedResponse, OcspInternalError, OcspTryLater, OcspSigRequred, OcspUnauthorized, OcspResponseCannotBeTrusted, OcspResponseCertIdUnknown, OcspResponseExpired, OcspStatusUnknown, }; QSslError(); explicit QSslError(QSslError::SslError error); QSslError(QSslError::SslError error, const QSslCertificate &certificate); QSslError(const QSslError &other); ~QSslError(); QSslError::SslError error() const; QString errorString() const; QSslCertificate certificate() const; bool operator==(const QSslError &other) const; bool operator!=(const QSslError &other) const; void swap(QSslError &other /Constrained/); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.276755 PyQt6-6.6.1/sip/QtNetwork/qsslkey.sip0000644000076500000240000000374514532160401016334 0ustar00philstaff// qsslkey.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslKey { %TypeHeaderCode #include %End public: QSslKey(); QSslKey(const QByteArray &encoded, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(QIODevice *device, QSsl::KeyAlgorithm algorithm, QSsl::EncodingFormat encoding = QSsl::Pem, QSsl::KeyType type = QSsl::PrivateKey, const QByteArray &passPhrase = QByteArray()); QSslKey(Qt::HANDLE handle, QSsl::KeyType type = QSsl::PrivateKey); QSslKey(const QSslKey &other); ~QSslKey(); bool isNull() const; void clear(); int length() const; QSsl::KeyType type() const; QSsl::KeyAlgorithm algorithm() const; QByteArray toPem(const QByteArray &passPhrase = QByteArray()) const; QByteArray toDer(const QByteArray &passPhrase = QByteArray()) const; Qt::HANDLE handle() const; bool operator==(const QSslKey &key) const; bool operator!=(const QSslKey &key) const; void swap(QSslKey &other /Constrained/); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2646456 PyQt6-6.6.1/sip/QtNetwork/qsslpresharedkeyauthenticator.sip0000644000076500000240000000353314532160401023020 0ustar00philstaff// qsslpresharedkeyauthenticator.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslPreSharedKeyAuthenticator { %TypeHeaderCode #include %End public: QSslPreSharedKeyAuthenticator(); QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator); ~QSslPreSharedKeyAuthenticator(); void swap(QSslPreSharedKeyAuthenticator &authenticator /Constrained/); QByteArray identityHint() const; void setIdentity(const QByteArray &identity); QByteArray identity() const; int maximumIdentityLength() const; void setPreSharedKey(const QByteArray &preSharedKey); QByteArray preSharedKey() const; int maximumPreSharedKeyLength() const; }; %End %If (PyQt_SSL) bool operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End %If (PyQt_SSL) bool operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.264112 PyQt6-6.6.1/sip/QtNetwork/qsslserver.sip0000644000076500000240000000414614532160401017046 0ustar00philstaff// qsslserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_4_0 -) %If (PyQt_SSL) class QSslServer : QTcpServer { %TypeHeaderCode #include %End public: explicit QSslServer(QObject *parent /TransferThis/ = 0); virtual ~QSslServer(); void setSslConfiguration(const QSslConfiguration &sslConfiguration); QSslConfiguration sslConfiguration() const; void setHandshakeTimeout(int timeout); int handshakeTimeout() const; signals: void sslErrors(QSslSocket *socket, const QList &errors); void peerVerifyError(QSslSocket *socket, const QSslError &error); void errorOccurred(QSslSocket *socket, QAbstractSocket::SocketError error); void preSharedKeyAuthenticationRequired(QSslSocket *socket, QSslPreSharedKeyAuthenticator *authenticator); void alertSent(QSslSocket *socket, QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); void alertReceived(QSslSocket *socket, QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); void handshakeInterruptedOnError(QSslSocket *socket, const QSslError &error); void startedEncryptionHandshake(QSslSocket *socket); protected: virtual void incomingConnection(qintptr socket); }; %End %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.288577 PyQt6-6.6.1/sip/QtNetwork/qsslsocket.sip0000644000076500000240000002065514532160401017033 0ustar00philstaff// qsslsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_SSL) class QSslSocket : QTcpSocket { %TypeHeaderCode #include %End public: enum SslMode { UnencryptedMode, SslClientMode, SslServerMode, }; explicit QSslSocket(QObject *parent /TransferThis/ = 0); virtual ~QSslSocket(); void connectToHostEncrypted(const QString &hostName, quint16 port, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; void connectToHostEncrypted(const QString &hostName, quint16 port, const QString &sslPeerName, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState state = QAbstractSocket::ConnectedState, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite); QSslSocket::SslMode mode() const; bool isEncrypted() const; QSsl::SslProtocol protocol() const; void setProtocol(QSsl::SslProtocol protocol); virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual void close(); virtual bool atEnd() const; void setLocalCertificate(const QSslCertificate &certificate); void setLocalCertificate(const QString &path, QSsl::EncodingFormat format = QSsl::Pem); QSslCertificate localCertificate() const; QSslCertificate peerCertificate() const; QList peerCertificateChain() const; QSslCipher sessionCipher() const; void setPrivateKey(const QSslKey &key); void setPrivateKey(const QString &fileName, QSsl::KeyAlgorithm algorithm = QSsl::Rsa, QSsl::EncodingFormat format = QSsl::Pem, const QByteArray &passPhrase = QByteArray()); QSslKey privateKey() const; virtual bool waitForConnected(int msecs = 30000) /ReleaseGIL/; bool waitForEncrypted(int msecs = 30000) /ReleaseGIL/; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; virtual bool waitForDisconnected(int msecs = 30000) /ReleaseGIL/; static bool supportsSsl(); public slots: void startClientEncryption(); void startServerEncryption(); void ignoreSslErrors(); signals: void encrypted(); void sslErrors(const QList &errors); void modeChanged(QSslSocket::SslMode newMode); void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxlen)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSslSocket::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(SIP_PYBUFFER) /ReleaseGIL/ [qint64 (const char *data, qint64 len)]; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = sipSelfWasArg ? sipCpp->QSslSocket::writeData(reinterpret_cast(bi.bi_buf), bi.bi_len) : sipCpp->writeData(reinterpret_cast(bi.bi_buf), bi.bi_len); #else sipRes = sipCpp->sipProtectVirt_writeData(sipSelfWasArg, reinterpret_cast(bi.bi_buf), bi.bi_len); #endif Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End virtual qint64 skipData(qint64 maxSize) /ReleaseGIL/; public: enum PeerVerifyMode { VerifyNone, QueryPeer, VerifyPeer, AutoVerifyPeer, }; QSslSocket::PeerVerifyMode peerVerifyMode() const; void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); int peerVerifyDepth() const; void setPeerVerifyDepth(int depth); virtual void setReadBufferSize(qint64 size); qint64 encryptedBytesAvailable() const; qint64 encryptedBytesToWrite() const; QSslConfiguration sslConfiguration() const; void setSslConfiguration(const QSslConfiguration &config); signals: void peerVerifyError(const QSslError &error); void encryptedBytesWritten(qint64 totalBytes); void newSessionTicketReceived(); public: virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value); virtual QVariant socketOption(QAbstractSocket::SocketOption option); void ignoreSslErrors(const QList &errors); QString peerVerifyName() const; void setPeerVerifyName(const QString &hostName); virtual void resume() /ReleaseGIL/; virtual void connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::AnyIPProtocol) /ReleaseGIL/; virtual void disconnectFromHost() /ReleaseGIL/; static long sslLibraryVersionNumber(); static QString sslLibraryVersionString(); void setLocalCertificateChain(const QList &localChain); QList localCertificateChain() const; QSsl::SslProtocol sessionProtocol() const; static long sslLibraryBuildVersionNumber(); static QString sslLibraryBuildVersionString(); QList ocspResponses() const; QList sslHandshakeErrors() const; void continueInterruptedHandshake(); signals: void alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); void alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); void handshakeInterruptedOnError(const QSslError &error); public: %If (Qt_6_1_0 -) static QList availableBackends(); %End %If (Qt_6_1_0 -) static QString activeBackend(); %End %If (Qt_6_1_0 -) static bool setActiveBackend(const QString &backendName); %End %If (Qt_6_1_0 -) static QList supportedProtocols(const QString &backendName = {}); %End %If (Qt_6_1_0 -) static bool isProtocolSupported(QSsl::SslProtocol protocol, const QString &backendName = {}); %End %If (Qt_6_1_0 -) static QList implementedClasses(const QString &backendName = {}); %End %If (Qt_6_1_0 -) static bool isClassImplemented(QSsl::ImplementedClass cl, const QString &backendName = {}); %End %If (Qt_6_1_0 -) static QList supportedFeatures(const QString &backendName = {}); %End %If (Qt_6_1_0 -) static bool isFeatureSupported(QSsl::SupportedFeature feat, const QString &backendName = {}); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2854004 PyQt6-6.6.1/sip/QtNetwork/qtcpserver.sip0000644000076500000240000000444314532160401017033 0ustar00philstaff// qtcpserver.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpServer : QObject { %TypeHeaderCode #include %End public: explicit QTcpServer(QObject *parent /TransferThis/ = 0); virtual ~QTcpServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; qintptr socketDescriptor() const; bool setSocketDescriptor(qintptr socketDescriptor); bool waitForNewConnection(int msecs = 0, bool *timedOut = 0) /ReleaseGIL/; virtual bool hasPendingConnections() const; virtual QTcpSocket *nextPendingConnection(); QAbstractSocket::SocketError serverError() const; QString errorString() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; void pauseAccepting(); void resumeAccepting(); protected: virtual void incomingConnection(qintptr handle); void addPendingConnection(QTcpSocket *socket); signals: void newConnection(); void acceptError(QAbstractSocket::SocketError socketError); public: %If (Qt_6_3_0 -) void setListenBacklogSize(int size); %End %If (Qt_6_3_0 -) int listenBacklogSize() const; %End signals: %If (Qt_6_4_0 -) void pendingConnectionAvailable(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2636752 PyQt6-6.6.1/sip/QtNetwork/qtcpsocket.sip0000644000076500000240000000215614532160401017014 0ustar00philstaff// qtcpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTcpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QTcpSocket(QObject *parent /TransferThis/ = 0); virtual ~QTcpSocket(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2891667 PyQt6-6.6.1/sip/QtNetwork/qudpsocket.sip0000644000076500000240000000624314532160401017017 0ustar00philstaff// qudpsocket.sip generated by MetaSIP // // This file is part of the QtNetwork Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUdpSocket : QAbstractSocket { %TypeHeaderCode #include %End public: explicit QUdpSocket(QObject *parent /TransferThis/ = 0); virtual ~QUdpSocket(); bool hasPendingDatagrams() const; qint64 pendingDatagramSize() const; SIP_PYOBJECT readDatagram(qint64 maxlen, QHostAddress *host /Out/ = 0, quint16 *port = 0) /TypeHint="bytes",ReleaseGIL/; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS len = sipCpp->readDatagram(s, a0, a1, &a2); Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End QNetworkDatagram receiveDatagram(qint64 maxSize = -1) /ReleaseGIL/; qint64 writeDatagram(SIP_PYBUFFER, const QHostAddress &, quint16) /ReleaseGIL/; %MethodCode sipBufferInfoDef bi; if (sipGetBufferInfo(a0, &bi) > 0) { Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->writeDatagram(reinterpret_cast(bi.bi_buf), bi.bi_len, *a1, a2); Py_END_ALLOW_THREADS sipReleaseBufferInfo(&bi); } else { sipIsErr = 1; } %End qint64 writeDatagram(const QNetworkDatagram &datagram) /ReleaseGIL/; bool joinMulticastGroup(const QHostAddress &groupAddress); bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); bool leaveMulticastGroup(const QHostAddress &groupAddress); bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface); QNetworkInterface multicastInterface() const; void setMulticastInterface(const QNetworkInterface &iface); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5814843 PyQt6-6.6.1/sip/QtNfc/0000755000076500000240000000000014532160403013172 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4247112 PyQt6-6.6.1/sip/QtNfc/QtNfcmod.sip0000644000076500000240000000414214532160401015421 0ustar00philstaff// QtNfcmod.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtNfc, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qndeffilter.sip %Include qndefmessage.sip %Include qndefnfcsmartposterrecord.sip %Include qndefnfctextrecord.sip %Include qndefnfcurirecord.sip %Include qndefrecord.sip %Include qnearfieldmanager.sip %Include qnearfieldtarget.sip ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.42714 PyQt6-6.6.1/sip/QtNfc/qndeffilter.sip0000644000076500000240000000335414532160401016215 0ustar00philstaff// qndeffilter.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefFilter { %TypeHeaderCode #include %End public: QNdefFilter(); QNdefFilter(const QNdefFilter &other); ~QNdefFilter(); void clear(); void setOrderMatch(bool on); bool orderMatch() const; struct Record { %TypeHeaderCode #include %End QNdefRecord::TypeNameFormat typeNameFormat; QByteArray type; unsigned int minimum; unsigned int maximum; }; bool appendRecord(const QNdefFilter::Record &record); bool appendRecord(QNdefRecord::TypeNameFormat typeNameFormat, const QByteArray &type, unsigned int min = 1, unsigned int max = 1); qsizetype recordCount() const /__len__/; QNdefFilter::Record recordAt(qsizetype i) const; bool match(const QNdefMessage &message) const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.425213 PyQt6-6.6.1/sip/QtNfc/qndefmessage.sip0000644000076500000240000000421114532160401016345 0ustar00philstaff// qndefmessage.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefMessage { %TypeHeaderCode #include %End public: QNdefMessage(); explicit QNdefMessage(const QNdefRecord &record); QNdefMessage(const QNdefMessage &message); QNdefMessage(const QList &records); bool operator==(const QNdefMessage &other) const; QByteArray toByteArray() const; Py_ssize_t __len__() const; %MethodCode sipRes = sipCpp->count(); %End QNdefRecord __getitem__(int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QNdefRecord(sipCpp->at((int)idx)); %End void __setitem__(int i, const QNdefRecord &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End static QNdefMessage fromByteArray(const QByteArray &message); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4243116 PyQt6-6.6.1/sip/QtNfc/qndefnfcsmartposterrecord.sip0000644000076500000240000000642714532160401021205 0ustar00philstaff// qndefnfcsmartposterrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefNfcIconRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcIconRecord(); QNdefNfcIconRecord(const QNdefRecord &other); void setData(const QByteArray &data); QByteArray data() const; }; %End %If (Qt_6_2_0 -) class QNdefNfcSmartPosterRecord : QNdefRecord { %TypeHeaderCode #include %End public: enum Action { UnspecifiedAction, DoAction, SaveAction, EditAction, }; QNdefNfcSmartPosterRecord(); QNdefNfcSmartPosterRecord(const QNdefNfcSmartPosterRecord &other); QNdefNfcSmartPosterRecord(const QNdefRecord &other); ~QNdefNfcSmartPosterRecord(); void setPayload(const QByteArray &payload); bool hasTitle(const QString &locale = QString()) const; bool hasAction() const; bool hasIcon(const QByteArray &mimetype = QByteArray()) const; bool hasSize() const; bool hasTypeInfo() const; qsizetype titleCount() const; QString title(const QString &locale = QString()) const; QNdefNfcTextRecord titleRecord(qsizetype index) const; QList titleRecords() const; bool addTitle(const QNdefNfcTextRecord &text); bool addTitle(const QString &text, const QString &locale, QNdefNfcTextRecord::Encoding encoding); bool removeTitle(const QNdefNfcTextRecord &text); bool removeTitle(const QString &locale); void setTitles(const QList &titles); QUrl uri() const; QNdefNfcUriRecord uriRecord() const; void setUri(const QNdefNfcUriRecord &url); void setUri(const QUrl &url); QNdefNfcSmartPosterRecord::Action action() const; void setAction(QNdefNfcSmartPosterRecord::Action act); qsizetype iconCount() const; QByteArray icon(const QByteArray &mimetype = QByteArray()) const; QNdefNfcIconRecord iconRecord(qsizetype index) const; QList iconRecords() const; void addIcon(const QNdefNfcIconRecord &icon); void addIcon(const QByteArray &type, const QByteArray &data); bool removeIcon(const QNdefNfcIconRecord &icon); bool removeIcon(const QByteArray &type); void setIcons(const QList &icons); quint32 size() const; void setSize(quint32 size); QString typeInfo() const; void setTypeInfo(const QString &type); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.425648 PyQt6-6.6.1/sip/QtNfc/qndefnfctextrecord.sip0000644000076500000240000000267714532160401017611 0ustar00philstaff// qndefnfctextrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefNfcTextRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcTextRecord(); QNdefNfcTextRecord(const QNdefRecord &other); QString locale() const; void setLocale(const QString &locale); QString text() const; void setText(const QString text); enum Encoding { Utf8, Utf16, }; QNdefNfcTextRecord::Encoding encoding() const; void setEncoding(QNdefNfcTextRecord::Encoding encoding); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4234774 PyQt6-6.6.1/sip/QtNfc/qndefnfcurirecord.sip0000644000076500000240000000227514532160401017416 0ustar00philstaff// qndefnfcurirecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefNfcUriRecord : QNdefRecord { %TypeHeaderCode #include %End public: QNdefNfcUriRecord(); QNdefNfcUriRecord(const QNdefRecord &other); QUrl uri() const; void setUri(const QUrl &uri); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.422462 PyQt6-6.6.1/sip/QtNfc/qndefrecord.sip0000644000076500000240000000475014532160401016207 0ustar00philstaff// qndefrecord.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNdefRecord { %TypeHeaderCode #include %End %ConvertToSubClassCode QByteArray ndef_type = sipCpp->type(); switch (sipCpp->typeNameFormat()) { case QNdefRecord::NfcRtd: if (ndef_type == "Sp") sipType = sipType_QNdefNfcSmartPosterRecord; else if (ndef_type == "T") sipType = sipType_QNdefNfcTextRecord; else if (ndef_type == "U") sipType = sipType_QNdefNfcUriRecord; else sipType = 0; break; case QNdefRecord::Mime: if (ndef_type == "") sipType = sipType_QNdefNfcIconRecord; else sipType = 0; break; default: sipType = 0; } %End public: enum TypeNameFormat { Empty, NfcRtd, Mime, Uri, ExternalRtd, Unknown, }; QNdefRecord(); QNdefRecord(const QNdefRecord &other); ~QNdefRecord(); void setTypeNameFormat(QNdefRecord::TypeNameFormat typeNameFormat); QNdefRecord::TypeNameFormat typeNameFormat() const; void setType(const QByteArray &type); QByteArray type() const; void setId(const QByteArray &id); QByteArray id() const; void setPayload(const QByteArray &payload); QByteArray payload() const; bool isEmpty() const; void clear(); bool operator==(const QNdefRecord &other) const; bool operator!=(const QNdefRecord &other) const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.42309 PyQt6-6.6.1/sip/QtNfc/qnearfieldmanager.sip0000644000076500000240000000570614532160401017362 0ustar00philstaff// qnearfieldmanager.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNearFieldManager : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QNearFieldManager, &sipType_QNearFieldManager, -1, 1}, {sipName_QNearFieldTarget, &sipType_QNearFieldTarget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QNearFieldManager(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldManager(); bool startTargetDetection(QNearFieldTarget::AccessMethod accessMethod); void stopTargetDetection(const QString &errorMessage = QString()); signals: void targetDetected(QNearFieldTarget *target); void targetLost(QNearFieldTarget *target); void targetDetectionStopped(); public: enum class AdapterState { Offline, TurningOn, Online, TurningOff, }; bool isSupported(QNearFieldTarget::AccessMethod accessMethod = QNearFieldTarget::AnyAccess) const; signals: void adapterStateChanged(QNearFieldManager::AdapterState state); public: bool isEnabled() const; void setUserInformation(const QString &message); }; %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qtnfc_get_pyqtslot_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt6_qtnfc_get_pyqtslot_parts_t pyqt6_qtnfc_get_pyqtslot_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtnfc_get_pyqtslot_parts_t pyqt6_qtnfc_get_pyqtslot_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtnfc_get_pyqtslot_parts = (pyqt6_qtnfc_get_pyqtslot_parts_t)sipImportSymbol("pyqt6_get_pyqtslot_parts"); Q_ASSERT(pyqt6_qtnfc_get_pyqtslot_parts); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4266808 PyQt6-6.6.1/sip/QtNfc/qnearfieldtarget.sip0000644000076500000240000000626214532160401017234 0ustar00philstaff// qnearfieldtarget.sip generated by MetaSIP // // This file is part of the QtNfc Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNearFieldTarget : QObject { %TypeHeaderCode #include %End public: enum Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, NfcTagType4A, NfcTagType4B, MifareTag, }; enum AccessMethod /BaseType=Flag/ { UnknownAccess, NdefAccess, TagTypeSpecificAccess, AnyAccess, }; typedef QFlags AccessMethods; enum Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, ChecksumMismatchError, InvalidParametersError, NdefReadError, NdefWriteError, CommandError, ConnectionError, TimeoutError, }; class RequestId { %TypeHeaderCode #include %End public: RequestId(); RequestId(const QNearFieldTarget::RequestId &other); ~RequestId(); bool isValid() const; int refCount() const; bool operator<(const QNearFieldTarget::RequestId &other) const; bool operator==(const QNearFieldTarget::RequestId &other) const; bool operator!=(const QNearFieldTarget::RequestId &other) const; }; explicit QNearFieldTarget(QObject *parent /TransferThis/ = 0); virtual ~QNearFieldTarget(); QByteArray uid() const; QNearFieldTarget::Type type() const; QNearFieldTarget::AccessMethods accessMethods() const; bool hasNdefMessage(); QNearFieldTarget::RequestId readNdefMessages(); QNearFieldTarget::RequestId writeNdefMessages(const QList &messages); QNearFieldTarget::RequestId sendCommand(const QByteArray &command); bool waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000) /ReleaseGIL/; QVariant requestResponse(const QNearFieldTarget::RequestId &id) const; signals: void disconnected(); void ndefMessageRead(const QNdefMessage &message); void requestCompleted(const QNearFieldTarget::RequestId &id); void error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id); public: bool disconnect(); int maxCommandLength() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4721918 PyQt6-6.6.1/sip/QtOpenGL/0000755000076500000240000000000014532160402013607 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2218633 PyQt6-6.6.1/sip/QtOpenGL/QtOpenGLmod.sip0000644000076500000240000000507214532160401016460 0ustar00philstaff// QtOpenGLmod.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtOpenGL, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qopenglbuffer.sip %Include qopengldebug.sip %Include qopenglframebufferobject.sip %Include qopenglpaintdevice.sip %Include qopenglpixeltransferoptions.sip %Include qopenglshaderprogram.sip %Include qopengltexture.sip %Include qopengltextureblitter.sip %Include qopengltimerquery.sip %Include qopenglversionfunctions.sip %Include qopenglversionfunctionsfactory.sip %Include qopenglvertexarrayobject.sip %Include qopenglwindow.sip %Include qopenglfunctions_2_0.sip %Include qopenglfunctions_2_1.sip %Include qopenglfunctions_4_1_core.sip %Include qopenglfunctions_es2.sip %Include qopenglversionprofile.sip %Include qpyopengl_qlist.sip %Include qpyopengl_std_pair.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2213755 PyQt6-6.6.1/sip/QtOpenGL/qopenglbuffer.sip0000644000076500000240000000512514532160401017165 0ustar00philstaff// qopenglbuffer.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLBuffer { %TypeHeaderCode #include %End public: enum Type { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer, }; QOpenGLBuffer(); explicit QOpenGLBuffer(QOpenGLBuffer::Type type); QOpenGLBuffer(const QOpenGLBuffer &other); ~QOpenGLBuffer(); enum UsagePattern { StreamDraw, StreamRead, StreamCopy, StaticDraw, StaticRead, StaticCopy, DynamicDraw, DynamicRead, DynamicCopy, }; enum Access { ReadOnly, WriteOnly, ReadWrite, }; QOpenGLBuffer::Type type() const; QOpenGLBuffer::UsagePattern usagePattern() const; void setUsagePattern(QOpenGLBuffer::UsagePattern value); bool create(); bool isCreated() const; void destroy(); bool bind(); void release(); static void release(QOpenGLBuffer::Type type); GLuint bufferId() const; int size() const /__len__/; bool read(int offset, void *data, int count); void write(int offset, const void *data, int count); void allocate(const void *data, int count); void allocate(int count); void *map(QOpenGLBuffer::Access access); bool unmap(); enum RangeAccessFlag /BaseType=Flag/ { RangeRead, RangeWrite, RangeInvalidate, RangeInvalidateBuffer, RangeFlushExplicit, RangeUnsynchronized, }; typedef QFlags RangeAccessFlags; void *mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access); %If (Qt_6_5_0 -) void swap(QOpenGLBuffer &other); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.220727 PyQt6-6.6.1/sip/QtOpenGL/qopengldebug.sip0000644000076500000240000001343114532160401017001 0ustar00philstaff// qopengldebug.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLDebugMessage { %TypeHeaderCode #include %End public: enum Source /BaseType=Flag/ { InvalidSource, APISource, WindowSystemSource, ShaderCompilerSource, ThirdPartySource, ApplicationSource, OtherSource, AnySource, }; typedef QFlags Sources; enum Type /BaseType=Flag/ { InvalidType, ErrorType, DeprecatedBehaviorType, UndefinedBehaviorType, PortabilityType, PerformanceType, OtherType, MarkerType, GroupPushType, GroupPopType, AnyType, }; typedef QFlags Types; enum Severity /BaseType=Flag/ { InvalidSeverity, HighSeverity, MediumSeverity, LowSeverity, NotificationSeverity, AnySeverity, }; typedef QFlags Severities; QOpenGLDebugMessage(); QOpenGLDebugMessage(const QOpenGLDebugMessage &debugMessage); ~QOpenGLDebugMessage(); void swap(QOpenGLDebugMessage &debugMessage /Constrained/); QOpenGLDebugMessage::Source source() const; QOpenGLDebugMessage::Type type() const; QOpenGLDebugMessage::Severity severity() const; GLuint id() const; QString message() const; static QOpenGLDebugMessage createApplicationMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); static QOpenGLDebugMessage createThirdPartyMessage(const QString &text, GLuint id = 0, QOpenGLDebugMessage::Severity severity = QOpenGLDebugMessage::NotificationSeverity, QOpenGLDebugMessage::Type type = QOpenGLDebugMessage::OtherType); bool operator==(const QOpenGLDebugMessage &debugMessage) const; bool operator!=(const QOpenGLDebugMessage &debugMessage) const; }; class QOpenGLDebugLogger : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QOpenGLDebugLogger, &sipType_QOpenGLDebugLogger, -1, 1}, {sipName_QOpenGLShader, &sipType_QOpenGLShader, -1, 2}, {sipName_QOpenGLShaderProgram, &sipType_QOpenGLShaderProgram, -1, 3}, #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) {sipName_QOpenGLTimeMonitor, &sipType_QOpenGLTimeMonitor, -1, 4}, #else {0, 0, -1, 4}, #endif #if !defined(SIP_FEATURE_PyQt_OpenGL_ES2) {sipName_QOpenGLTimerQuery, &sipType_QOpenGLTimerQuery, -1, 5}, #else {0, 0, -1, 5}, #endif {sipName_QOpenGLVertexArrayObject, &sipType_QOpenGLVertexArrayObject, -1, 6}, {sipName_QOpenGLWindow, &sipType_QOpenGLWindow, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum LoggingMode { AsynchronousLogging, SynchronousLogging, }; explicit QOpenGLDebugLogger(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLDebugLogger(); bool initialize(); bool isLogging() const; QOpenGLDebugLogger::LoggingMode loggingMode() const; qint64 maximumMessageLength() const; void pushGroup(const QString &name, GLuint id = 0, QOpenGLDebugMessage::Source source = QOpenGLDebugMessage::ApplicationSource); void popGroup(); void enableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); void enableMessages(const QList &ids, QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); void disableMessages(QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType, QOpenGLDebugMessage::Severities severities = QOpenGLDebugMessage::AnySeverity); void disableMessages(const QList &ids, QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource, QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType); QList loggedMessages() const; public slots: void logMessage(const QOpenGLDebugMessage &debugMessage); void startLogging(QOpenGLDebugLogger::LoggingMode loggingMode = QOpenGLDebugLogger::AsynchronousLogging); void stopLogging(); signals: void messageLogged(const QOpenGLDebugMessage &debugMessage); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1938214 PyQt6-6.6.1/sip/QtOpenGL/qopenglframebufferobject.sip0000644000076500000240000001173214532160401021370 0ustar00philstaff// qopenglframebufferobject.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLFramebufferObject { %TypeHeaderCode #include %End %TypeCode // The defaults are different for desktop OpenGL and OpenGL/ES so pretend the // latter is the former. #if defined(QT_OPENGL_ES) #undef GL_RGBA8 #define GL_RGBA8 GL_RGBA #endif %End public: enum Attachment { NoAttachment, CombinedDepthStencil, Depth, }; QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D); QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internal_format = GL_RGBA8); QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format); QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format); virtual ~QOpenGLFramebufferObject(); QOpenGLFramebufferObjectFormat format() const; bool isValid() const; bool isBound() const; bool bind(); bool release(); int width() const; int height() const; GLuint texture() const; QList textures() const; QSize size() const; QImage toImage(bool flipped = true) const; QImage toImage(bool flipped, int colorAttachmentIndex) const; QOpenGLFramebufferObject::Attachment attachment() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); GLuint handle() const; static bool bindDefault(); static bool hasOpenGLFramebufferObjects(); static bool hasOpenGLFramebufferBlit(); enum FramebufferRestorePolicy { DontRestoreFramebufferBinding, RestoreFramebufferBindingToDefault, RestoreFrameBufferBinding, }; static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); static void blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST); static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex); static void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy); GLuint takeTexture(); GLuint takeTexture(int colorAttachmentIndex); void addColorAttachment(const QSize &size, GLenum internal_format = 0); void addColorAttachment(int width, int height, GLenum internal_format = 0); QList sizes() const; private: QOpenGLFramebufferObject(const QOpenGLFramebufferObject &); }; class QOpenGLFramebufferObjectFormat { %TypeHeaderCode #include %End public: QOpenGLFramebufferObjectFormat(); QOpenGLFramebufferObjectFormat(const QOpenGLFramebufferObjectFormat &other); ~QOpenGLFramebufferObjectFormat(); void setSamples(int samples); int samples() const; void setMipmap(bool enabled); bool mipmap() const; void setAttachment(QOpenGLFramebufferObject::Attachment attachment); QOpenGLFramebufferObject::Attachment attachment() const; void setTextureTarget(GLenum target); GLenum textureTarget() const; void setInternalTextureFormat(GLenum internalTextureFormat); GLenum internalTextureFormat() const; bool operator==(const QOpenGLFramebufferObjectFormat &other) const; bool operator!=(const QOpenGLFramebufferObjectFormat &other) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2068548 PyQt6-6.6.1/sip/QtOpenGL/qopenglfunctions_2_0.sip0000644000076500000240000033124114532160401020365 0ustar00philstaff// qopenglfunctions_2_0.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (!PyQt_OpenGL_ES2) class QOpenGLFunctions_2_0 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_0(); bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End SIP_PYOBJECT glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) /TypeHint="Union[Tuple[float, ...], Tuple[int, ...]]"/; %MethodCode int components; switch (a4) { case GL_BGR: case GL_RGB: { components = 3; break; } case GL_BGRA: case GL_RGBA: { components = 4; break; } case GL_RED: case GL_GREEN: case GL_BLUE: case GL_ALPHA: case GL_DEPTH_COMPONENT: case GL_STENCIL_INDEX: case GL_DEPTH_STENCIL: { components = 1; break; } default: components = 0; } Py_ssize_t length = components * a2 * a3; switch (a5) { case GL_FLOAT: { GLfloat *data = new GLfloat[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLfloat(&sipIsErr, data, length); delete [] data; break; } case GL_INT: { GLint *data = new GLint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLint(&sipIsErr, data, length); delete [] data; break; } case GL_UNSIGNED_INT: case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_UNSIGNED_INT_24_8: case GL_UNSIGNED_INT_10F_11F_11F_REV: case GL_UNSIGNED_INT_5_9_9_9_REV: { GLuint *data = new GLuint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLuint(&sipIsErr, data, length); delete [] data; break; } case GL_SHORT: case GL_UNSIGNED_SHORT: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: case GL_BYTE: case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_HALF_FLOAT: case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: default: sipIsErr = 1; PyErr_SetString(PyExc_ValueError, "pixel data format not supported"); } %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = PyBytes_FromString(source); delete[] source; } else { sipRes = PyBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = PyLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /TypeHint="Tuple[float, float, float, float]"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2191124 PyQt6-6.6.1/sip/QtOpenGL/qopenglfunctions_2_1.sip0000644000076500000240000033131614532160401020371 0ustar00philstaff// qopenglfunctions_2_1.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (!PyQt_OpenGL_ES2) class QOpenGLFunctions_2_1 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_2_1(); virtual ~QOpenGLFunctions_2_1(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End SIP_PYOBJECT glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) /TypeHint="Union[Tuple[float, ...], Tuple[int, ...]]"/; %MethodCode int components; switch (a4) { case GL_BGR: case GL_RGB: { components = 3; break; } case GL_BGRA: case GL_RGBA: { components = 4; break; } case GL_RED: case GL_GREEN: case GL_BLUE: case GL_ALPHA: case GL_DEPTH_COMPONENT: case GL_STENCIL_INDEX: case GL_DEPTH_STENCIL: { components = 1; break; } default: components = 0; } Py_ssize_t length = components * a2 * a3; switch (a5) { case GL_FLOAT: { GLfloat *data = new GLfloat[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLfloat(&sipIsErr, data, length); delete [] data; break; } case GL_INT: { GLint *data = new GLint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLint(&sipIsErr, data, length); delete [] data; break; } case GL_UNSIGNED_INT: case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_UNSIGNED_INT_24_8: case GL_UNSIGNED_INT_10F_11F_11F_REV: case GL_UNSIGNED_INT_5_9_9_9_REV: { GLuint *data = new GLuint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLuint(&sipIsErr, data, length); delete [] data; break; } case GL_SHORT: case GL_UNSIGNED_SHORT: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: case GL_BYTE: case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_HALF_FLOAT: case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: default: sipIsErr = 1; PyErr_SetString(PyExc_ValueError, "pixel data format not supported"); } %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); void glIndexubv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexubv(reinterpret_cast(array)); %End void glIndexub(GLubyte c); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = PyBytes_FromString(source); delete[] source; } else { sipRes = PyBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = PyLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glTranslatef(GLfloat x, GLfloat y, GLfloat z); void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glScalef(GLfloat x, GLfloat y, GLfloat z); void glScaled(GLdouble x, GLdouble y, GLdouble z); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); void glPushMatrix(); void glPopMatrix(); void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); void glMultMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixd(reinterpret_cast(array)); %End void glMultMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultMatrixf(reinterpret_cast(array)); %End void glMatrixMode(GLenum mode); void glLoadMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixd(reinterpret_cast(array)); %End void glLoadMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadMatrixf(reinterpret_cast(array)); %End void glLoadIdentity(); void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLboolean glIsList(GLuint list); void glGetTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGeniv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGenfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_OBJECT_PLANE: case GL_EYE_PLANE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexGendv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End void glGetTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnviv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_TEXTURE_ENV_COLOR: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetTexEnvfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_SHININESS: nr_params = 1; break; case GL_COLOR_INDEXES: nr_params = 3; break; default: nr_params = 4; } sipCpp->glGetMaterialfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetLightiv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int], Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetLightfv(GLenum light, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float], Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_AMBIENT: case GL_DIFFUSE: case GL_SPECULAR: case GL_POSITION: nr_params = 4; break; case GL_SPOT_DIRECTION: nr_params = 3; break; default: nr_params = 1; } sipCpp->glGetLightfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetClipPlane(GLenum plane, SIP_PYOBJECT *equation /TypeHint="Tuple[float, float, float, float]"/); %MethodCode GLdouble params[4]; sipCpp->glGetClipPlane(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, 4); %End void glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a4, a3, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawPixels(a0, a1, a2, a3, array); %End void glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); void glPixelMapusv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapusv(a0, a1, reinterpret_cast(array)); %End void glPixelMapuiv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapuiv(a0, a1, reinterpret_cast(array)); %End void glPixelMapfv(GLenum map, GLint mapsize, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPixelMapfv(a0, a1, reinterpret_cast(array)); %End void glPixelTransferi(GLenum pname, GLint param); void glPixelTransferf(GLenum pname, GLfloat param); void glPixelZoom(GLfloat xfactor, GLfloat yfactor); void glAlphaFunc(GLenum func, GLfloat ref); void glEvalPoint2(GLint i, GLint j); void glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); void glEvalPoint1(GLint i); void glEvalMesh1(GLenum mode, GLint i1, GLint i2); void glEvalCoord2fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2fv(reinterpret_cast(array)); %End void glEvalCoord2f(GLfloat u, GLfloat v); void glEvalCoord2dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord2dv(reinterpret_cast(array)); %End void glEvalCoord2d(GLdouble u, GLdouble v); void glEvalCoord1fv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1fv(reinterpret_cast(array)); %End void glEvalCoord1f(GLfloat u); void glEvalCoord1dv(SIP_PYOBJECT u /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEvalCoord1dv(reinterpret_cast(array)); %End void glEvalCoord1d(GLdouble u); void glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); void glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid1f(GLint un, GLfloat u1, GLfloat u2); void glMapGrid1d(GLint un, GLdouble u1, GLdouble u2); void glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2f(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap2d(a0, a1, a2, a3, a4, a5, a6, a7, a8, reinterpret_cast(array)); %End void glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1f(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, SIP_PYOBJECT points /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMap1d(a0, a1, a2, a3, a4, reinterpret_cast(array)); %End void glPushAttrib(GLbitfield mask); void glPopAttrib(); void glAccum(GLenum op, GLfloat value); void glIndexMask(GLuint mask); void glClearIndex(GLfloat c); void glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glPushName(GLuint name); void glPopName(); void glPassThrough(GLfloat token); void glLoadName(GLuint name); void glInitNames(); GLint glRenderMode(GLenum mode); void glTexGeniv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGeniv(a0, a1, reinterpret_cast(array)); %End void glTexGeni(GLenum coord, GLenum pname, GLint param); void glTexGenfv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGenfv(a0, a1, reinterpret_cast(array)); %End void glTexGenf(GLenum coord, GLenum pname, GLfloat param); void glTexGendv(GLenum coord, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexGendv(a0, a1, reinterpret_cast(array)); %End void glTexGend(GLenum coord, GLenum pname, GLdouble param); void glTexEnviv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnviv(a0, a1, reinterpret_cast(array)); %End void glTexEnvi(GLenum target, GLenum pname, GLint param); void glTexEnvfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexEnvfv(a0, a1, reinterpret_cast(array)); %End void glTexEnvf(GLenum target, GLenum pname, GLfloat param); void glShadeModel(GLenum mode); void glPolygonStipple(SIP_PYOBJECT mask /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glPolygonStipple(reinterpret_cast(array)); %End void glMaterialiv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialiv(a0, a1, reinterpret_cast(array)); %End void glMateriali(GLenum face, GLenum pname, GLint param); void glMaterialfv(GLenum face, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMaterialfv(a0, a1, reinterpret_cast(array)); %End void glMaterialf(GLenum face, GLenum pname, GLfloat param); void glLineStipple(GLint factor, GLushort pattern); void glLightModeliv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModeliv(a0, reinterpret_cast(array)); %End void glLightModeli(GLenum pname, GLint param); void glLightModelfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightModelfv(a0, reinterpret_cast(array)); %End void glLightModelf(GLenum pname, GLfloat param); void glLightiv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightiv(a0, a1, reinterpret_cast(array)); %End void glLighti(GLenum light, GLenum pname, GLint param); void glLightfv(GLenum light, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLightfv(a0, a1, reinterpret_cast(array)); %End void glLightf(GLenum light, GLenum pname, GLfloat param); void glFogiv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogiv(a0, reinterpret_cast(array)); %End void glFogi(GLenum pname, GLint param); void glFogfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogfv(a0, reinterpret_cast(array)); %End void glFogf(GLenum pname, GLfloat param); void glColorMaterial(GLenum face, GLenum mode); void glClipPlane(GLenum plane, SIP_PYOBJECT equation /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glClipPlane(a0, reinterpret_cast(array)); %End void glVertex4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4sv(reinterpret_cast(array)); %End void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w); void glVertex4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4iv(reinterpret_cast(array)); %End void glVertex4i(GLint x, GLint y, GLint z, GLint w); void glVertex4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4fv(reinterpret_cast(array)); %End void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertex4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex4dv(reinterpret_cast(array)); %End void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertex3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3sv(reinterpret_cast(array)); %End void glVertex3s(GLshort x, GLshort y, GLshort z); void glVertex3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3iv(reinterpret_cast(array)); %End void glVertex3i(GLint x, GLint y, GLint z); void glVertex3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3fv(reinterpret_cast(array)); %End void glVertex3f(GLfloat x, GLfloat y, GLfloat z); void glVertex3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex3dv(reinterpret_cast(array)); %End void glVertex3d(GLdouble x, GLdouble y, GLdouble z); void glVertex2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2sv(reinterpret_cast(array)); %End void glVertex2s(GLshort x, GLshort y); void glVertex2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2iv(reinterpret_cast(array)); %End void glVertex2i(GLint x, GLint y); void glVertex2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2fv(reinterpret_cast(array)); %End void glVertex2f(GLfloat x, GLfloat y); void glVertex2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertex2dv(reinterpret_cast(array)); %End void glVertex2d(GLdouble x, GLdouble y); void glTexCoord4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4sv(reinterpret_cast(array)); %End void glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q); void glTexCoord4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4iv(reinterpret_cast(array)); %End void glTexCoord4i(GLint s, GLint t, GLint r, GLint q); void glTexCoord4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4fv(reinterpret_cast(array)); %End void glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glTexCoord4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord4dv(reinterpret_cast(array)); %End void glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glTexCoord3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3sv(reinterpret_cast(array)); %End void glTexCoord3s(GLshort s, GLshort t, GLshort r); void glTexCoord3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3iv(reinterpret_cast(array)); %End void glTexCoord3i(GLint s, GLint t, GLint r); void glTexCoord3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3fv(reinterpret_cast(array)); %End void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r); void glTexCoord3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord3dv(reinterpret_cast(array)); %End void glTexCoord3d(GLdouble s, GLdouble t, GLdouble r); void glTexCoord2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2sv(reinterpret_cast(array)); %End void glTexCoord2s(GLshort s, GLshort t); void glTexCoord2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2iv(reinterpret_cast(array)); %End void glTexCoord2i(GLint s, GLint t); void glTexCoord2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2fv(reinterpret_cast(array)); %End void glTexCoord2f(GLfloat s, GLfloat t); void glTexCoord2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord2dv(reinterpret_cast(array)); %End void glTexCoord2d(GLdouble s, GLdouble t); void glTexCoord1sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1sv(reinterpret_cast(array)); %End void glTexCoord1s(GLshort s); void glTexCoord1iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1iv(reinterpret_cast(array)); %End void glTexCoord1i(GLint s); void glTexCoord1fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1fv(reinterpret_cast(array)); %End void glTexCoord1f(GLfloat s); void glTexCoord1dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexCoord1dv(reinterpret_cast(array)); %End void glTexCoord1d(GLdouble s); void glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2); void glRecti(GLint x1, GLint y1, GLint x2, GLint y2); void glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); void glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); void glRasterPos4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4sv(reinterpret_cast(array)); %End void glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w); void glRasterPos4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4iv(reinterpret_cast(array)); %End void glRasterPos4i(GLint x, GLint y, GLint z, GLint w); void glRasterPos4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4fv(reinterpret_cast(array)); %End void glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glRasterPos4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos4dv(reinterpret_cast(array)); %End void glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glRasterPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3sv(reinterpret_cast(array)); %End void glRasterPos3s(GLshort x, GLshort y, GLshort z); void glRasterPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3iv(reinterpret_cast(array)); %End void glRasterPos3i(GLint x, GLint y, GLint z); void glRasterPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3fv(reinterpret_cast(array)); %End void glRasterPos3f(GLfloat x, GLfloat y, GLfloat z); void glRasterPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos3dv(reinterpret_cast(array)); %End void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); void glRasterPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2sv(reinterpret_cast(array)); %End void glRasterPos2s(GLshort x, GLshort y); void glRasterPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2iv(reinterpret_cast(array)); %End void glRasterPos2i(GLint x, GLint y); void glRasterPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2fv(reinterpret_cast(array)); %End void glRasterPos2f(GLfloat x, GLfloat y); void glRasterPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glRasterPos2dv(reinterpret_cast(array)); %End void glRasterPos2d(GLdouble x, GLdouble y); void glNormal3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3sv(reinterpret_cast(array)); %End void glNormal3s(GLshort nx, GLshort ny, GLshort nz); void glNormal3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3iv(reinterpret_cast(array)); %End void glNormal3i(GLint nx, GLint ny, GLint nz); void glNormal3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3fv(reinterpret_cast(array)); %End void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3dv(reinterpret_cast(array)); %End void glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz); void glNormal3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glNormal3bv(reinterpret_cast(array)); %End void glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz); void glIndexsv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexsv(reinterpret_cast(array)); %End void glIndexs(GLshort c); void glIndexiv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexiv(reinterpret_cast(array)); %End void glIndexi(GLint c); void glIndexfv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexfv(reinterpret_cast(array)); %End void glIndexf(GLfloat c); void glIndexdv(SIP_PYOBJECT c /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glIndexdv(reinterpret_cast(array)); %End void glIndexd(GLdouble c); void glEnd(); void glEdgeFlagv(SIP_PYOBJECT flag /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glEdgeFlagv(reinterpret_cast(array)); %End void glEdgeFlag(GLboolean flag); void glColor4usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4usv(reinterpret_cast(array)); %End void glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha); void glColor4uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4uiv(reinterpret_cast(array)); %End void glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha); void glColor4ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4ubv(reinterpret_cast(array)); %End void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); void glColor4sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4sv(reinterpret_cast(array)); %End void glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha); void glColor4iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4iv(reinterpret_cast(array)); %End void glColor4i(GLint red, GLint green, GLint blue, GLint alpha); void glColor4fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4fv(reinterpret_cast(array)); %End void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glColor4dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4dv(reinterpret_cast(array)); %End void glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); void glColor4bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor4bv(reinterpret_cast(array)); %End void glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); void glColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3usv(reinterpret_cast(array)); %End void glColor3us(GLushort red, GLushort green, GLushort blue); void glColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3uiv(reinterpret_cast(array)); %End void glColor3ui(GLuint red, GLuint green, GLuint blue); void glColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3ubv(reinterpret_cast(array)); %End void glColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glColor3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3sv(reinterpret_cast(array)); %End void glColor3s(GLshort red, GLshort green, GLshort blue); void glColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3iv(reinterpret_cast(array)); %End void glColor3i(GLint red, GLint green, GLint blue); void glColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3fv(reinterpret_cast(array)); %End void glColor3f(GLfloat red, GLfloat green, GLfloat blue); void glColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3dv(reinterpret_cast(array)); %End void glColor3d(GLdouble red, GLdouble green, GLdouble blue); void glColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glColor3bv(reinterpret_cast(array)); %End void glColor3b(GLbyte red, GLbyte green, GLbyte blue); void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, SIP_PYOBJECT bitmap /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBitmap(a0, a1, a2, a3, a4, a5, reinterpret_cast(array)); %End void glBegin(GLenum mode); void glListBase(GLuint base); GLuint glGenLists(GLsizei range); void glDeleteLists(GLuint list, GLsizei range); void glCallList(GLuint list); void glEndList(); void glNewList(GLuint list, GLenum mode); void glPushClientAttrib(GLbitfield mask); void glPopClientAttrib(); void glVertexPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "VertexPointer", 0); if (sipError == sipErrorNone) sipCpp->glVertexPointer(a0, a1, a2, array); %End void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "TexCoordPointer", 0); if (sipError == sipErrorNone) sipCpp->glTexCoordPointer(a0, a1, a2, array); %End void glNormalPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "NormalPointer", 0); if (sipError == sipErrorNone) sipCpp->glNormalPointer(a0, a1, array); %End void glIndexPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a2, a0, sipSelf, "IndexPointer", 0); if (sipError == sipErrorNone) sipCpp->glIndexPointer(a0, a1, array); %End void glEnableClientState(GLenum array); void glEdgeFlagPointer(GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf, "EdgeFlagPointer", 0); if (sipError == sipErrorNone) sipCpp->glEdgeFlagPointer(a0, array); %End void glDisableClientState(GLenum array); void glColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a3, a1, sipSelf, "ColorPointer", 0); if (sipError == sipErrorNone) sipCpp->glColorPointer(a0, a1, a2, array); %End void glArrayElement(GLint i); void glResetMinmax(GLenum target); void glResetHistogram(GLenum target); void glMinmax(GLenum target, GLenum internalformat, GLboolean sink); void glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); void glGetConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CONVOLUTION_BORDER_COLOR: case GL_CONVOLUTION_FILTER_SCALE: case GL_CONVOLUTION_FILTER_BIAS: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetConvolutionParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glConvolutionParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameteriv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameteri(GLenum target, GLenum pname, GLint params); void glConvolutionParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionParameterfv(a0, a1, reinterpret_cast(array)); %End void glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params); void glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter2D(a0, a1, a2, a3, a4, a5, array); %End void glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT image /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glConvolutionFilter1D(a0, a1, a2, a3, a4, array); %End void glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); void glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorSubTable(a0, a1, a2, a3, a4, array); %End void glGetColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_COLOR_TABLE: case GL_POST_CONVOLUTION_COLOR_TABLE: case GL_POST_COLOR_MATRIX_COLOR_TABLE: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetColorTableParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); void glColorTableParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameteriv(a0, a1, reinterpret_cast(array)); %End void glColorTableParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTableParameterfv(a0, a1, reinterpret_cast(array)); %End void glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT table /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glColorTable(a0, a1, a2, a3, a4, array); %End void glMultTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixd(reinterpret_cast(array)); %End void glMultTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultTransposeMatrixf(reinterpret_cast(array)); %End void glLoadTransposeMatrixd(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixd(reinterpret_cast(array)); %End void glLoadTransposeMatrixf(SIP_PYOBJECT m /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glLoadTransposeMatrixf(reinterpret_cast(array)); %End void glMultiTexCoord4sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); void glMultiTexCoord4iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q); void glMultiTexCoord4fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void glMultiTexCoord4dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord4dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); void glMultiTexCoord3sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r); void glMultiTexCoord3iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r); void glMultiTexCoord3fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r); void glMultiTexCoord3dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord3dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r); void glMultiTexCoord2sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2s(GLenum target, GLshort s, GLshort t); void glMultiTexCoord2iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2i(GLenum target, GLint s, GLint t); void glMultiTexCoord2fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t); void glMultiTexCoord2dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord2dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t); void glMultiTexCoord1sv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1sv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1s(GLenum target, GLshort s); void glMultiTexCoord1iv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1iv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1i(GLenum target, GLint s); void glMultiTexCoord1fv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1fv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1f(GLenum target, GLfloat s); void glMultiTexCoord1dv(GLenum target, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glMultiTexCoord1dv(a0, reinterpret_cast(array)); %End void glMultiTexCoord1d(GLenum target, GLdouble s); void glClientActiveTexture(GLenum texture); void glWindowPos3sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3sv(reinterpret_cast(array)); %End void glWindowPos3s(GLshort x, GLshort y, GLshort z); void glWindowPos3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3iv(reinterpret_cast(array)); %End void glWindowPos3i(GLint x, GLint y, GLint z); void glWindowPos3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3fv(reinterpret_cast(array)); %End void glWindowPos3f(GLfloat x, GLfloat y, GLfloat z); void glWindowPos3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos3dv(reinterpret_cast(array)); %End void glWindowPos3d(GLdouble x, GLdouble y, GLdouble z); void glWindowPos2sv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2sv(reinterpret_cast(array)); %End void glWindowPos2s(GLshort x, GLshort y); void glWindowPos2iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2iv(reinterpret_cast(array)); %End void glWindowPos2i(GLint x, GLint y); void glWindowPos2fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2fv(reinterpret_cast(array)); %End void glWindowPos2f(GLfloat x, GLfloat y); void glWindowPos2dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glWindowPos2dv(reinterpret_cast(array)); %End void glWindowPos2d(GLdouble x, GLdouble y); void glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a1, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColorPointer(a0, a1, a2, array); %End void glSecondaryColor3usv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3usv(reinterpret_cast(array)); %End void glSecondaryColor3us(GLushort red, GLushort green, GLushort blue); void glSecondaryColor3uiv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3uiv(reinterpret_cast(array)); %End void glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue); void glSecondaryColor3ubv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3ubv(reinterpret_cast(array)); %End void glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue); void glSecondaryColor3sv(SIP_PYBUFFER v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3sv(reinterpret_cast(array)); %End void glSecondaryColor3s(GLshort red, GLshort green, GLshort blue); void glSecondaryColor3iv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3iv(reinterpret_cast(array)); %End void glSecondaryColor3i(GLint red, GLint green, GLint blue); void glSecondaryColor3fv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3fv(reinterpret_cast(array)); %End void glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue); void glSecondaryColor3dv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3dv(reinterpret_cast(array)); %End void glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue); void glSecondaryColor3bv(SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glSecondaryColor3bv(reinterpret_cast(array)); %End void glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue); void glFogCoordPointer(GLenum type, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, a0, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordPointer(a0, a1, array); %End void glFogCoorddv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoorddv(reinterpret_cast(array)); %End void glFogCoordd(GLdouble coord); void glFogCoordfv(SIP_PYOBJECT coord /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a0, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glFogCoordfv(reinterpret_cast(array)); %End void glFogCoordf(GLfloat coord); void glVertexAttrib4usv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4usv(a0, reinterpret_cast(array)); %End void glVertexAttrib4uiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4uiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4ubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4ubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4sv(a0, reinterpret_cast(array)); %End void glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); void glVertexAttrib4iv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4iv(a0, reinterpret_cast(array)); %End void glVertexAttrib4fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4dv(a0, reinterpret_cast(array)); %End void glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttrib4bv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4bv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nusv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nusv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nuiv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nuiv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nubv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nubv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); void glVertexAttrib4Nsv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nsv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Niv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Niv(a0, reinterpret_cast(array)); %End void glVertexAttrib4Nbv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4Nbv(a0, reinterpret_cast(array)); %End void glVertexAttrib3sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3sv(a0, reinterpret_cast(array)); %End void glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z); void glVertexAttrib3fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3dv(a0, reinterpret_cast(array)); %End void glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttrib2sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2sv(a0, reinterpret_cast(array)); %End void glVertexAttrib2s(GLuint index, GLshort x, GLshort y); void glVertexAttrib2fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y); void glVertexAttrib2dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2dv(a0, reinterpret_cast(array)); %End void glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttrib1sv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_SHORT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1sv(a0, reinterpret_cast(array)); %End void glVertexAttrib1s(GLuint index, GLshort x); void glVertexAttrib1fv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib1f(GLuint index, GLfloat x); void glVertexAttrib1dv(GLuint index, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_DOUBLE, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1dv(a0, reinterpret_cast(array)); %End void glVertexAttrib1d(GLuint index, GLdouble x); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.188244 PyQt6-6.6.1/sip/QtOpenGL/qopenglfunctions_4_1_core.sip0000644000076500000240000012310714532160401021400 0ustar00philstaff// qopenglfunctions_4_1_core.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (!PyQt_OpenGL_ES2) class QOpenGLFunctions_4_1_Core : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_4_1_Core(); virtual ~QOpenGLFunctions_4_1_Core(); virtual bool initializeOpenGLFunctions(); void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); void glDepthRange(GLdouble nearVal, GLdouble farVal); GLboolean glIsEnabled(GLenum cap); void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="int"/); %MethodCode GLint params[1]; sipCpp->glGetTexLevelParameteriv(a0, a1, a2, params); a3 = qpyopengl_from_GLint(&sipIsErr, params, 1); %End void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, SIP_PYOBJECT *params /TypeHint="float"/); %MethodCode GLfloat params[1]; sipCpp->glGetTexLevelParameterfv(a0, a1, a2, params); a3 = qpyopengl_from_GLfloat(&sipIsErr, params, 1); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End GLenum glGetError(); void glGetDoublev(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLdouble fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLdouble[nr_params]; } else { params = fixed_params; } sipCpp->glGetDoublev(a0, params); a1 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End SIP_PYOBJECT glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) /TypeHint="Union[Tuple[float, ...], Tuple[int, ...]]"/; %MethodCode int components; switch (a4) { case GL_BGR: case GL_RGB: { components = 3; break; } case GL_BGRA: case GL_RGBA: { components = 4; break; } case GL_RED: case GL_GREEN: case GL_BLUE: case GL_ALPHA: case GL_DEPTH_COMPONENT: case GL_STENCIL_INDEX: case GL_DEPTH_STENCIL: { components = 1; break; } default: components = 0; } Py_ssize_t length = components * a2 * a3; switch (a5) { case GL_FLOAT: { GLfloat *data = new GLfloat[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLfloat(&sipIsErr, data, length); delete [] data; break; } case GL_INT: { GLint *data = new GLint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLint(&sipIsErr, data, length); delete [] data; break; } case GL_UNSIGNED_INT: case GL_UNSIGNED_INT_8_8_8_8: case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: case GL_UNSIGNED_INT_24_8: case GL_UNSIGNED_INT_10F_11F_11F_REV: case GL_UNSIGNED_INT_5_9_9_9_REV: { GLuint *data = new GLuint[length]; sipCpp->glReadPixels(a0, a1, a2, a3, a4, a5, data); sipRes = qpyopengl_from_GLuint(&sipIsErr, data, length); delete [] data; break; } case GL_SHORT: case GL_UNSIGNED_SHORT: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_4_4_4_4_REV: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_SHORT_1_5_5_5_REV: case GL_BYTE: case GL_UNSIGNED_BYTE: case GL_UNSIGNED_BYTE_3_3_2: case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_HALF_FLOAT: case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: default: sipIsErr = 1; PyErr_SetString(PyExc_ValueError, "pixel data format not supported"); } %End void glReadBuffer(GLenum mode); void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); void glDepthFunc(GLenum func); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glLogicOp(GLenum opcode); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glFlush(); void glFinish(); void glEnable(GLenum cap); void glDisable(GLenum cap); void glDepthMask(GLboolean flag); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glStencilMask(GLuint mask); void glClearDepth(GLdouble depth); void glClearStencil(GLint s); void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glClear(GLbitfield mask); void glDrawBuffer(GLenum mode); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, a6, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage1D(a0, a1, a2, a3, a4, a5, a6, array); %End void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glPolygonMode(GLenum face, GLenum mode); void glPointSize(GLfloat size); void glLineWidth(GLfloat width); void glHint(GLenum target, GLenum mode); void glFrontFace(GLenum mode); void glCullFace(GLenum mode); GLboolean glIsTexture(GLuint texture); void glGenTextures(GLsizei n, SIP_PYOBJECT *textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glBindTexture(GLenum target, GLuint texture); void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, a5, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); void glPolygonOffset(GLfloat factor, GLfloat units); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); void glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, a9, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a9, a8, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, array); %End void glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a5, a4, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawRangeElements(a0, a1, a2, a3, a4, array); %End void glBlendEquation(GLenum mode); void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); void glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a10, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage3D(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, array); %End void glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a6, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage1D(a0, a1, a2, a3, a4, a5, array); %End void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage3D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glSampleCoverage(GLfloat value, GLboolean invert); void glActiveTexture(GLenum texture); void glPointParameteriv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameteriv(a0, reinterpret_cast(array)); %End void glPointParameteri(GLenum pname, GLint param); void glPointParameterfv(GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glPointParameterfv(a0, reinterpret_cast(array)); %End void glPointParameterf(GLenum pname, GLfloat param); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLboolean glUnmapBuffer(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End GLboolean glIsBuffer(GLuint buffer); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glBindBuffer(GLenum target, GLuint buffer); void glGetQueryiv(GLenum target, GLenum pname, GLint *params); void glEndQuery(GLenum target); void glBeginQuery(GLenum target, GLuint id); GLboolean glIsQuery(GLuint id); void glDeleteQueries(GLsizei n, SIP_PYOBJECT ids /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteQueries(a0, reinterpret_cast(array)); %End void glGenQueries(GLsizei n, SIP_PYOBJECT *ids /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenQueries(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT pointer /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glValidateProgram(GLuint program); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2); void glUniform2i(GLint location, GLint v0, GLint v1); void glUniform1i(GLint location, GLint v0); void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glUniform2f(GLint location, GLfloat v0, GLfloat v1); void glUniform1f(GLint location, GLfloat v0); void glUseProgram(GLuint program); void glLinkProgram(GLuint program); GLboolean glIsShader(GLuint shader); GLboolean glIsProgram(GLuint program); void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribdv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLdouble params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribdv(a0, a1, params); a2 = qpyopengl_from_GLdouble(&sipIsErr, params, nr_params); %End GLint glGetUniformLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = PyBytes_FromString(source); delete[] source; } else { sipRes = PyBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End GLint glGetAttribLocation(GLuint program, const GLchar *name); SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = PyLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glDetachShader(GLuint program, GLuint shader); void glDeleteShader(GLuint shader); void glDeleteProgram(GLuint program); GLuint glCreateShader(GLenum type); GLuint glCreateProgram(); void glCompileShader(GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glAttachShader(GLuint program, GLuint shader); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); void glDrawBuffers(GLsizei n, SIP_PYOBJECT bufs /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawBuffers(a0, reinterpret_cast(array)); %End void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); GLboolean glIsVertexArray(GLuint array); void glBindVertexArray(GLuint array); void glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); void glGenerateMipmap(GLenum target); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLenum glCheckFramebufferStatus(GLenum target); void glBindFramebuffer(GLenum target, GLuint framebuffer); GLboolean glIsFramebuffer(GLuint framebuffer); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); GLboolean glIsRenderbuffer(GLuint renderbuffer); void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2); void glUniform2ui(GLint location, GLuint v0, GLuint v1); void glUniform1ui(GLint location, GLuint v0); void glEndConditionalRender(); void glBeginConditionalRender(GLuint id, GLenum mode); void glClampColor(GLenum target, GLenum clamp); void glBindBufferBase(GLenum target, GLuint index, GLuint buffer); void glEndTransformFeedback(); void glBeginTransformFeedback(GLenum primitiveMode); GLboolean glIsEnabledi(GLenum target, GLuint index); void glDisablei(GLenum target, GLuint index); void glEnablei(GLenum target, GLuint index); void glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); void glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); void glPrimitiveRestartIndex(GLuint index); void glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer); void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); void glSampleMaski(GLuint index, GLbitfield mask); void glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); void glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); void glProvokingVertex(GLenum mode); void glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level); void glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value); void glQueryCounter(GLuint id, GLenum target); void glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param); void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); void glBindSampler(GLuint unit, GLuint sampler); GLboolean glIsSampler(GLuint sampler); void glVertexAttribDivisor(GLuint index, GLuint divisor); void glEndQueryIndexed(GLenum target, GLuint index); void glBeginQueryIndexed(GLenum target, GLuint index, GLuint id); void glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream); void glDrawTransformFeedback(GLenum mode, GLuint id); void glResumeTransformFeedback(); void glPauseTransformFeedback(); GLboolean glIsTransformFeedback(GLuint id); void glBindTransformFeedback(GLenum target, GLuint id); void glPatchParameteri(GLenum pname, GLint value); void glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z); void glUniform2d(GLint location, GLdouble x, GLdouble y); void glUniform1d(GLint location, GLdouble x); void glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBlendFunci(GLuint buf, GLenum src, GLenum dst); void glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha); void glBlendEquationi(GLuint buf, GLenum mode); void glMinSampleShading(GLfloat value); void glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f); void glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); void glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); void glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z); void glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y); void glVertexAttribL1d(GLuint index, GLdouble x); void glValidateProgramPipeline(GLuint pipeline); void glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); void glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); void glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); void glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); void glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); void glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); void glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); void glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); void glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1); void glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1); void glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1); void glProgramUniform1ui(GLuint program, GLint location, GLuint v0); void glProgramUniform1d(GLuint program, GLint location, GLdouble v0); void glProgramUniform1f(GLuint program, GLint location, GLfloat v0); void glProgramUniform1i(GLuint program, GLint location, GLint v0); GLboolean glIsProgramPipeline(GLuint pipeline); void glBindProgramPipeline(GLuint pipeline); void glActiveShaderProgram(GLuint pipeline, GLuint program); void glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); void glProgramParameteri(GLuint program, GLenum pname, GLint value); void glClearDepthf(GLfloat dd); void glDepthRangef(GLfloat n, GLfloat f); void glReleaseShaderCompiler(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2262127 PyQt6-6.6.1/sip/QtOpenGL/qopenglfunctions_es2.sip0000644000076500000240000007043414532160401020502 0ustar00philstaff// qopenglfunctions_es2.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_OpenGL_ES2) class QOpenGLFunctions_ES2 : QAbstractOpenGLFunctions { %TypeHeaderCode #include %End public: QOpenGLFunctions_ES2(); bool initializeOpenGLFunctions(); void glActiveTexture(GLenum texture); void glAttachShader(GLuint program, GLuint shader); void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name); void glBindBuffer(GLenum target, GLuint buffer); void glBindFramebuffer(GLenum target, GLuint framebuffer); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); void glBindTexture(GLenum target, GLuint texture); void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glBlendEquation(GLenum mode); void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glBlendFunc(GLenum sfactor, GLenum dfactor); void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); void glBufferData(GLenum target, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/, GLenum usage); %MethodCode const GLvoid *array; if (a2 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a2, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferData(a0, a1, array, a3); %End void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array; if (a3 == Py_None) array = 0; else array = qpyopengl_value_array(&sipError, a3, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glBufferSubData(a0, a1, a2, array); %End GLenum glCheckFramebufferStatus(GLenum target); void glClear(GLbitfield mask); void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glClearDepthf(GLclampf depth); void glClearStencil(GLint s); void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); void glCompileShader(GLuint shader); void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a7, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexImage2D(a0, a1, a2, a3, a4, a5, a6, array); %End void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, SIP_PYOBJECT data /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, GL_UNSIGNED_BYTE, sipSelf); if (sipError == sipErrorNone) sipCpp->glCompressedTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLuint glCreateProgram(); GLuint glCreateShader(GLenum type); void glCullFace(GLenum mode); void glDeleteBuffers(GLsizei n, SIP_PYOBJECT buffers /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteBuffers(a0, reinterpret_cast(array)); %End void glDeleteFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteFramebuffers(a0, reinterpret_cast(array)); %End void glDeleteProgram(GLuint program); void glDeleteRenderbuffers(GLsizei n, SIP_PYOBJECT renderbuffers); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteRenderbuffers(a0, reinterpret_cast(array)); %End void glDeleteShader(GLuint shader); void glDeleteTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_UNSIGNED_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glDeleteTextures(a0, reinterpret_cast(array)); %End void glDepthFunc(GLenum func); void glDepthMask(GLboolean flag); void glDepthRangef(GLclampf zNear, GLclampf zFar); void glDetachShader(GLuint program, GLuint shader); void glDisable(GLenum cap); void glDisableVertexAttribArray(GLuint index); void glDrawArrays(GLenum mode, GLint first, GLsizei count); void glDrawElements(GLenum mode, GLsizei count, GLenum type, SIP_PYOBJECT indices /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, a2, sipSelf); if (sipError == sipErrorNone) sipCpp->glDrawElements(a0, a1, a2, array); %End void glEnable(GLenum cap); void glEnableVertexAttribArray(GLuint index); void glFinish(); void glFlush(); void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glFrontFace(GLenum mode); void glGenBuffers(GLsizei n, SIP_PYOBJECT *buffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenBuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenerateMipmap(GLenum target); void glGenFramebuffers(GLsizei n, SIP_PYOBJECT framebuffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenFramebuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenRenderbuffers(GLsizei n, SIP_PYOBJECT *renderbuffers /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenRenderbuffers(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End void glGenTextures(GLsizei n, SIP_PYOBJECT textures /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLuint *params = new GLuint[a0]; sipCpp->glGenTextures(a0, params); a1 = qpyopengl_from_GLuint(&sipIsErr, params, a0); delete[] params; %End SIP_PYOBJECT glGetActiveAttrib(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveAttrib(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetActiveUniform(GLuint program, GLuint index) /TypeHint="Tuple[str, int, int]"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_ACTIVE_UNIFORM_MAX_LENGTH, &bufsize); GLchar *name = new GLchar[bufsize]; GLint size; GLenum type; sipCpp->glGetActiveUniform(a0, a1, bufsize, 0, &size, &type, name); sipRes = Py_BuildValue("siI", name, size, type); if (!sipRes) sipIsErr = 1; delete[] name; %End SIP_PYOBJECT glGetAttachedShaders(GLuint program) /TypeHint="Tuple[int, ...]"/; %MethodCode GLint nr_shaders; sipCpp->glGetProgramiv(a0, GL_ATTACHED_SHADERS, &nr_shaders); if (nr_shaders < 1) { sipRes = PyTuple_New(0); } else { GLuint *shaders = new GLuint[nr_shaders]; sipCpp->glGetAttachedShaders(a0, nr_shaders, 0, shaders); sipRes = PyTuple_New(nr_shaders); if (sipRes) { for (GLint i = 0; i < nr_shaders; ++i) { PyObject *itm = PyLong_FromLong(shaders[i]); if (!itm) { Py_DECREF(sipRes); sipRes = 0; break; } PyTuple_SetItem(sipRes, i, itm); } } delete[] shaders; } if (!sipRes) sipIsErr = 1; %End int glGetAttribLocation(GLuint program, const GLchar *name); void glGetBooleanv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[bool, Tuple[bool, ...]]"/); %MethodCode GLboolean fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLboolean[nr_params]; } else { params = fixed_params; } sipCpp->glGetBooleanv(a0, params); a1 = qpyopengl_from_GLboolean(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params); GLenum glGetError(); void glGetFloatv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, ...]]"/); %MethodCode GLfloat fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLfloat[nr_params]; } else { params = fixed_params; } sipCpp->glGetFloatv(a0, params); a1 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params); void glGetIntegerv(GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, ...]]"/); %MethodCode GLint fixed_params[16], *params; GLint nr_params; GLenum query; nr_params = qpyopengl_get(a0, &query); if (nr_params == 0) { sipCpp->glGetIntegerv(query, &nr_params); params = new GLint[nr_params]; } else { params = fixed_params; } sipCpp->glGetIntegerv(a0, params); a1 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); if (params != fixed_params) delete[] params; %End void glGetProgramiv(GLuint program, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int]]"/); %MethodCode GLint params[3]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_COMPUTE_LOCAL_WORK_SIZE) case GL_COMPUTE_LOCAL_WORK_SIZE: nr_params = 3; break; #endif default: nr_params = 1; } sipCpp->glGetProgramiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End SIP_PYOBJECT glGetProgramInfoLog(GLuint program) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetProgramiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetProgramInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params); void glGetShaderiv(GLuint shader, GLenum pname, GLint *params); SIP_PYOBJECT glGetShaderInfoLog(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_INFO_LOG_LENGTH, &bufsize); if (bufsize > 0) { GLchar *log = new GLchar[bufsize]; sipCpp->glGetShaderInfoLog(a0, bufsize, 0, log); sipRes = PyBytes_FromString(log); delete[] log; } else { sipRes = PyBytes_FromString(""); } %End SIP_PYOBJECT glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype) /TypeHint="Tuple[Tuple[int, int], int]"/; %MethodCode GLint range[2], precision; sipCpp->glGetShaderPrecisionFormat(a0, a1, range, &precision); sipRes = Py_BuildValue("(ii)i", (int)range[0], (int)range[1], (int)precision); if (!sipRes) sipIsErr = 1; %End SIP_PYOBJECT glGetShaderSource(GLuint shader) /TypeHint="bytes"/; %MethodCode GLint bufsize; sipCpp->glGetShaderiv(a0, GL_SHADER_SOURCE_LENGTH, &bufsize); if (bufsize > 0) { GLchar *source = new GLchar[bufsize]; sipCpp->glGetShaderSource(a0, bufsize, 0, source); sipRes = PyBytes_FromString(source); delete[] source; } else { sipRes = PyBytes_FromString(""); } %End const char *glGetString(GLenum name); %MethodCode sipRes = reinterpret_cast(sipCpp->glGetString(a0)); %End void glGetTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameterfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { #if defined(GL_TEXTURE_SWIZZLE_RGBA) || defined(GL_TEXTURE_BORDER_COLOR) #if defined(GL_TEXTURE_SWIZZLE_RGBA) case GL_TEXTURE_SWIZZLE_RGBA: #endif #if defined(GL_TEXTURE_BORDER_COLOR) case GL_TEXTURE_BORDER_COLOR: #endif nr_params = 4; break; #endif default: nr_params = 1; } sipCpp->glGetTexParameteriv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End int glGetUniformLocation(GLuint program, const GLchar *name); void glGetVertexAttribfv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[float, Tuple[float, float, float, float]]"/); %MethodCode GLfloat params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribfv(a0, a1, params); a2 = qpyopengl_from_GLfloat(&sipIsErr, params, nr_params); %End void glGetVertexAttribiv(GLuint index, GLenum pname, SIP_PYOBJECT *params /TypeHint="Union[int, Tuple[int, int, int, int]]"/); %MethodCode GLint params[4]; Py_ssize_t nr_params; switch (a1) { case GL_CURRENT_VERTEX_ATTRIB: nr_params = 4; break; default: nr_params = 1; } sipCpp->glGetVertexAttribiv(a0, a1, params); a2 = qpyopengl_from_GLint(&sipIsErr, params, nr_params); %End void glHint(GLenum target, GLenum mode); GLboolean glIsBuffer(GLuint buffer); GLboolean glIsEnabled(GLenum cap); GLboolean glIsFramebuffer(GLuint framebuffer); GLboolean glIsProgram(GLuint program); GLboolean glIsRenderbuffer(GLuint renderbuffer); GLboolean glIsShader(GLuint shader); GLboolean glIsTexture(GLuint texture); void glLineWidth(GLfloat width); void glLinkProgram(GLuint program); void glPixelStorei(GLenum pname, GLint param); void glPolygonOffset(GLfloat factor, GLfloat units); SIP_PYOBJECT glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type) /TypeHint="Union[Tuple[float, ...], Tuple[int, ...]]"/; %MethodCode int components; switch (a4) { case GL_RGB: { components = 3; break; } case GL_RGBA: { components = 4; break; } case GL_ALPHA: { components = 1; break; } default: components = 0; } Py_ssize_t length = components * a2 * a3; switch (a5) { // TODO: Implement array convertors for these formats. case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_4_4_4_4: case GL_UNSIGNED_SHORT_5_5_5_1: case GL_UNSIGNED_BYTE: default: sipIsErr = 1; PyErr_SetString(PyExc_ValueError, "pixel data format not supported"); } %End void glReleaseShaderCompiler(); void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); void glSampleCoverage(GLclampf value, GLboolean invert); void glScissor(GLint x, GLint y, GLsizei width, GLsizei height); void glStencilFunc(GLenum func, GLint ref, GLuint mask); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilMask(GLuint mask); void glStencilMaskSeparate(GLenum face, GLuint mask); void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass); void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glTexParameterf(GLenum target, GLenum pname, GLfloat param); void glTexParameterfv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameterfv(a0, a1, reinterpret_cast(array)); %End void glTexParameteri(GLenum target, GLenum pname, GLint param); void glTexParameteriv(GLenum target, GLenum pname, SIP_PYOBJECT params /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexParameteriv(a0, a1, reinterpret_cast(array)); %End void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, SIP_PYOBJECT pixels /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a8, a7, sipSelf); if (sipError == sipErrorNone) sipCpp->glTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, array); %End void glUniform1f(GLint location, GLfloat x); void glUniform1fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1fv(a0, a1, reinterpret_cast(array)); %End void glUniform1i(GLint location, GLint x); void glUniform1iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform1iv(a0, a1, reinterpret_cast(array)); %End void glUniform2f(GLint location, GLfloat x, GLfloat y); void glUniform2fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2fv(a0, a1, reinterpret_cast(array)); %End void glUniform2i(GLint location, GLint x, GLint y); void glUniform2iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform2iv(a0, a1, reinterpret_cast(array)); %End void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z); void glUniform3fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3fv(a0, a1, reinterpret_cast(array)); %End void glUniform3i(GLint location, GLint x, GLint y, GLint z); void glUniform3iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform3iv(a0, a1, reinterpret_cast(array)); %End void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glUniform4fv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4fv(a0, a1, reinterpret_cast(array)); %End void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w); void glUniform4iv(GLint location, GLsizei count, SIP_PYOBJECT v /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a2, GL_INT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniform4iv(a0, a1, reinterpret_cast(array)); %End void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix2fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix3fv(a0, a1, a2, reinterpret_cast(array)); %End void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, SIP_PYOBJECT value /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a3, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glUniformMatrix4fv(a0, a1, a2, reinterpret_cast(array)); %End void glUseProgram(GLuint program); void glValidateProgram(GLuint program); void glVertexAttrib1f(GLuint indx, GLfloat x); void glVertexAttrib1fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib1fv(a0, reinterpret_cast(array)); %End void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); void glVertexAttrib2fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib2fv(a0, reinterpret_cast(array)); %End void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); void glVertexAttrib3fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib3fv(a0, reinterpret_cast(array)); %End void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void glVertexAttrib4fv(GLuint indx, SIP_PYOBJECT values /TypeHint="PYQT_OPENGL_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array(&sipError, a1, GL_FLOAT, sipSelf); if (sipError == sipErrorNone) sipCpp->glVertexAttrib4fv(a0, reinterpret_cast(array)); %End void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, SIP_PYOBJECT ptr /TypeHint="PYQT_OPENGL_BOUND_ARRAY"/); %MethodCode const GLvoid *array = qpyopengl_value_array_cached(&sipError, a5, a2, sipSelf, "VertexAttribPointer", a0); if (sipError == sipErrorNone) sipCpp->glVertexAttribPointer(a0, a1, a2, a3, a4, array); %End void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1929898 PyQt6-6.6.1/sip/QtOpenGL/qopenglpaintdevice.sip0000644000076500000240000000332714532160401020211 0ustar00philstaff// qopenglpaintdevice.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLPaintDevice : QPaintDevice { %TypeHeaderCode #include %End public: QOpenGLPaintDevice(); explicit QOpenGLPaintDevice(const QSize &size); QOpenGLPaintDevice(int width, int height); virtual ~QOpenGLPaintDevice(); virtual QPaintEngine *paintEngine() const; QOpenGLContext *context() const; QSize size() const; void setSize(const QSize &size); qreal dotsPerMeterX() const; qreal dotsPerMeterY() const; void setDotsPerMeterX(qreal); void setDotsPerMeterY(qreal); void setPaintFlipped(bool flipped); bool paintFlipped() const; virtual void ensureActiveTarget(); void setDevicePixelRatio(qreal devicePixelRatio); protected: virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2267408 PyQt6-6.6.1/sip/QtOpenGL/qopenglpixeltransferoptions.sip0000644000076500000240000000351114532160401022213 0ustar00philstaff// qopenglpixeltransferoptions.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLPixelTransferOptions { %TypeHeaderCode #include %End public: QOpenGLPixelTransferOptions(); QOpenGLPixelTransferOptions(const QOpenGLPixelTransferOptions &); ~QOpenGLPixelTransferOptions(); void swap(QOpenGLPixelTransferOptions &other /Constrained/); void setAlignment(int alignment); int alignment() const; void setSkipImages(int skipImages); int skipImages() const; void setSkipRows(int skipRows); int skipRows() const; void setSkipPixels(int skipPixels); int skipPixels() const; void setImageHeight(int imageHeight); int imageHeight() const; void setRowLength(int rowLength); int rowLength() const; void setLeastSignificantByteFirst(bool lsbFirst); bool isLeastSignificantBitFirst() const; void setSwapBytesEnabled(bool swapBytes); bool isSwapBytesEnabled() const; }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.22926 PyQt6-6.6.1/sip/QtOpenGL/qopenglshaderprogram.sip0000644000076500000240000003703314532160401020555 0ustar00philstaff// qopenglshaderprogram.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLShader : QObject { %TypeHeaderCode #include %End public: enum ShaderTypeBit /BaseType=Flag/ { Vertex, Fragment, Geometry, TessellationControl, TessellationEvaluation, Compute, }; typedef QFlags ShaderType; QOpenGLShader(QOpenGLShader::ShaderType type, QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShader(); QOpenGLShader::ShaderType shaderType() const; bool compileSourceCode(const QByteArray &source); bool compileSourceCode(const QString &source); bool compileSourceFile(const QString &fileName); QByteArray sourceCode() const; bool isCompiled() const; QString log() const; GLuint shaderId() const; static bool hasOpenGLShaders(QOpenGLShader::ShaderType type, QOpenGLContext *context = 0); }; class QOpenGLShaderProgram : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLShaderProgram(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLShaderProgram(); bool addShader(QOpenGLShader *shader); void removeShader(QOpenGLShader *shader); QList shaders() const; bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source); bool addShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source); bool addShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName); void removeAllShaders(); virtual bool link(); bool isLinked() const; QString log() const; bool bind(); void release(); GLuint programId() const; void bindAttributeLocation(const QByteArray &name, int location); void bindAttributeLocation(const QString &name, int location); int attributeLocation(const QByteArray &name) const; int attributeLocation(const QString &name) const; void setAttributeValue(int location, GLfloat value); void setAttributeValue(int location, GLfloat x, GLfloat y); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(int location, const QVector2D &value); void setAttributeValue(int location, const QVector3D &value); void setAttributeValue(int location, const QVector4D &value); void setAttributeValue(int location, const QColor &value); void setAttributeValue(const char *name, GLfloat value); void setAttributeValue(const char *name, GLfloat x, GLfloat y); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setAttributeValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setAttributeValue(const char *name, const QVector2D &value); void setAttributeValue(const char *name, const QVector3D &value); void setAttributeValue(const char *name, const QVector4D &value); void setAttributeValue(const char *name, const QColor &value); void setAttributeArray(int location, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_ATTRIBUTE_ARRAY"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, PyLong_FromLong(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeArray(const char *name, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_ATTRIBUTE_ARRAY"/); %MethodCode const GLfloat *values; int tsize; values = qpyopengl_attribute_array(a1, sipSelf, PyBytes_FromString(a0), &tsize, &sipError); if (values) sipCpp->setAttributeArray(a0, values, tsize); %End void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0); void setAttributeBuffer(const char *name, GLenum type, int offset, int tupleSize, int stride = 0); void enableAttributeArray(int location); void enableAttributeArray(const char *name); void disableAttributeArray(int location); void disableAttributeArray(const char *name); int uniformLocation(const QByteArray &name) const; int uniformLocation(const QString &name) const; void setUniformValue(int location, GLint value /Constrained/); void setUniformValue(int location, GLfloat value /Constrained/); void setUniformValue(int location, GLfloat x, GLfloat y); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(int location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(int location, const QVector2D &value); void setUniformValue(int location, const QVector3D &value); void setUniformValue(int location, const QVector4D &value); void setUniformValue(int location, const QColor &color); void setUniformValue(int location, const QPoint &point); void setUniformValue(int location, const QPointF &point); void setUniformValue(int location, const QSize &size); void setUniformValue(int location, const QSizeF &size); void setUniformValue(int location, const QMatrix2x2 &value); void setUniformValue(int location, const QMatrix2x3 &value); void setUniformValue(int location, const QMatrix2x4 &value); void setUniformValue(int location, const QMatrix3x2 &value); void setUniformValue(int location, const QMatrix3x3 &value); void setUniformValue(int location, const QMatrix3x4 &value); void setUniformValue(int location, const QMatrix4x2 &value); void setUniformValue(int location, const QMatrix4x3 &value); void setUniformValue(int location, const QMatrix4x4 &value); void setUniformValue(int location, const QTransform &value); void setUniformValue(const char *name, GLint value /Constrained/); void setUniformValue(const char *name, GLfloat value /Constrained/); void setUniformValue(const char *name, GLfloat x, GLfloat y); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z); void setUniformValue(const char *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void setUniformValue(const char *name, const QVector2D &value); void setUniformValue(const char *name, const QVector3D &value); void setUniformValue(const char *name, const QVector4D &value); void setUniformValue(const char *name, const QColor &color); void setUniformValue(const char *name, const QPoint &point); void setUniformValue(const char *name, const QPointF &point); void setUniformValue(const char *name, const QSize &size); void setUniformValue(const char *name, const QSizeF &size); void setUniformValue(const char *name, const QMatrix2x2 &value); void setUniformValue(const char *name, const QMatrix2x3 &value); void setUniformValue(const char *name, const QMatrix2x4 &value); void setUniformValue(const char *name, const QMatrix3x2 &value); void setUniformValue(const char *name, const QMatrix3x3 &value); void setUniformValue(const char *name, const QMatrix3x4 &value); void setUniformValue(const char *name, const QMatrix4x2 &value); void setUniformValue(const char *name, const QMatrix4x3 &value); void setUniformValue(const char *name, const QMatrix4x4 &value); void setUniformValue(const char *name, const QTransform &value); void setUniformValueArray(int location, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_UNIFORM_VALUE_ARRAY"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, PyLong_FromLong(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End void setUniformValueArray(const char *name, SIP_PYOBJECT values /TypeHint="PYQT_SHADER_UNIFORM_VALUE_ARRAY"/); %MethodCode const void *values; const sipTypeDef *array_type; int array_len, tsize; values = qpyopengl_uniform_value_array(a1, sipSelf, PyBytes_FromString(a0), &array_type, &array_len, &tsize, &sipError); if (values) { if (array_type == sipType_QVector2D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector3D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QVector4D) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix2x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix3x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x2) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x3) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else if (array_type == sipType_QMatrix4x4) sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len); else sipCpp->setUniformValueArray(a0, reinterpret_cast(values), array_len, tsize); } %End static bool hasOpenGLShaderPrograms(QOpenGLContext *context = 0); int maxGeometryOutputVertices() const; void setPatchVertexCount(int count); int patchVertexCount() const; void setDefaultOuterTessellationLevels(const QList &levels); QList defaultOuterTessellationLevels() const; void setDefaultInnerTessellationLevels(const QList &levels); QList defaultInnerTessellationLevels() const; bool create(); bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QByteArray &source); bool addCacheableShaderFromSourceCode(QOpenGLShader::ShaderType type, const QString &source); bool addCacheableShaderFromSourceFile(QOpenGLShader::ShaderType type, const QString &fileName); }; %ModuleHeaderCode #include "qpyopengl_api.h" %End %InitialisationCode qpyopengl_init(); %End %TypeHintCode # Convenient aliases for complicated OpenGL types. PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float], PyQt6.sip.Buffer, None] PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float], PyQt6.sip.Buffer, int, None] PYQT_SHADER_ATTRIBUTE_ARRAY = typing.Union[typing.Sequence[QtGui.QVector2D], typing.Sequence[QtGui.QVector3D], typing.Sequence[QtGui.QVector4D], typing.Sequence[typing.Sequence[float]]] PYQT_SHADER_UNIFORM_VALUE_ARRAY = typing.Union[ typing.Sequence[QtGui.QVector2D], typing.Sequence[QtGui.QVector3D], typing.Sequence[QtGui.QVector4D], typing.Sequence[QtGui.QMatrix2x2], typing.Sequence[QtGui.QMatrix2x3], typing.Sequence[QtGui.QMatrix2x4], typing.Sequence[QtGui.QMatrix3x2], typing.Sequence[QtGui.QMatrix3x3], typing.Sequence[QtGui.QMatrix3x4], typing.Sequence[QtGui.QMatrix4x2], typing.Sequence[QtGui.QMatrix4x3], typing.Sequence[QtGui.QMatrix4x4], typing.Sequence[typing.Sequence[float]]] %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1923838 PyQt6-6.6.1/sip/QtOpenGL/qopengltexture.sip0000644000076500000240000003522314532160401017416 0ustar00philstaff// qopengltexture.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLTexture { %TypeHeaderCode #include %End public: enum Target { Target1D, Target1DArray, Target2D, Target2DArray, Target3D, TargetCubeMap, TargetCubeMapArray, Target2DMultisample, Target2DMultisampleArray, TargetRectangle, TargetBuffer, }; enum BindingTarget { BindingTarget1D, BindingTarget1DArray, BindingTarget2D, BindingTarget2DArray, BindingTarget3D, BindingTargetCubeMap, BindingTargetCubeMapArray, BindingTarget2DMultisample, BindingTarget2DMultisampleArray, BindingTargetRectangle, BindingTargetBuffer, }; enum MipMapGeneration { GenerateMipMaps, DontGenerateMipMaps, }; enum TextureUnitReset { ResetTextureUnit, DontResetTextureUnit, }; explicit QOpenGLTexture(QOpenGLTexture::Target target); QOpenGLTexture(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); ~QOpenGLTexture(); bool create(); void destroy(); bool isCreated() const; GLuint textureId() const; void bind(); void bind(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); void release(); void release(uint unit, QOpenGLTexture::TextureUnitReset reset = QOpenGLTexture::DontResetTextureUnit); bool isBound() const; bool isBound(uint unit); static GLuint boundTextureId(QOpenGLTexture::BindingTarget target); static GLuint boundTextureId(uint unit, QOpenGLTexture::BindingTarget target); enum TextureFormat { NoFormat, R8_UNorm, RG8_UNorm, RGB8_UNorm, RGBA8_UNorm, R16_UNorm, RG16_UNorm, RGB16_UNorm, RGBA16_UNorm, R8_SNorm, RG8_SNorm, RGB8_SNorm, RGBA8_SNorm, R16_SNorm, RG16_SNorm, RGB16_SNorm, RGBA16_SNorm, R8U, RG8U, RGB8U, RGBA8U, R16U, RG16U, RGB16U, RGBA16U, R32U, RG32U, RGB32U, RGBA32U, R8I, RG8I, RGB8I, RGBA8I, R16I, RG16I, RGB16I, RGBA16I, R32I, RG32I, RGB32I, RGBA32I, R16F, RG16F, RGB16F, RGBA16F, R32F, RG32F, RGB32F, RGBA32F, RGB9E5, RG11B10F, RG3B2, R5G6B5, RGB5A1, RGBA4, RGB10A2, D16, D24, D24S8, D32, D32F, D32FS8X24, RGB_DXT1, RGBA_DXT1, RGBA_DXT3, RGBA_DXT5, R_ATI1N_UNorm, R_ATI1N_SNorm, RG_ATI2N_UNorm, RG_ATI2N_SNorm, RGB_BP_UNSIGNED_FLOAT, RGB_BP_SIGNED_FLOAT, RGB_BP_UNorm, SRGB8, SRGB8_Alpha8, SRGB_DXT1, SRGB_Alpha_DXT1, SRGB_Alpha_DXT3, SRGB_Alpha_DXT5, SRGB_BP_UNorm, DepthFormat, AlphaFormat, RGBFormat, RGBAFormat, LuminanceFormat, LuminanceAlphaFormat, S8, R11_EAC_UNorm, R11_EAC_SNorm, RG11_EAC_UNorm, RG11_EAC_SNorm, RGB8_ETC2, SRGB8_ETC2, RGB8_PunchThrough_Alpha1_ETC2, SRGB8_PunchThrough_Alpha1_ETC2, RGBA8_ETC2_EAC, SRGB8_Alpha8_ETC2_EAC, RGB8_ETC1, RGBA_ASTC_4x4, RGBA_ASTC_5x4, RGBA_ASTC_5x5, RGBA_ASTC_6x5, RGBA_ASTC_6x6, RGBA_ASTC_8x5, RGBA_ASTC_8x6, RGBA_ASTC_8x8, RGBA_ASTC_10x5, RGBA_ASTC_10x6, RGBA_ASTC_10x8, RGBA_ASTC_10x10, RGBA_ASTC_12x10, RGBA_ASTC_12x12, SRGB8_Alpha8_ASTC_4x4, SRGB8_Alpha8_ASTC_5x4, SRGB8_Alpha8_ASTC_5x5, SRGB8_Alpha8_ASTC_6x5, SRGB8_Alpha8_ASTC_6x6, SRGB8_Alpha8_ASTC_8x5, SRGB8_Alpha8_ASTC_8x6, SRGB8_Alpha8_ASTC_8x8, SRGB8_Alpha8_ASTC_10x5, SRGB8_Alpha8_ASTC_10x6, SRGB8_Alpha8_ASTC_10x8, SRGB8_Alpha8_ASTC_10x10, SRGB8_Alpha8_ASTC_12x10, SRGB8_Alpha8_ASTC_12x12, }; void setFormat(QOpenGLTexture::TextureFormat format); QOpenGLTexture::TextureFormat format() const; void setSize(int width, int height = 1, int depth = 1); int width() const; int height() const; int depth() const; void setMipLevels(int levels); int mipLevels() const; int maximumMipLevels() const; void setLayers(int layers); int layers() const; int faces() const; void allocateStorage(); void allocateStorage(QOpenGLTexture::PixelFormat pixelFormat, QOpenGLTexture::PixelType pixelType); bool isStorageAllocated() const; QOpenGLTexture *createTextureView(QOpenGLTexture::Target target, QOpenGLTexture::TextureFormat viewFormat, int minimumMipmapLevel, int maximumMipmapLevel, int minimumLayer, int maximumLayer) const /Factory/; bool isTextureView() const; enum CubeMapFace { CubeMapPositiveX, CubeMapNegativeX, CubeMapPositiveY, CubeMapNegativeY, CubeMapPositiveZ, CubeMapNegativeZ, }; enum PixelFormat { NoSourceFormat, Red, RG, RGB, BGR, RGBA, BGRA, Red_Integer, RG_Integer, RGB_Integer, BGR_Integer, RGBA_Integer, BGRA_Integer, Depth, DepthStencil, Alpha, Luminance, LuminanceAlpha, Stencil, }; enum PixelType { NoPixelType, Int8, UInt8, Int16, UInt16, Int32, UInt32, Float16, Float16OES, Float32, UInt32_RGB9_E5, UInt32_RG11B10F, UInt8_RG3B2, UInt8_RG3B2_Rev, UInt16_RGB5A1, UInt16_RGB5A1_Rev, UInt16_R5G6B5, UInt16_R5G6B5_Rev, UInt16_RGBA4, UInt16_RGBA4_Rev, UInt32_RGB10A2, UInt32_RGB10A2_Rev, UInt32_RGBA8, UInt32_RGBA8_Rev, UInt32_D24S8, Float32_D32_UInt32_S8_X24, }; void setData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(const QImage &image, QOpenGLTexture::MipMapGeneration genMipMaps = QOpenGLTexture::GenerateMipMaps); void setCompressedData(int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setCompressedData(int mipLevel, int layer, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setCompressedData(int mipLevel, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setCompressedData(int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); enum Feature /BaseType=Flag/ { ImmutableStorage, ImmutableMultisampleStorage, TextureRectangle, TextureArrays, Texture3D, TextureMultisample, TextureBuffer, TextureCubeMapArrays, Swizzle, StencilTexturing, AnisotropicFiltering, NPOTTextures, NPOTTextureRepeat, Texture1D, TextureComparisonOperators, TextureMipMapLevel, }; typedef QFlags Features; static bool hasFeature(QOpenGLTexture::Feature feature); void setMipBaseLevel(int baseLevel); int mipBaseLevel() const; void setMipMaxLevel(int maxLevel); int mipMaxLevel() const; void setMipLevelRange(int baseLevel, int maxLevel); std::pair mipLevelRange() const; void setAutoMipMapGenerationEnabled(bool enabled); bool isAutoMipMapGenerationEnabled() const; void generateMipMaps(); void generateMipMaps(int baseLevel, bool resetBaseLevel = true); enum SwizzleComponent { SwizzleRed, SwizzleGreen, SwizzleBlue, SwizzleAlpha, }; enum SwizzleValue { RedValue, GreenValue, BlueValue, AlphaValue, ZeroValue, OneValue, }; void setSwizzleMask(QOpenGLTexture::SwizzleComponent component, QOpenGLTexture::SwizzleValue value); void setSwizzleMask(QOpenGLTexture::SwizzleValue r, QOpenGLTexture::SwizzleValue g, QOpenGLTexture::SwizzleValue b, QOpenGLTexture::SwizzleValue a); QOpenGLTexture::SwizzleValue swizzleMask(QOpenGLTexture::SwizzleComponent component) const; enum DepthStencilMode { DepthMode, StencilMode, }; void setDepthStencilMode(QOpenGLTexture::DepthStencilMode mode); QOpenGLTexture::DepthStencilMode depthStencilMode() const; enum Filter { Nearest, Linear, NearestMipMapNearest, NearestMipMapLinear, LinearMipMapNearest, LinearMipMapLinear, }; void setMinificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter minificationFilter() const; void setMagnificationFilter(QOpenGLTexture::Filter filter); QOpenGLTexture::Filter magnificationFilter() const; void setMinMagFilters(QOpenGLTexture::Filter minificationFilter, QOpenGLTexture::Filter magnificationFilter); std::pair minMagFilters() const; void setMaximumAnisotropy(float anisotropy); float maximumAnisotropy() const; enum WrapMode { Repeat, MirroredRepeat, ClampToEdge, ClampToBorder, }; enum CoordinateDirection { DirectionS, DirectionT, DirectionR, }; void setWrapMode(QOpenGLTexture::WrapMode mode); void setWrapMode(QOpenGLTexture::CoordinateDirection direction, QOpenGLTexture::WrapMode mode); QOpenGLTexture::WrapMode wrapMode(QOpenGLTexture::CoordinateDirection direction) const; void setBorderColor(const QColor &color); QColor borderColor() const; void setMinimumLevelOfDetail(float value); float minimumLevelOfDetail() const; void setMaximumLevelOfDetail(float value); float maximumLevelOfDetail() const; void setLevelOfDetailRange(float min, float max); std::pair levelOfDetailRange() const; void setLevelofDetailBias(float bias); float levelofDetailBias() const; QOpenGLTexture::Target target() const; void setSamples(int samples); int samples() const; void setFixedSamplePositions(bool fixed); bool isFixedSamplePositions() const; enum ComparisonFunction { CompareLessEqual, CompareGreaterEqual, CompareLess, CompareGreater, CompareEqual, CommpareNotEqual, CompareAlways, CompareNever, %If (Qt_6_1_0 -) CompareNotEqual, %End }; void setComparisonFunction(QOpenGLTexture::ComparisonFunction function); QOpenGLTexture::ComparisonFunction comparisonFunction() const; enum ComparisonMode { CompareRefToTexture, CompareNone, }; void setComparisonMode(QOpenGLTexture::ComparisonMode mode); QOpenGLTexture::ComparisonMode comparisonMode() const; void setData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setCompressedData(int mipLevel, int layer, int layerCount, QOpenGLTexture::CubeMapFace cubeFace, int dataSize, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); void setData(int xOffset, int yOffset, int zOffset, int width, int height, int depth, int mipLevel, int layer, QOpenGLTexture::CubeMapFace cubeFace, int layerCount, QOpenGLTexture::PixelFormat sourceFormat, QOpenGLTexture::PixelType sourceType, const void *data, const QOpenGLPixelTransferOptions * const options = 0); private: QOpenGLTexture(const QOpenGLTexture &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2276905 PyQt6-6.6.1/sip/QtOpenGL/qopengltextureblitter.sip0000644000076500000240000000373214532160401021004 0ustar00philstaff// qopengltextureblitter.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLTextureBlitter { %TypeHeaderCode #include %End public: QOpenGLTextureBlitter(); ~QOpenGLTextureBlitter(); enum Origin { OriginBottomLeft, OriginTopLeft, }; bool create(); bool isCreated() const; void destroy(); bool supportsExternalOESTarget() const; void bind(GLenum target = GL_TEXTURE_2D); void release(); void setRedBlueSwizzle(bool swizzle); void setOpacity(float opacity); void blit(GLuint texture, const QMatrix4x4 &targetTransform, QOpenGLTextureBlitter::Origin sourceOrigin); void blit(GLuint texture, const QMatrix4x4 &targetTransform, const QMatrix3x3 &sourceTransform); static QMatrix4x4 targetTransform(const QRectF &target, const QRect &viewport); static QMatrix3x3 sourceTransform(const QRectF &subTexture, const QSize &textureSize, QOpenGLTextureBlitter::Origin origin); %If (Qt_6_3_0 -) bool supportsRectangleTarget() const; %End private: QOpenGLTextureBlitter(const QOpenGLTextureBlitter &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1894348 PyQt6-6.6.1/sip/QtOpenGL/qopengltimerquery.sip0000644000076500000240000000405714532160401020125 0ustar00philstaff// qopengltimerquery.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (!PyQt_OpenGL_ES2) class QOpenGLTimerQuery : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimerQuery(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimerQuery(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void begin(); void end(); GLuint64 waitForTimestamp() const /ReleaseGIL/; void recordTimestamp(); bool isResultAvailable() const; GLuint64 waitForResult() const /ReleaseGIL/; }; %End %If (!PyQt_OpenGL_ES2) class QOpenGLTimeMonitor : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLTimeMonitor(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLTimeMonitor(); void setSampleCount(int sampleCount); int sampleCount() const; bool create(); void destroy(); bool isCreated() const; QList objectIds() const; int recordSample(); bool isResultAvailable() const; QList waitForSamples() const /ReleaseGIL/; QList waitForIntervals() const /ReleaseGIL/; void reset(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1899116 PyQt6-6.6.1/sip/QtOpenGL/qopenglversionfunctions.sip0000644000076500000240000000222014532160401021323 0ustar00philstaff// qopenglversionfunctions.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractOpenGLFunctions /NoDefaultCtors,Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End QAbstractOpenGLFunctions(const QAbstractOpenGLFunctions &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1887875 PyQt6-6.6.1/sip/QtOpenGL/qopenglversionfunctionsfactory.sip0000644000076500000240000000250614532160401022722 0ustar00philstaff// qopenglversionfunctionsfactory.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLVersionFunctionsFactory { %TypeHeaderCode #include %End public: static SIP_PYOBJECT get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context /GetWrapper/ = 0) /TypeHint="QAbstractOpenGLFunctions"/; %MethodCode sipRes = qpyopengl_version_functions(*a0, a1, a1Wrapper); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2272022 PyQt6-6.6.1/sip/QtOpenGL/qopenglversionprofile.sip0000644000076500000240000000342614532160401020764 0ustar00philstaff// qopenglversionprofile.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLVersionProfile { %TypeHeaderCode #include %End public: QOpenGLVersionProfile(); explicit QOpenGLVersionProfile(const QSurfaceFormat &format); QOpenGLVersionProfile(const QOpenGLVersionProfile &other); ~QOpenGLVersionProfile(); std::pair version() const; void setVersion(int majorVersion, int minorVersion); QSurfaceFormat::OpenGLContextProfile profile() const; void setProfile(QSurfaceFormat::OpenGLContextProfile profile); bool hasProfiles() const; bool isLegacyVersion() const; bool isValid() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; bool operator==(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); bool operator!=(const QOpenGLVersionProfile &lhs, const QOpenGLVersionProfile &rhs); ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.229865 PyQt6-6.6.1/sip/QtOpenGL/qopenglvertexarrayobject.sip0000644000076500000240000000356514532160401021465 0ustar00philstaff// qopenglvertexarrayobject.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLVertexArrayObject : QObject { %TypeHeaderCode #include %End public: explicit QOpenGLVertexArrayObject(QObject *parent /TransferThis/ = 0); virtual ~QOpenGLVertexArrayObject(); bool create(); void destroy(); bool isCreated() const; GLuint objectId() const; void bind(); void release(); class Binder { %TypeHeaderCode #include %End public: Binder(QOpenGLVertexArrayObject *v); ~Binder(); void release(); void rebind(); SIP_PYOBJECT __enter__(); %MethodCode // Just return a reference to self. sipRes = sipSelf; Py_INCREF(sipRes); %End void __exit__(SIP_PYOBJECT type, SIP_PYOBJECT value, SIP_PYOBJECT traceback); %MethodCode sipCpp->release(); %End private: Binder(const QOpenGLVertexArrayObject::Binder &); }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2198098 PyQt6-6.6.1/sip/QtOpenGL/qopenglwindow.sip0000644000076500000240000000417514532160401017227 0ustar00philstaff// qopenglwindow.sip generated by MetaSIP // // This file is part of the QtOpenGL Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLWindow : QPaintDeviceWindow { %TypeHeaderCode #include %End public: enum UpdateBehavior { NoPartialUpdate, PartialUpdateBlit, PartialUpdateBlend, }; QOpenGLWindow(QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); QOpenGLWindow(QOpenGLContext *shareContext, QOpenGLWindow::UpdateBehavior updateBehavior = QOpenGLWindow::NoPartialUpdate, QWindow *parent /TransferThis/ = 0); virtual ~QOpenGLWindow(); QOpenGLWindow::UpdateBehavior updateBehavior() const; bool isValid() const; void makeCurrent(); void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; QImage grabFramebuffer(); QOpenGLContext *shareContext() const; signals: void frameSwapped(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintUnderGL(); virtual void paintOverGL(); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1826446 PyQt6-6.6.1/sip/QtOpenGL/qpyopengl_qlist.sip0000644000076500000240000000555614532160401017570 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtOpenGL module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (!PyQt_OpenGL_ES2) %MappedType QList /TypeHintIn="Iterable[int]", TypeHintOut="List[int]", TypeHintValue="[]"/ { %TypeHeaderCode #include #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { // Convert to a Python long to make sure it doesn't get interpreted as // a signed value. PyObject *pobj = PyLong_FromUnsignedLongLong(sipCpp->value(i)); if (!pobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, pobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *qv = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } PyErr_Clear(); unsigned long long val = PyLong_AsUnsignedLongLongMask(itm); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'int' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete qv; Py_DECREF(iter); *sipIsErr = 1; return 0; } qv->append(val); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = qv; return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2226949 PyQt6-6.6.1/sip/QtOpenGL/qpyopengl_std_pair.sip0000644000076500000240000000614214532160401020231 0ustar00philstaff// This is the SIP interface definition for the std::pair based mapped types // specific to the QtGui module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType std::pair /TypeHint="Tuple[QOpenGLTexture.Filter, QOpenGLTexture.Filter]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode return sipBuildResult(NULL, "(FF)", sipCpp->first, sipType_QOpenGLTexture_Filter, sipCpp->second, sipType_QOpenGLTexture_Filter); %End %ConvertToTypeCode if (!sipIsErr) return (PySequence_Check(sipPy) && !PyUnicode_Check(sipPy)); Py_ssize_t len = PySequence_Size(sipPy); if (len != 2) { // A negative length should only be an internal error so let the // original exception stand. if (len >= 0) PyErr_Format(PyExc_TypeError, "sequence has %zd elements but 2 elements are expected", len); *sipIsErr = 1; return 0; } PyObject *firstobj = PySequence_GetItem(sipPy, 0); if (!firstobj) { *sipIsErr = 1; return 0; } int firstv = sipConvertToEnum(firstobj, sipType_QOpenGLTexture_Filter); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the first element has type '%s' but 'QOpenGLTexture.Filter' is expected", sipPyTypeName(Py_TYPE(firstobj))); *sipIsErr = 1; return 0; } PyObject *secondobj = PySequence_GetItem(sipPy, 1); if (!secondobj) { Py_DECREF(firstobj); *sipIsErr = 1; return 0; } int secondv = sipConvertToEnum(secondobj, sipType_QOpenGLTexture_Filter); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "the second element has type '%s' but 'QOpenGLTexture.Filter' is expected", sipPyTypeName(Py_TYPE(secondobj))); Py_DECREF(secondobj); Py_DECREF(firstobj); *sipIsErr = 1; return 0; } *sipCppPtr = new std::pair( static_cast(firstv), static_cast(secondv)); Py_DECREF(secondobj); Py_DECREF(firstobj); return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.543866 PyQt6-6.6.1/sip/QtOpenGLWidgets/0000755000076500000240000000000014532160403015137 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3438284 PyQt6-6.6.1/sip/QtOpenGLWidgets/QtOpenGLWidgetsmod.sip0000644000076500000240000000401314532160401021330 0ustar00philstaff// QtOpenGLWidgetsmod.sip generated by MetaSIP // // This file is part of the QtOpenGLWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtOpenGLWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtOpenGL/QtOpenGLmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qopenglwidget.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3445032 PyQt6-6.6.1/sip/QtOpenGLWidgets/qopenglwidget.sip0000644000076500000240000000623614532160401020532 0ustar00philstaff// qopenglwidget.sip generated by MetaSIP // // This file is part of the QtOpenGLWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QOpenGLWidget, &sipType_QOpenGLWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QOpenGLWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QOpenGLWidget(); void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; bool isValid() const; void makeCurrent(); %If (Qt_6_5_0 -) void makeCurrent(QOpenGLWidget::TargetBuffer targetBuffer); %End void doneCurrent(); QOpenGLContext *context() const; GLuint defaultFramebufferObject() const; %If (Qt_6_5_0 -) GLuint defaultFramebufferObject(QOpenGLWidget::TargetBuffer targetBuffer) const; %End QImage grabFramebuffer(); %If (Qt_6_5_0 -) QImage grabFramebuffer(QOpenGLWidget::TargetBuffer targetBuffer); %End signals: void aboutToCompose(); void frameSwapped(); void aboutToResize(); void resized(); protected: virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void paintGL(); virtual void paintEvent(QPaintEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual bool event(QEvent *e); virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; virtual QPaintEngine *paintEngine() const; public: enum UpdateBehavior { NoPartialUpdate, PartialUpdate, }; void setUpdateBehavior(QOpenGLWidget::UpdateBehavior updateBehavior); QOpenGLWidget::UpdateBehavior updateBehavior() const; GLenum textureFormat() const; void setTextureFormat(GLenum texFormat); %If (Qt_6_5_0 -) enum TargetBuffer { LeftBuffer, RightBuffer, }; %End %If (Qt_6_5_0 -) QOpenGLWidget::TargetBuffer currentTargetBuffer() const; %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.542974 PyQt6-6.6.1/sip/QtPdf/0000755000076500000240000000000014532160403013175 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3382733 PyQt6-6.6.1/sip/QtPdf/QtPdfmod.sip0000644000076500000240000000422414532160401015430 0ustar00philstaff// QtPdfmod.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtPdf, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qpdfbookmarkmodel.sip %Include qpdfdocument.sip %Include qpdfdocumentrenderoptions.sip %Include qpdflink.sip %Include qpdflinkmodel.sip %Include qpdfpagenavigator.sip %Include qpdfpagerenderer.sip %Include qpdfsearchmodel.sip %Include qpdfselection.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3413746 PyQt6-6.6.1/sip/QtPdf/qpdfbookmarkmodel.sip0000644000076500000240000000352414532160401017415 0ustar00philstaff// qpdfbookmarkmodel.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfBookmarkModel : QAbstractItemModel { %TypeHeaderCode #include %End public: enum class Role /BaseType=IntEnum/ { Title, Level, Page, Location, Zoom, }; explicit QPdfBookmarkModel(QObject *parent /TransferThis/); virtual ~QPdfBookmarkModel(); QPdfDocument *document() const; void setDocument(QPdfDocument *document); virtual QVariant data(const QModelIndex &index, int role) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QHash roleNames() const; signals: void documentChanged(QPdfDocument *document); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3401644 PyQt6-6.6.1/sip/QtPdf/qpdfdocument.sip0000644000076500000240000000721214532160401016403 0ustar00philstaff// qpdfdocument.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfDocument : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QPdfBookmarkModel, &sipType_QPdfBookmarkModel, -1, 1}, {sipName_QPdfDocument, &sipType_QPdfDocument, -1, 2}, #if QT_VERSION >= 0x060600 {sipName_QPdfLinkModel, &sipType_QPdfLinkModel, -1, 3}, #else {0, 0, -1, 3}, #endif {sipName_QPdfPageNavigator, &sipType_QPdfPageNavigator, -1, 4}, {sipName_QPdfPageRenderer, &sipType_QPdfPageRenderer, -1, 5}, {sipName_QPdfSearchModel, &sipType_QPdfSearchModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum class Status { Null, Loading, Ready, Unloading, Error, }; enum class Error { None, Unknown, DataNotYetAvailable, FileNotFound, InvalidFileFormat, IncorrectPassword, UnsupportedSecurityScheme, }; enum class MetaDataField { Title, Subject, Author, Keywords, Producer, Creator, CreationDate, ModificationDate, }; enum class PageModelRole /BaseType=IntEnum/ { Label, PointSize, }; explicit QPdfDocument(QObject *parent /TransferThis/); virtual ~QPdfDocument(); QPdfDocument::Error load(const QString &fileName) /ReleaseGIL/; void load(QIODevice *device) /ReleaseGIL/; QPdfDocument::Status status() const; void setPassword(const QString &password); QString password() const; QVariant metaData(QPdfDocument::MetaDataField field) const; QPdfDocument::Error error() const; void close(); int pageCount() const; QSizeF pagePointSize(int page) const; QString pageLabel(int page); QAbstractListModel *pageModel(); QImage render(int page, QSize imageSize, QPdfDocumentRenderOptions options = QPdfDocumentRenderOptions()); QPdfSelection getSelection(int page, QPointF start, QPointF end); QPdfSelection getSelectionAtIndex(int page, int startIndex, int maxLength); QPdfSelection getAllText(int page); %If (Qt_6_6_0 -) int pageIndexForLabel(const QString &label); %End signals: void passwordChanged(); void statusChanged(QPdfDocument::Status status); void pageCountChanged(int pageCount); void pageModelChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3423622 PyQt6-6.6.1/sip/QtPdf/qpdfdocumentrenderoptions.sip0000644000076500000240000000404114532160401021214 0ustar00philstaff// qpdfdocumentrenderoptions.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfDocumentRenderOptions { %TypeHeaderCode #include %End public: enum class Rotation { None, Clockwise90, Clockwise180, Clockwise270, }; enum class RenderFlag { None, Annotations, OptimizedForLcd, Grayscale, ForceHalftone, TextAliased, ImageAliased, PathAliased, }; typedef QFlags RenderFlags; QPdfDocumentRenderOptions(); QPdfDocumentRenderOptions::Rotation rotation() const; void setRotation(QPdfDocumentRenderOptions::Rotation r); QPdfDocumentRenderOptions::RenderFlags renderFlags() const; void setRenderFlags(QPdfDocumentRenderOptions::RenderFlags r); QRect scaledClipRect() const; void setScaledClipRect(const QRect &r); QSize scaledSize() const; void setScaledSize(const QSize &s); }; bool operator==(const QPdfDocumentRenderOptions &lhs, const QPdfDocumentRenderOptions &rhs); bool operator!=(const QPdfDocumentRenderOptions &lhs, const QPdfDocumentRenderOptions &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3388672 PyQt6-6.6.1/sip/QtPdf/qpdflink.sip0000644000076500000240000000266414532160401015530 0ustar00philstaff// qpdflink.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfLink { %TypeHeaderCode #include %End public: QPdfLink(); QPdfLink(const QPdfLink &other); ~QPdfLink(); void swap(QPdfLink &other); bool isValid() const; int page() const; QPointF location() const; qreal zoom() const; QUrl url() const; QString contextBefore() const; QString contextAfter() const; QList rectangles() const; QString toString() const; void copyToClipboard(QClipboard::Mode mode = QClipboard::Clipboard) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.341856 PyQt6-6.6.1/sip/QtPdf/qpdflinkmodel.sip0000644000076500000240000000331314532160401016541 0ustar00philstaff// qpdflinkmodel.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_6_0 -) class QPdfLinkModel : QAbstractListModel { %TypeHeaderCode #include %End public: enum class Role { Link, Rectangle, Url, Page, Location, Zoom, }; explicit QPdfLinkModel(QObject *parent /TransferThis/ = 0); virtual ~QPdfLinkModel(); QPdfDocument *document() const; virtual QHash roleNames() const; virtual int rowCount(const QModelIndex &parent) const; virtual QVariant data(const QModelIndex &index, int role) const; int page() const; QPdfLink linkAt(QPointF point) const; public slots: void setDocument(QPdfDocument *document); void setPage(int page); signals: void documentChanged(); void pageChanged(int page); }; %End ././@PaxHeader0000000000000000000000000000003100000000000010207 xustar0025 mtime=1701372161.3407 PyQt6-6.6.1/sip/QtPdf/qpdfpagenavigator.sip0000644000076500000240000000344314532160401017416 0ustar00philstaff// qpdfpagenavigator.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfPageNavigator : QObject { %TypeHeaderCode #include %End public: explicit QPdfPageNavigator(QObject *parent /TransferThis/); virtual ~QPdfPageNavigator(); int currentPage() const; QPointF currentLocation() const; qreal currentZoom() const; bool backAvailable() const; bool forwardAvailable() const; public slots: void clear(); void jump(QPdfLink destination); void jump(int page, const QPointF &location, qreal zoom = 0); void update(int page, const QPointF &location, qreal zoom); void forward(); void back(); signals: void currentPageChanged(int page); void currentLocationChanged(QPointF location); void currentZoomChanged(qreal zoom); void backAvailableChanged(bool available); void forwardAvailableChanged(bool available); void jumped(QPdfLink current); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3393826 PyQt6-6.6.1/sip/QtPdf/qpdfpagerenderer.sip0000644000076500000240000000322114532160401017224 0ustar00philstaff// qpdfpagerenderer.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfPageRenderer : QObject { %TypeHeaderCode #include %End public: enum class RenderMode { MultiThreaded, SingleThreaded, }; explicit QPdfPageRenderer(QObject *parent /TransferThis/); virtual ~QPdfPageRenderer(); QPdfPageRenderer::RenderMode renderMode() const; void setRenderMode(QPdfPageRenderer::RenderMode mode); QPdfDocument *document() const; void setDocument(QPdfDocument *document); quint64 requestPage(int pageNumber, QSize imageSize, QPdfDocumentRenderOptions options = QPdfDocumentRenderOptions()); signals: void documentChanged(QPdfDocument *document); void renderModeChanged(QPdfPageRenderer::RenderMode renderMode); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3428376 PyQt6-6.6.1/sip/QtPdf/qpdfsearchmodel.sip0000644000076500000240000000355414532160401017060 0ustar00philstaff// qpdfsearchmodel.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfSearchModel : QAbstractListModel { %TypeHeaderCode #include %End public: enum class Role /BaseType=IntEnum/ { Page, IndexOnPage, Location, ContextBefore, ContextAfter, }; explicit QPdfSearchModel(QObject *parent /TransferThis/); virtual ~QPdfSearchModel(); QList resultsOnPage(int page) const; QPdfLink resultAtIndex(int index) const; QPdfDocument *document() const; QString searchString() const; virtual QHash roleNames() const; virtual int rowCount(const QModelIndex &parent) const; virtual QVariant data(const QModelIndex &index, int role) const; public slots: void setSearchString(const QString &searchString); void setDocument(QPdfDocument *document); signals: void documentChanged(); void searchStringChanged(); protected: virtual void timerEvent(QTimerEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3433638 PyQt6-6.6.1/sip/QtPdf/qpdfselection.sip0000644000076500000240000000262614532160401016556 0ustar00philstaff// qpdfselection.sip generated by MetaSIP // // This file is part of the QtPdf Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfSelection { %TypeHeaderCode #include %End public: QPdfSelection(const QPdfSelection &other); ~QPdfSelection(); void swap(QPdfSelection &other); bool isValid() const; QList bounds() const; QString text() const; QRectF boundingRectangle() const; int startIndex() const; int endIndex() const; void copyToClipboard(QClipboard::Mode mode = QClipboard::Clipboard) const; private: QPdfSelection(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.7249079 PyQt6-6.6.1/sip/QtPdfWidgets/0000755000076500000240000000000014532160403014524 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7184567 PyQt6-6.6.1/sip/QtPdfWidgets/QtPdfWidgetsmod.sip0000644000076500000240000000377214532160402020316 0ustar00philstaff// QtPdfWidgetsmod.sip generated by MetaSIP // // This file is part of the QtPdfWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtPdfWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtPdf/QtPdfmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qpdfpageselector.sip %Include qpdfview.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7189355 PyQt6-6.6.1/sip/QtPdfWidgets/qpdfpageselector.sip0000644000076500000240000000277714532160402020605 0ustar00philstaff// qpdfpageselector.sip generated by MetaSIP // // This file is part of the QtPdfWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_6_0 -) class QPdfPageSelector : QWidget { %TypeHeaderCode #include %End public: explicit QPdfPageSelector(QWidget *parent /TransferThis/); virtual ~QPdfPageSelector(); void setDocument(QPdfDocument *document); QPdfDocument *document() const; int currentPage() const; QString currentPageLabel() const; public slots: void setCurrentPage(int index); signals: void documentChanged(QPdfDocument *document); void currentPageChanged(int index); void currentPageLabelChanged(const QString &label); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7199643 PyQt6-6.6.1/sip/QtPdfWidgets/qpdfview.sip0000644000076500000240000000722414532160402017072 0ustar00philstaff// qpdfview.sip generated by MetaSIP // // This file is part of the QtPdfWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPdfView : QAbstractScrollArea { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if QT_VERSION >= 0x060600 {sipName_QPdfPageSelector, &sipType_QPdfPageSelector, -1, 1}, #else {0, 0, -1, 1}, #endif {sipName_QPdfView, &sipType_QPdfView, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum class PageMode { SinglePage, MultiPage, }; enum class ZoomMode { Custom, FitToWidth, FitInView, }; explicit QPdfView(QWidget *parent /TransferThis/); virtual ~QPdfView(); void setDocument(QPdfDocument *document); QPdfDocument *document() const; QPdfPageNavigator *pageNavigator() const; QPdfView::PageMode pageMode() const; QPdfView::ZoomMode zoomMode() const; qreal zoomFactor() const; int pageSpacing() const; void setPageSpacing(int spacing); QMargins documentMargins() const; void setDocumentMargins(QMargins margins); public slots: void setPageMode(QPdfView::PageMode mode); void setZoomMode(QPdfView::ZoomMode mode); void setZoomFactor(qreal factor); signals: void documentChanged(QPdfDocument *document); void pageModeChanged(QPdfView::PageMode pageMode); void zoomModeChanged(QPdfView::ZoomMode zoomMode); void zoomFactorChanged(qreal zoomFactor); void pageSpacingChanged(int pageSpacing); void documentMarginsChanged(QMargins documentMargins); protected: virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void scrollContentsBy(int dx, int dy); public: %If (Qt_6_6_0 -) QPdfSearchModel *searchModel() const; %End %If (Qt_6_6_0 -) void setSearchModel(QPdfSearchModel *searchModel /KeepReference/); %End %If (Qt_6_6_0 -) int currentSearchResultIndex() const; %End public slots: %If (Qt_6_6_0 -) void setCurrentSearchResultIndex(int currentResult); %End signals: %If (Qt_6_6_0 -) void searchModelChanged(QPdfSearchModel *searchModel); %End %If (Qt_6_6_0 -) void currentSearchResultIndexChanged(int currentResult); %End protected: %If (Qt_6_6_0 -) virtual void mousePressEvent(QMouseEvent *event); %End %If (Qt_6_6_0 -) virtual void mouseMoveEvent(QMouseEvent *event); %End %If (Qt_6_6_0 -) virtual void mouseReleaseEvent(QMouseEvent *event); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6691802 PyQt6-6.6.1/sip/QtPositioning/0000755000076500000240000000000014532160403014766 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5822234 PyQt6-6.6.1/sip/QtPositioning/QtPositioningmod.sip0000644000076500000240000000447514532160402021023 0ustar00philstaff// QtPositioningmod.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtPositioning, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %Include qgeoaddress.sip %Include qgeoareamonitorinfo.sip %Include qgeoareamonitorsource.sip %Include qgeocircle.sip %Include qgeocoordinate.sip %Include qgeolocation.sip %Include qgeopath.sip %Include qgeopolygon.sip %Include qgeopositioninfo.sip %Include qgeopositioninfosource.sip %Include qgeorectangle.sip %Include qgeosatelliteinfo.sip %Include qgeosatelliteinfosource.sip %Include qgeoshape.sip %Include qnmeapositioninfosource.sip %Include qnmeasatelliteinfosource.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5899415 PyQt6-6.6.1/sip/QtPositioning/qgeoaddress.sip0000644000076500000240000000434114532160402020005 0ustar00philstaff// qgeoaddress.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoAddress { %TypeHeaderCode #include %End public: QGeoAddress(); QGeoAddress(const QGeoAddress &other); ~QGeoAddress(); QString text() const; void setText(const QString &text); QString country() const; void setCountry(const QString &country); QString countryCode() const; void setCountryCode(const QString &countryCode); QString state() const; void setState(const QString &state); QString county() const; void setCounty(const QString &county); QString city() const; void setCity(const QString &city); QString district() const; void setDistrict(const QString &district); QString postalCode() const; void setPostalCode(const QString &postalCode); QString street() const; void setStreet(const QString &street); bool isEmpty() const; void clear(); bool isTextGenerated() const; void swap(QGeoAddress &other /Constrained/); QString streetNumber() const; void setStreetNumber(const QString &streetNumber); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) bool operator==(const QGeoAddress &lhs, const QGeoAddress &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoAddress &lhs, const QGeoAddress &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5884259 PyQt6-6.6.1/sip/QtPositioning/qgeoareamonitorinfo.sip0000644000076500000240000000426214532160402021556 0ustar00philstaff// qgeoareamonitorinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoAreaMonitorInfo { %TypeHeaderCode #include %End public: explicit QGeoAreaMonitorInfo(const QString &name = QString()); QGeoAreaMonitorInfo(const QGeoAreaMonitorInfo &other); ~QGeoAreaMonitorInfo(); QString name() const; void setName(const QString &name); QString identifier() const; bool isValid() const; QGeoShape area() const; void setArea(const QGeoShape &newShape); QDateTime expiration() const; void setExpiration(const QDateTime &expiry); bool isPersistent() const; void setPersistent(bool isPersistent); QVariantMap notificationParameters() const; void setNotificationParameters(const QVariantMap ¶meters); void swap(QGeoAreaMonitorInfo &other); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo &); %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo & /Constrained/); %End %If (Qt_6_2_0 -) bool operator==(const QGeoAreaMonitorInfo &lhs, const QGeoAreaMonitorInfo &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoAreaMonitorInfo &lhs, const QGeoAreaMonitorInfo &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5868437 PyQt6-6.6.1/sip/QtPositioning/qgeoareamonitorsource.sip0000644000076500000240000000567214532160402022131 0ustar00philstaff// qgeoareamonitorsource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoAreaMonitorSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, InsufficientPositionInfo, UnknownSourceError, NoError, }; enum AreaMonitorFeature /BaseType=Flag/ { PersistentAreaMonitorFeature, AnyAreaMonitorFeature, }; typedef QFlags AreaMonitorFeatures; explicit QGeoAreaMonitorSource(QObject *parent /TransferThis/); virtual ~QGeoAreaMonitorSource(); static QGeoAreaMonitorSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoAreaMonitorSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual void setPositionInfoSource(QGeoPositionInfoSource *source /Transfer/); virtual QGeoPositionInfoSource *positionInfoSource() const; QString sourceName() const; virtual QGeoAreaMonitorSource::Error error() const = 0; virtual QGeoAreaMonitorSource::AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0; virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0; virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0; virtual QList activeMonitors() const = 0; virtual QList activeMonitors(const QGeoShape &lookupArea) const = 0; signals: void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update); void monitorExpired(const QGeoAreaMonitorInfo &monitor); void errorOccurred(QGeoAreaMonitorSource::Error error); public: virtual bool setBackendProperty(const QString &name, const QVariant &value); virtual QVariant backendProperty(const QString &name) const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5856555 PyQt6-6.6.1/sip/QtPositioning/qgeocircle.sip0000644000076500000240000000350114532160402017616 0ustar00philstaff// qgeocircle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoCircle : QGeoShape { %TypeHeaderCode #include %End public: QGeoCircle(); QGeoCircle(const QGeoCoordinate ¢er, qreal radius = -1.); QGeoCircle(const QGeoCircle &other); QGeoCircle(const QGeoShape &other); ~QGeoCircle(); void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setRadius(qreal radius); qreal radius() const; void translate(double degreesLatitude, double degreesLongitude); QGeoCircle translated(double degreesLatitude, double degreesLongitude) const; QString toString() const; void extendCircle(const QGeoCoordinate &coordinate); }; %End %If (Qt_6_5_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoCircle &circle) /ReleaseGIL/; %End %If (Qt_6_5_0 -) QDataStream &operator>>(QDataStream &stream, QGeoCircle &circle /Constrained/) /ReleaseGIL/; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.590508 PyQt6-6.6.1/sip/QtPositioning/qgeocoordinate.sip0000644000076500000240000000532714532160402020514 0ustar00philstaff// qgeocoordinate.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoCoordinate { %TypeHeaderCode #include %End public: enum CoordinateType { InvalidCoordinate, Coordinate2D, Coordinate3D, }; enum CoordinateFormat { Degrees, DegreesWithHemisphere, DegreesMinutes, DegreesMinutesWithHemisphere, DegreesMinutesSeconds, DegreesMinutesSecondsWithHemisphere, }; QGeoCoordinate(); QGeoCoordinate(double latitude, double longitude); QGeoCoordinate(double latitude, double longitude, double altitude); QGeoCoordinate(const QGeoCoordinate &other); ~QGeoCoordinate(); bool isValid() const; QGeoCoordinate::CoordinateType type() const; void setLatitude(double latitude); double latitude() const; void setLongitude(double longitude); double longitude() const; void setAltitude(double altitude); double altitude() const; qreal distanceTo(const QGeoCoordinate &other) const; qreal azimuthTo(const QGeoCoordinate &other) const; QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.) const; QString toString(QGeoCoordinate::CoordinateFormat format = QGeoCoordinate::DegreesMinutesSecondsWithHemisphere) const; void swap(QGeoCoordinate &other /Constrained/); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate); %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate /Constrained/); %End %If (Qt_6_2_0 -) bool operator==(const QGeoCoordinate &lhs, const QGeoCoordinate &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoCoordinate &lhs, const QGeoCoordinate &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5888853 PyQt6-6.6.1/sip/QtPositioning/qgeolocation.sip0000644000076500000240000000347214532160402020174 0ustar00philstaff// qgeolocation.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoLocation { %TypeHeaderCode #include %End public: QGeoLocation(); QGeoLocation(const QGeoLocation &other); ~QGeoLocation(); QGeoAddress address() const; void setAddress(const QGeoAddress &address); QGeoCoordinate coordinate() const; void setCoordinate(const QGeoCoordinate &position); bool isEmpty() const; QVariantMap extendedAttributes() const; void setExtendedAttributes(const QVariantMap &data); void swap(QGeoLocation &other /Constrained/); QGeoShape boundingShape() const; void setBoundingShape(const QGeoShape &shape); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) bool operator==(const QGeoLocation &lhs, const QGeoLocation &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoLocation &lhs, const QGeoLocation &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5874493 PyQt6-6.6.1/sip/QtPositioning/qgeopath.sip0000644000076500000240000000450214532160402017313 0ustar00philstaff// qgeopath.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoPath : QGeoShape { %TypeHeaderCode #include %End public: QGeoPath(); QGeoPath(const QList &path, const qreal &width = 0.); QGeoPath(const QGeoPath &other); QGeoPath(const QGeoShape &other); ~QGeoPath(); void setPath(const QList &path); const QList &path() const; void setWidth(const qreal &width); qreal width() const; void translate(double degreesLatitude, double degreesLongitude); QGeoPath translated(double degreesLatitude, double degreesLongitude) const; double length(qsizetype indexFrom = 0, qsizetype indexTo = -1) const; void addCoordinate(const QGeoCoordinate &coordinate); void insertCoordinate(qsizetype index, const QGeoCoordinate &coordinate); void replaceCoordinate(qsizetype index, const QGeoCoordinate &coordinate); QGeoCoordinate coordinateAt(qsizetype index) const; bool containsCoordinate(const QGeoCoordinate &coordinate) const; void removeCoordinate(const QGeoCoordinate &coordinate); void removeCoordinate(qsizetype index); QString toString() const; qsizetype size() const; void clearPath(); }; %End %If (Qt_6_5_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoPath &path) /ReleaseGIL/; %End %If (Qt_6_5_0 -) QDataStream &operator>>(QDataStream &stream, QGeoPath &path /Constrained/) /ReleaseGIL/; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.587937 PyQt6-6.6.1/sip/QtPositioning/qgeopolygon.sip0000644000076500000240000000505114532160402020046 0ustar00philstaff// qgeopolygon.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoPolygon : QGeoShape { %TypeHeaderCode #include %End public: QGeoPolygon(); QGeoPolygon(const QList &path); QGeoPolygon(const QGeoPolygon &other); QGeoPolygon(const QGeoShape &other); ~QGeoPolygon(); void translate(double degreesLatitude, double degreesLongitude); QGeoPolygon translated(double degreesLatitude, double degreesLongitude) const; double length(qsizetype indexFrom = 0, qsizetype indexTo = -1) const; qsizetype size() const; void addCoordinate(const QGeoCoordinate &coordinate); void insertCoordinate(qsizetype index, const QGeoCoordinate &coordinate); void replaceCoordinate(qsizetype index, const QGeoCoordinate &coordinate); QGeoCoordinate coordinateAt(qsizetype index) const; bool containsCoordinate(const QGeoCoordinate &coordinate) const; void removeCoordinate(const QGeoCoordinate &coordinate); void removeCoordinate(qsizetype index); QString toString() const; void addHole(const QList &holePath); void addHole(const QVariant &holePath); const QVariantList hole(qsizetype index) const; const QList holePath(qsizetype index) const; void removeHole(qsizetype index); qsizetype holesCount() const; void setPerimeter(const QList &path); const QList &perimeter() const; }; %End %If (Qt_6_5_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoPolygon &polygon) /ReleaseGIL/; %End %If (Qt_6_5_0 -) QDataStream &operator>>(QDataStream &stream, QGeoPolygon &polygon /Constrained/) /ReleaseGIL/; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.581791 PyQt6-6.6.1/sip/QtPositioning/qgeopositioninfo.sip0000644000076500000240000000470614532160402021105 0ustar00philstaff// qgeopositioninfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoPositionInfo { %TypeHeaderCode #include %End public: enum Attribute { Direction, GroundSpeed, VerticalSpeed, MagneticVariation, HorizontalAccuracy, VerticalAccuracy, %If (Qt_6_3_0 -) DirectionAccuracy, %End }; QGeoPositionInfo(); QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime); QGeoPositionInfo(const QGeoPositionInfo &other); ~QGeoPositionInfo(); bool isValid() const; void setTimestamp(const QDateTime ×tamp); QDateTime timestamp() const; void setCoordinate(const QGeoCoordinate &coordinate); QGeoCoordinate coordinate() const; void setAttribute(QGeoPositionInfo::Attribute attribute, qreal value); qreal attribute(QGeoPositionInfo::Attribute attribute) const; void removeAttribute(QGeoPositionInfo::Attribute attribute); bool hasAttribute(QGeoPositionInfo::Attribute attribute) const; void swap(QGeoPositionInfo &other /Constrained/); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info); %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info /Constrained/); %End %If (Qt_6_2_0 -) bool operator==(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoPositionInfo &lhs, const QGeoPositionInfo &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5863183 PyQt6-6.6.1/sip/QtPositioning/qgeopositioninfosource.sip0000644000076500000240000001004714532160402022321 0ustar00philstaff// qgeopositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoPositionInfoSource : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGeoAreaMonitorSource, &sipType_QGeoAreaMonitorSource, -1, 1}, {sipName_QGeoPositionInfoSource, &sipType_QGeoPositionInfoSource, 3, 2}, {sipName_QGeoSatelliteInfoSource, &sipType_QGeoSatelliteInfoSource, 4, -1}, {sipName_QNmeaPositionInfoSource, &sipType_QNmeaPositionInfoSource, -1, -1}, {sipName_QNmeaSatelliteInfoSource, &sipType_QNmeaSatelliteInfoSource, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Error { AccessError, ClosedError, UnknownSourceError, UpdateTimeoutError, NoError, }; enum PositioningMethod /BaseType=Flag/ { NoPositioningMethods, SatellitePositioningMethods, NonSatellitePositioningMethods, AllPositioningMethods, }; typedef QFlags PositioningMethods; explicit QGeoPositionInfoSource(QObject *parent /TransferThis/); virtual ~QGeoPositionInfoSource(); virtual void setUpdateInterval(int msec); int updateInterval() const; virtual void setPreferredPositioningMethods(QGeoPositionInfoSource::PositioningMethods methods); QGeoPositionInfoSource::PositioningMethods preferredPositioningMethods() const; virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0; virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const = 0; virtual int minimumUpdateInterval() const = 0; QString sourceName() const; static QGeoPositionInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoPositionInfoSource *createDefaultSource(const QVariantMap ¶meters, QObject *parent /TransferThis/) /Factory/; static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QGeoPositionInfoSource *createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); virtual QGeoPositionInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void positionUpdated(const QGeoPositionInfo &update); void supportedPositioningMethodsChanged(); void errorOccurred(QGeoPositionInfoSource::Error); public: virtual bool setBackendProperty(const QString &name, const QVariant &value); virtual QVariant backendProperty(const QString &name) const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5834365 PyQt6-6.6.1/sip/QtPositioning/qgeorectangle.sip0000644000076500000240000000542014532160402020323 0ustar00philstaff// qgeorectangle.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoRectangle : QGeoShape { %TypeHeaderCode #include %End public: QGeoRectangle(); QGeoRectangle(const QGeoCoordinate ¢er, double degreesWidth, double degreesHeight); QGeoRectangle(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight); QGeoRectangle(const QList &coordinates); QGeoRectangle(const QGeoRectangle &other); QGeoRectangle(const QGeoShape &other); ~QGeoRectangle(); void setTopLeft(const QGeoCoordinate &topLeft); QGeoCoordinate topLeft() const; void setTopRight(const QGeoCoordinate &topRight); QGeoCoordinate topRight() const; void setBottomLeft(const QGeoCoordinate &bottomLeft); QGeoCoordinate bottomLeft() const; void setBottomRight(const QGeoCoordinate &bottomRight); QGeoCoordinate bottomRight() const; void setCenter(const QGeoCoordinate ¢er); QGeoCoordinate center() const; void setWidth(double degreesWidth); double width() const; void setHeight(double degreesHeight); double height() const; bool contains(const QGeoRectangle &rectangle) const; bool intersects(const QGeoRectangle &rectangle) const; void translate(double degreesLatitude, double degreesLongitude); QGeoRectangle translated(double degreesLatitude, double degreesLongitude) const; QGeoRectangle united(const QGeoRectangle &rectangle) const; QGeoRectangle &operator|=(const QGeoRectangle &rectangle); QGeoRectangle operator|(const QGeoRectangle &rectangle) const; QString toString() const; void extendRectangle(const QGeoCoordinate &coordinate); }; %End %If (Qt_6_5_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoRectangle &rectangle) /ReleaseGIL/; %End %If (Qt_6_5_0 -) QDataStream &operator>>(QDataStream &stream, QGeoRectangle &rectangle /Constrained/) /ReleaseGIL/; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.584454 PyQt6-6.6.1/sip/QtPositioning/qgeosatelliteinfo.sip0000644000076500000240000000444714532160402021231 0ustar00philstaff// qgeosatelliteinfo.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoSatelliteInfo { %TypeHeaderCode #include %End public: enum Attribute { Elevation, Azimuth, }; enum SatelliteSystem { Undefined, GPS, GLONASS, GALILEO, BEIDOU, QZSS, Multiple, CustomType, }; QGeoSatelliteInfo(); QGeoSatelliteInfo(const QGeoSatelliteInfo &other); ~QGeoSatelliteInfo(); void setSatelliteSystem(QGeoSatelliteInfo::SatelliteSystem system); QGeoSatelliteInfo::SatelliteSystem satelliteSystem() const; void setSatelliteIdentifier(int satId); int satelliteIdentifier() const; void setSignalStrength(int signalStrength); int signalStrength() const; void setAttribute(QGeoSatelliteInfo::Attribute attribute, qreal value); qreal attribute(QGeoSatelliteInfo::Attribute attribute) const; void removeAttribute(QGeoSatelliteInfo::Attribute attribute); bool hasAttribute(QGeoSatelliteInfo::Attribute attribute) const; void swap(QGeoSatelliteInfo &other /Constrained/); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info); %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info /Constrained/); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.589422 PyQt6-6.6.1/sip/QtPositioning/qgeosatelliteinfosource.sip0000644000076500000240000000512014532160402022437 0ustar00philstaff// qgeosatelliteinfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoSatelliteInfoSource : QObject { %TypeHeaderCode #include %End public: enum Error { AccessError, ClosedError, NoError, UnknownSourceError, UpdateTimeoutError, }; explicit QGeoSatelliteInfoSource(QObject *parent /TransferThis/); virtual ~QGeoSatelliteInfoSource(); static QGeoSatelliteInfoSource *createDefaultSource(QObject *parent /TransferThis/) /Factory/; static QGeoSatelliteInfoSource *createDefaultSource(const QVariantMap ¶meters, QObject *parent /TransferThis/) /Factory/; static QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent /TransferThis/) /Factory/; static QGeoSatelliteInfoSource *createSource(const QString &sourceName, const QVariantMap ¶meters, QObject *parent /TransferThis/) /Factory/; static QStringList availableSources(); QString sourceName() const; virtual void setUpdateInterval(int msec); int updateInterval() const; virtual int minimumUpdateInterval() const = 0; virtual QGeoSatelliteInfoSource::Error error() const = 0; public slots: virtual void startUpdates() = 0; virtual void stopUpdates() = 0; virtual void requestUpdate(int timeout = 0) = 0; signals: void satellitesInViewUpdated(const QList &satellites); void satellitesInUseUpdated(const QList &satellites); void errorOccurred(QGeoSatelliteInfoSource::Error); public: virtual bool setBackendProperty(const QString &name, const QVariant &value); virtual QVariant backendProperty(const QString &name) const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5852106 PyQt6-6.6.1/sip/QtPositioning/qgeoshape.sip0000644000076500000240000000460214532160402017460 0ustar00philstaff// qgeoshape.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGeoShape { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QGeoShape::CircleType: sipType = sipType_QGeoCircle; break; case QGeoShape::RectangleType: sipType = sipType_QGeoRectangle; break; case QGeoShape::PathType: sipType = sipType_QGeoPath; break; case QGeoShape::PolygonType: sipType = sipType_QGeoPolygon; break; default: sipType = 0; } %End public: QGeoShape(); QGeoShape(const QGeoShape &other); ~QGeoShape(); enum ShapeType { UnknownType, RectangleType, CircleType, PathType, PolygonType, }; QGeoShape::ShapeType type() const; bool isValid() const; bool isEmpty() const; bool contains(const QGeoCoordinate &coordinate) const; QGeoCoordinate center() const; QString toString() const; QGeoRectangle boundingGeoRectangle() const; Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &stream, const QGeoShape &shape); %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &stream, QGeoShape &shape /Constrained/); %End %If (Qt_6_2_0 -) bool operator==(const QGeoShape &lhs, const QGeoShape &rhs); %End %If (Qt_6_2_0 -) bool operator!=(const QGeoShape &lhs, const QGeoShape &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5839243 PyQt6-6.6.1/sip/QtPositioning/qnmeapositioninfosource.sip0000644000076500000240000000423514532160402022471 0ustar00philstaff// qnmeapositioninfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNmeaPositionInfoSource : QGeoPositionInfoSource { %TypeHeaderCode #include %End public: enum UpdateMode { RealTimeMode, SimulationMode, }; QNmeaPositionInfoSource(QNmeaPositionInfoSource::UpdateMode updateMode, QObject *parent /TransferThis/ = 0); virtual ~QNmeaPositionInfoSource(); QNmeaPositionInfoSource::UpdateMode updateMode() const; void setDevice(QIODevice *source); QIODevice *device() const; virtual void setUpdateInterval(int msec); virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const; virtual QGeoPositionInfoSource::PositioningMethods supportedPositioningMethods() const; virtual int minimumUpdateInterval() const; virtual QGeoPositionInfoSource::Error error() const; public slots: virtual void startUpdates(); virtual void stopUpdates(); virtual void requestUpdate(int timeout = 0); protected: virtual bool parsePosInfoFromNmeaData(const char *data /Encoding="None"/, int size, QGeoPositionInfo *posInfo, bool *hasFix); public: void setUserEquivalentRangeError(double uere); double userEquivalentRangeError() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5829055 PyQt6-6.6.1/sip/QtPositioning/qnmeasatelliteinfosource.sip0000644000076500000240000000462014532160402022611 0ustar00philstaff// qnmeasatelliteinfosource.sip generated by MetaSIP // // This file is part of the QtPositioning Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QNmeaSatelliteInfoSource : QGeoSatelliteInfoSource { %TypeHeaderCode #include %End public: enum class UpdateMode { RealTimeMode, SimulationMode, }; static QString SimulationUpdateInterval; QNmeaSatelliteInfoSource(QNmeaSatelliteInfoSource::UpdateMode mode, QObject *parent /TransferThis/ = 0); virtual ~QNmeaSatelliteInfoSource(); QNmeaSatelliteInfoSource::UpdateMode updateMode() const; void setDevice(QIODevice *source); QIODevice *device() const; virtual void setUpdateInterval(int msec); virtual int minimumUpdateInterval() const; virtual QGeoSatelliteInfoSource::Error error() const; virtual bool setBackendProperty(const QString &name, const QVariant &value); virtual QVariant backendProperty(const QString &name) const; public slots: virtual void startUpdates(); virtual void stopUpdates(); virtual void requestUpdate(int timeout = 0); protected: virtual QGeoSatelliteInfo::SatelliteSystem parseSatellitesInUseFromNmea(const char *data /Encoding="None"/, int size, QList &pnrsInUse); enum SatelliteInfoParseStatus { NotParsed, PartiallyParsed, FullyParsed, }; virtual QNmeaSatelliteInfoSource::SatelliteInfoParseStatus parseSatelliteInfoFromNmea(const char *data /Encoding="None"/, int size, QList &infos, QGeoSatelliteInfo::SatelliteSystem &system); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4642777 PyQt6-6.6.1/sip/QtPrintSupport/0000755000076500000240000000000014532160402015154 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1755962 PyQt6-6.6.1/sip/QtPrintSupport/QtPrintSupportmod.sip0000644000076500000240000000432514532160401021372 0ustar00philstaff// QtPrintSupportmod.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtPrintSupport, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qabstractprintdialog.sip %Include qpagesetupdialog.sip %Include qprintdialog.sip %Include qprintengine.sip %Include qprinter.sip %Include qprinterinfo.sip %Include qprintpreviewdialog.sip %Include qprintpreviewwidget.sip %Include qpyprintsupport_qlist.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1749568 PyQt6-6.6.1/sip/QtPrintSupport/qabstractprintdialog.sip0000644000076500000240000000756714532160401022130 0ustar00philstaff// qabstractprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QAbstractPrintDialog : QDialog { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPageSetupDialog, &sipType_QPageSetupDialog, -1, 1}, #else {0, 0, -1, 1}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewWidget) {sipName_QPrintPreviewWidget, &sipType_QPrintPreviewWidget, -1, 2}, #else {0, 0, -1, 2}, #endif #if defined(SIP_FEATURE_PyQt_PrintPreviewDialog) {sipName_QPrintPreviewDialog, &sipType_QPrintPreviewDialog, -1, 3}, #else {0, 0, -1, 3}, #endif #if defined(SIP_FEATURE_PyQt_Printer) {sipName_QAbstractPrintDialog, &sipType_QAbstractPrintDialog, 4, -1}, #else {0, 0, 4, -1}, #endif #if defined(SIP_FEATURE_PyQt_PrintDialog) {sipName_QPrintDialog, &sipType_QPrintDialog, -1, -1}, #else {0, 0, -1, -1}, #endif }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; enum PrintDialogOption /BaseType=Flag/ { PrintToFile, PrintSelection, PrintPageRange, PrintCollateCopies, PrintShowPageSize, PrintCurrentPage, }; typedef QFlags PrintDialogOptions; QAbstractPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); virtual ~QAbstractPrintDialog(); void setPrintRange(QAbstractPrintDialog::PrintRange range); QAbstractPrintDialog::PrintRange printRange() const; void setMinMax(int min, int max); int minPage() const; int maxPage() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; QPrinter *printer() const; void setOptionTabs(const QList &tabs); }; %End %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qtprintsupport_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt6_qtprintsupport_get_connection_parts_t pyqt6_qtprintsupport_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtprintsupport_get_connection_parts_t pyqt6_qtprintsupport_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtprintsupport_get_connection_parts = (pyqt6_qtprintsupport_get_connection_parts_t)sipImportSymbol("pyqt6_get_connection_parts"); Q_ASSERT(pyqt6_qtprintsupport_get_connection_parts); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1787853 PyQt6-6.6.1/sip/QtPrintSupport/qpagesetupdialog.sip0000644000076500000240000000501114532160401021223 0ustar00philstaff// qpagesetupdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPageSetupDialog : QDialog { %TypeHeaderCode #include %End public: QPageSetupDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPageSetupDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPageSetupDialog(); virtual void setVisible(bool visible); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPageSetupDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void done(int result); QPrinter *printer(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1730866 PyQt6-6.6.1/sip/QtPrintSupport/qprintdialog.sip0000644000076500000240000000561714532160401020376 0ustar00philstaff// qprintdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintDialog) class QPrintDialog : QAbstractPrintDialog { %TypeHeaderCode #include %End public: QPrintDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0); explicit QPrintDialog(QWidget *parent /TransferThis/ = 0); virtual ~QPrintDialog(); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QPrintDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End %If (Android || Linux || WebAssembly) virtual void accept(); %End virtual void done(int result); void setOption(QAbstractPrintDialog::PrintDialogOption option, bool on = true); bool testOption(QAbstractPrintDialog::PrintDialogOption option) const; void setOptions(QAbstractPrintDialog::PrintDialogOptions options); QAbstractPrintDialog::PrintDialogOptions options() const; virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End signals: void accepted(); void accepted(QPrinter *printer); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.180255 PyQt6-6.6.1/sip/QtPrintSupport/qprintengine.sip0000644000076500000240000000442714532160401020402 0ustar00philstaff// qprintengine.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrintEngine { %TypeHeaderCode #include %End public: virtual ~QPrintEngine(); enum PrintEnginePropertyKey { PPK_CollateCopies, PPK_ColorMode, PPK_Creator, PPK_DocumentName, PPK_FullPage, PPK_NumberOfCopies, PPK_Orientation, PPK_OutputFileName, PPK_PageOrder, PPK_PageRect, PPK_PageSize, PPK_PaperRect, PPK_PaperSource, PPK_PrinterName, PPK_PrinterProgram, PPK_Resolution, PPK_SelectionOption, PPK_SupportedResolutions, PPK_WindowsPageSize, PPK_FontEmbedding, PPK_Duplex, PPK_PaperSources, PPK_CustomPaperSize, PPK_PageMargins, PPK_PaperSize, PPK_CopyCount, PPK_SupportsMultipleCopies, PPK_PaperName, PPK_QPageSize, PPK_QPageMargins, PPK_QPageLayout, PPK_CustomBase, }; virtual void setProperty(QPrintEngine::PrintEnginePropertyKey key, const QVariant &value) = 0; virtual QVariant property(QPrintEngine::PrintEnginePropertyKey key) const = 0; virtual bool newPage() = 0; virtual bool abort() = 0; virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0; virtual QPrinter::PrinterState printerState() const = 0; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1814847 PyQt6-6.6.1/sip/QtPrintSupport/qprinter.sip0000644000076500000240000001110014532160401017525 0ustar00philstaff// qprinter.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinter : QPagedPaintDevice { %TypeHeaderCode #include %End public: enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution, }; explicit QPrinter(QPrinter::PrinterMode mode = QPrinter::ScreenResolution); QPrinter(const QPrinterInfo &printer, QPrinter::PrinterMode mode = QPrinter::ScreenResolution); virtual ~QPrinter(); enum PageOrder { FirstPageFirst, LastPageFirst, }; enum ColorMode { GrayScale, Color, }; enum PaperSource { OnlyOne, Lower, Middle, Manual, Envelope, EnvelopeManual, Auto, Tractor, SmallFormat, LargeFormat, LargeCapacity, Cassette, FormSource, MaxPageSource, Upper, CustomSource, LastPaperSource, }; enum PrinterState { Idle, Active, Aborted, Error, }; enum OutputFormat { NativeFormat, PdfFormat, }; enum PrintRange { AllPages, Selection, PageRange, CurrentPage, }; enum Unit { Millimeter, Point, Inch, Pica, Didot, Cicero, DevicePixel, }; enum DuplexMode { DuplexNone, DuplexAuto, DuplexLongSide, DuplexShortSide, }; void setOutputFormat(QPrinter::OutputFormat format); QPrinter::OutputFormat outputFormat() const; void setPrinterName(const QString &); QString printerName() const; bool isValid() const; void setOutputFileName(const QString &); QString outputFileName() const; void setPrintProgram(const QString &); QString printProgram() const; void setDocName(const QString &); QString docName() const; void setCreator(const QString &); QString creator() const; void setPageOrder(QPrinter::PageOrder); QPrinter::PageOrder pageOrder() const; void setResolution(int); int resolution() const; void setColorMode(QPrinter::ColorMode); QPrinter::ColorMode colorMode() const; void setCollateCopies(bool collate); bool collateCopies() const; void setFullPage(bool); bool fullPage() const; void setCopyCount(int); int copyCount() const; bool supportsMultipleCopies() const; void setPaperSource(QPrinter::PaperSource); QPrinter::PaperSource paperSource() const; void setDuplex(QPrinter::DuplexMode duplex); QPrinter::DuplexMode duplex() const; QList supportedResolutions() const; void setFontEmbeddingEnabled(bool enable); bool fontEmbeddingEnabled() const; QRectF paperRect(QPrinter::Unit) const; QRectF pageRect(QPrinter::Unit) const; %If (Android || Linux || iOS || macOS || WebAssembly) QString printerSelectionOption() const; %End %If (Android || Linux || iOS || macOS || WebAssembly) void setPrinterSelectionOption(const QString &); %End virtual bool newPage(); bool abort(); QPrinter::PrinterState printerState() const; virtual QPaintEngine *paintEngine() const; QPrintEngine *printEngine() const; void setFromTo(int fromPage, int toPage); int fromPage() const; int toPage() const; void setPrintRange(QPrinter::PrintRange range); QPrinter::PrintRange printRange() const; protected: virtual int metric(QPaintDevice::PaintDeviceMetric) const; void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine); public: void setPdfVersion(QPagedPaintDevice::PdfVersion version); QPagedPaintDevice::PdfVersion pdfVersion() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1794703 PyQt6-6.6.1/sip/QtPrintSupport/qprinterinfo.sip0000644000076500000240000000422214532160401020410 0ustar00philstaff// qprinterinfo.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) class QPrinterInfo { %TypeHeaderCode #include %End public: QPrinterInfo(); QPrinterInfo(const QPrinterInfo &src); explicit QPrinterInfo(const QPrinter &printer); ~QPrinterInfo(); QString printerName() const; bool isNull() const; bool isDefault() const; static QList availablePrinters(); static QPrinterInfo defaultPrinter(); QString description() const; QString location() const; QString makeAndModel() const; static QPrinterInfo printerInfo(const QString &printerName); bool isRemote() const; QPrinter::PrinterState state() const; QList supportedPageSizes() const; QPageSize defaultPageSize() const; bool supportsCustomPageSizes() const; QPageSize minimumPhysicalPageSize() const; QPageSize maximumPhysicalPageSize() const; QList supportedResolutions() const; static QStringList availablePrinterNames(); static QString defaultPrinterName(); QPrinter::DuplexMode defaultDuplexMode() const; QList supportedDuplexModes() const; QPrinter::ColorMode defaultColorMode() const; QList supportedColorModes() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1738386 PyQt6-6.6.1/sip/QtPrintSupport/qprintpreviewdialog.sip0000644000076500000240000000376214532160401021777 0ustar00philstaff// qprintpreviewdialog.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewDialog) class QPrintPreviewDialog : QDialog { %TypeHeaderCode #include %End public: QPrintPreviewDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QPrintPreviewDialog(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QPrintPreviewDialog(); virtual void setVisible(bool visible); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtprintsupport_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QPrinter *printer(); virtual void done(int result); signals: void paintRequested(QPrinter *printer); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1764116 PyQt6-6.6.1/sip/QtPrintSupport/qprintpreviewwidget.sip0000644000076500000240000000477614532160401022031 0ustar00philstaff// qprintpreviewwidget.sip generated by MetaSIP // // This file is part of the QtPrintSupport Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_PrintPreviewWidget) class QPrintPreviewWidget : QWidget { %TypeHeaderCode #include %End public: enum ViewMode { SinglePageView, FacingPagesView, AllPagesView, }; enum ZoomMode { CustomZoom, FitToWidth, FitInView, }; QPrintPreviewWidget(QPrinter *printer, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QPrintPreviewWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QPrintPreviewWidget(); qreal zoomFactor() const; QPageLayout::Orientation orientation() const; QPrintPreviewWidget::ViewMode viewMode() const; QPrintPreviewWidget::ZoomMode zoomMode() const; int currentPage() const; public slots: virtual void setVisible(bool visible); void print(); void zoomIn(qreal factor = 1.1); void zoomOut(qreal factor = 1.1); void setZoomFactor(qreal zoomFactor); void setOrientation(QPageLayout::Orientation orientation); void setViewMode(QPrintPreviewWidget::ViewMode viewMode); void setZoomMode(QPrintPreviewWidget::ZoomMode zoomMode); void setCurrentPage(int pageNumber); void fitToWidth(); void fitInView(); void setLandscapeOrientation(); void setPortraitOrientation(); void setSinglePageViewMode(); void setFacingPagesViewMode(); void setAllPagesViewMode(); void updatePreview(); signals: void paintRequested(QPrinter *printer); void previewChanged(); public: int pageCount() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1780376 PyQt6-6.6.1/sip/QtPrintSupport/qpyprintsupport_qlist.sip0000644000076500000240000001142714532160401022434 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtPrintSupport module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (PyQt_Printer) %MappedType QList /TypeHintIn="Iterable[QPrinter.DuplexMode]", TypeHintOut="List[QPrinter.DuplexMode]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPrinter_DuplexMode); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QPrinter_DuplexMode); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QPrinter.DuplexMode' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End %If (PyQt_Printer) %MappedType QList /TypeHintIn="Iterable[QPrinter.ColorMode]", TypeHintOut="List[QPrinter.ColorMode]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QPrinter_ColorMode); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QPrinter_ColorMode); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QPrinter.ColorMode' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4823277 PyQt6-6.6.1/sip/QtQml/0000755000076500000240000000000014532160402013214 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2363608 PyQt6-6.6.1/sip/QtQml/QtQmlmod.sip0000644000076500000240000000522414532160401015471 0ustar00philstaff// QtQmlmod.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtQml, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qqml.sip %Include qjsengine.sip %Include qjsmanagedvalue.sip %Include qjsprimitivevalue.sip %Include qjsvalue.sip %Include qjsvalueiterator.sip %Include qqmlabstracturlinterceptor.sip %Include qqmlapplicationengine.sip %Include qqmlcomponent.sip %Include qqmlcontext.sip %Include qqmlengine.sip %Include qqmlerror.sip %Include qqmlexpression.sip %Include qqmlextensionplugin.sip %Include qqmlfileselector.sip %Include qqmlincubator.sip %Include qqmllist.sip %Include qqmlnetworkaccessmanagerfactory.sip %Include qqmlparserstatus.sip %Include qqmlproperty.sip %Include qqmlpropertymap.sip %Include qqmlpropertyvaluesource.sip %Include qqmlscriptstring.sip %Include qmlattachedpropertiesobject.sip %Include qpyqmllistproperty.sip %Include qmlregistertype.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2373393 PyQt6-6.6.1/sip/QtQml/qjsengine.sip0000644000076500000240000001376514532160401015727 0ustar00philstaff// qjsengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End class QJSEngine : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QJSEngine, &sipType_QJSEngine, 9, 1}, {sipName_QQmlComponent, &sipType_QQmlComponent, -1, 2}, {sipName_QQmlContext, &sipType_QQmlContext, -1, 3}, {sipName_QQmlEngineExtensionPlugin, &sipType_QQmlEngineExtensionPlugin, -1, 4}, {sipName_QQmlExpression, &sipType_QQmlExpression, -1, 5}, {sipName_QQmlExtensionPlugin, &sipType_QQmlExtensionPlugin, -1, 6}, {sipName_QQmlFileSelector, &sipType_QQmlFileSelector, -1, 7}, {sipName_QQmlImageProviderBase, &sipType_QQmlImageProviderBase, -1, 8}, {sipName_QQmlPropertyMap, &sipType_QQmlPropertyMap, -1, -1}, {sipName_QQmlEngine, &sipType_QQmlEngine, 10, -1}, {sipName_QQmlApplicationEngine, &sipType_QQmlApplicationEngine, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QJSEngine(); explicit QJSEngine(QObject *parent /TransferThis/); virtual ~QJSEngine(); QJSValue globalObject() const; QJSValue evaluate(const QString &program, const QString &fileName = QString(), int lineNumber = 1, SIP_PYLIST exceptionStackTrace /AllowNone,TypeHint="List[str]"/ = 0) /ReleaseGIL/; %MethodCode QStringList *st; st = (a3 ? new QStringList() : SIP_NULLPTR); Py_BEGIN_ALLOW_THREADS sipRes = new QJSValue(sipCpp->evaluate(*a0, *a1, a2, st)); Py_END_ALLOW_THREADS if (st) { for (qsizetype i = 0; i < st->size(); ++i) { QString *s = new QString(st->at(i)); PyObject *s_obj = sipConvertFromNewType(s, sipType_QString, SIP_NULLPTR); if (s_obj) { if (PyList_Append(a3, s_obj) < 0) { Py_DECREF(s_obj); sipIsErr = 1; break; } Py_DECREF(s_obj); } else { delete s; sipIsErr = 1; break; } } if (sipIsErr) { delete sipRes; sipRes = SIP_NULLPTR; } delete st; } %End QJSValue newObject(); QJSValue newArray(uint length = 0); QJSValue newQObject(QObject *object /Transfer/); void collectGarbage(); enum Extension /BaseType=Flag/ { TranslationExtension, ConsoleExtension, GarbageCollectionExtension, AllExtensions, }; typedef QFlags Extensions; void installExtensions(QJSEngine::Extensions extensions, const QJSValue &object = QJSValue()); QJSValue newQMetaObject(const QMetaObject *metaObject); QJSValue importModule(const QString &fileName); QJSValue newErrorObject(QJSValue::ErrorType errorType, const QString &message = QString()); void throwError(const QString &message); %If (Qt_6_1_0 -) void throwError(const QJSValue &error); %End void throwError(QJSValue::ErrorType errorType, const QString &message = QString()); void setInterrupted(bool interrupted); bool isInterrupted() const; QString uiLanguage() const; void setUiLanguage(const QString &language); enum ObjectOwnership { CppOwnership, JavaScriptOwnership, }; static void setObjectOwnership(QObject * /GetWrapper/, QJSEngine::ObjectOwnership); %MethodCode QJSEngine::ObjectOwnership old = QJSEngine::objectOwnership(a0); QJSEngine::setObjectOwnership(a0, a1); if (old != a1 && !a0->parent()) { if (old == QJSEngine::CppOwnership) sipTransferTo(a0Wrapper, Py_None); else sipTransferBack(a0Wrapper); } %End static QJSEngine::ObjectOwnership objectOwnership(QObject *); %If (Qt_6_1_0 -) bool hasError() const; %End %If (Qt_6_1_0 -) QJSValue catchError(); %End signals: void uiLanguageChanged(); public: %If (Qt_6_2_0 -) bool registerModule(const QString &moduleName, const QJSValue &value); %End %If (Qt_6_2_0 -) QJSValue newSymbol(const QString &name); %End %If (Qt_6_5_0 -) QJSValue toScriptValue(const QVariant &value); %End %If (Qt_6_5_0 -) QJSManagedValue toManagedValue(const QVariant &value); %End %If (Qt_6_5_0 -) QJSPrimitiveValue toPrimitiveValue(const QVariant &value); %End }; QJSEngine *qjsEngine(const QObject *); %ModuleHeaderCode #include "qpyqml_api.h" %End %PostInitialisationCode qpyqml_post_init(sipModuleDict); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2419696 PyQt6-6.6.1/sip/QtQml/qjsmanagedvalue.sip0000644000076500000240000000657114532160401017110 0ustar00philstaff// qjsmanagedvalue.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_1_0 -) class QJSManagedValue /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Type { Undefined, Boolean, Number, String, Object, Symbol, Function, }; QJSManagedValue(); QJSManagedValue(QJSValue value, QJSEngine *engine); QJSManagedValue(const QJSPrimitiveValue &value, QJSEngine *engine); QJSManagedValue(const QString &string, QJSEngine *engine); QJSManagedValue(const QVariant &variant, QJSEngine *engine); ~QJSManagedValue(); bool equals(const QJSManagedValue &other) const; bool strictlyEquals(const QJSManagedValue &other) const; QJSEngine *engine() const; QJSManagedValue prototype() const; void setPrototype(const QJSManagedValue &prototype); QJSManagedValue::Type type() const; bool isUndefined() const; bool isBoolean() const; bool isNumber() const; bool isString() const; bool isObject() const; bool isSymbol() const; bool isFunction() const; bool isInteger() const; bool isNull() const; bool isRegularExpression() const; bool isArray() const; bool isUrl() const; bool isVariant() const; bool isQObject() const; bool isQMetaObject() const; bool isDate() const; bool isError() const; QString toString() const; double toNumber() const; bool toBoolean() const; QJSPrimitiveValue toPrimitive() const; QJSValue toJSValue() const; QVariant toVariant() const; int toInteger() const; QRegularExpression toRegularExpression() const; QUrl toUrl() const; QObject *toQObject() const; const QMetaObject *toQMetaObject() const; QDateTime toDateTime() const; bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; QJSValue property(const QString &name) const; void setProperty(const QString &name, const QJSValue &value); bool deleteProperty(const QString &name); bool hasProperty(quint32 arrayIndex) const; bool hasOwnProperty(quint32 arrayIndex) const; QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); bool deleteProperty(quint32 arrayIndex); QJSValue call(const QJSValueList &arguments = {}) const; QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &arguments = {}) const; QJSValue callAsConstructor(const QJSValueList &arguments = {}) const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2324312 PyQt6-6.6.1/sip/QtQml/qjsprimitivevalue.sip0000644000076500000240000000643214532160401017520 0ustar00philstaff// qjsprimitivevalue.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_1_0 -) struct QJSPrimitiveUndefined { %TypeHeaderCode #include %End }; %End %If (Qt_6_1_0 -) struct QJSPrimitiveNull { %TypeHeaderCode #include %End }; %End %If (Qt_6_1_0 -) class QJSPrimitiveValue { %TypeHeaderCode #include %End public: enum Type { Undefined, Null, Boolean, Integer, Double, String, }; QJSPrimitiveValue(); QJSPrimitiveValue(QJSPrimitiveUndefined undefined); QJSPrimitiveValue(QJSPrimitiveNull null); QJSPrimitiveValue(bool value /Constrained/); QJSPrimitiveValue(int value /Constrained/); QJSPrimitiveValue(double value /Constrained/); QJSPrimitiveValue(QString string); QJSPrimitiveValue::Type type() const; bool toBoolean() const; int toInteger() const; double toDouble() const; QString toString() const; bool strictlyEquals(const QJSPrimitiveValue &other) const; bool equals(const QJSPrimitiveValue &other) const; %If (Qt_6_2_0 -) QJSPrimitiveValue operator+(); %End %If (Qt_6_2_0 -) QJSPrimitiveValue operator-(); %End %If (Qt_6_6_0 -) QMetaType metaType() const; %End %If (Qt_6_6_0 -) void *data(); %End }; %End %If (Qt_6_1_0 -) QJSPrimitiveValue operator+(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) QJSPrimitiveValue operator-(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) QJSPrimitiveValue operator*(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) QJSPrimitiveValue operator/(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) QJSPrimitiveValue operator%(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator==(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator!=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator<(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator>(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator<=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End %If (Qt_6_1_0 -) bool operator>=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2354448 PyQt6-6.6.1/sip/QtQml/qjsvalue.sip0000644000076500000240000000705014532160401015564 0ustar00philstaff// qjsvalue.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QJSValueList; class QJSValue /TypeHintIn="Union[QJSValue, QJSValue.SpecialValue, bool, int, float, QString]"/ { %TypeHeaderCode #include %End %ConvertToTypeCode if (!sipIsErr) return qpyqml_canConvertTo_QJSValue(sipPy); return qpyqml_convertTo_QJSValue(sipPy, sipTransferObj, sipCppPtr, sipIsErr); %End public: enum SpecialValue { NullValue, UndefinedValue, }; %If (Qt_6_1_0 -) enum ObjectConversionBehavior { ConvertJSObjects, RetainJSObjects, }; %End QJSValue(QJSValue::SpecialValue value /Constrained/ = QJSValue::UndefinedValue); QJSValue(const QJSValue &other); ~QJSValue(); bool isBool() const; bool isNumber() const; bool isNull() const; bool isString() const; bool isUndefined() const; bool isVariant() const; bool isQObject() const; bool isObject() const; bool isDate() const; bool isRegExp() const; bool isArray() const; bool isError() const; %If (Qt_6_2_0 -) bool isUrl() const; %End QString toString() const; double toNumber() const; qint32 toInt() const; quint32 toUInt() const; bool toBool() const; QVariant toVariant() const; %If (Qt_6_1_0 -) QVariant toVariant(QJSValue::ObjectConversionBehavior behavior) const; %End %If (Qt_6_1_0 -) QJSPrimitiveValue toPrimitive() const; %End QObject *toQObject() const; QDateTime toDateTime() const; bool equals(const QJSValue &other) const; bool strictlyEquals(const QJSValue &other) const; QJSValue prototype() const; void setPrototype(const QJSValue &prototype); QJSValue property(const QString &name) const; void setProperty(const QString &name, const QJSValue &value); bool hasProperty(const QString &name) const; bool hasOwnProperty(const QString &name) const; QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); bool deleteProperty(const QString &name); bool isCallable() const; QJSValue call(const QJSValueList &args = QJSValueList()) const; QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const; QJSValue callAsConstructor(const QJSValueList &args = QJSValueList()) const; enum ErrorType { GenericError, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError, }; QJSValue::ErrorType errorType() const; }; QDataStream &operator<<(QDataStream &, const QJSValue &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QJSValue & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2317088 PyQt6-6.6.1/sip/QtQml/qjsvalueiterator.sip0000644000076500000240000000236314532160401017340 0ustar00philstaff// qjsvalueiterator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QJSValueIterator { %TypeHeaderCode #include %End public: QJSValueIterator(const QJSValue &value); ~QJSValueIterator(); bool hasNext() const; bool next(); QString name() const; QJSValue value() const; private: QJSValueIterator(const QJSValueIterator &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2312937 PyQt6-6.6.1/sip/QtQml/qmlattachedpropertiesobject.sip0000644000076500000240000000260414532160401021525 0ustar00philstaff// This is the SIP specification of the qmlAttachedPropertiesObject() function. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End QObject *qmlAttachedPropertiesObject(SIP_PYTYPE, QObject *object, bool create = true); %MethodCode QObject *proxy = qpyqml_find_proxy_for(a1); if (!proxy) { sipError = sipErrorFail; } else { const QMetaObject *mo = pyqt6_qtqml_get_qmetaobject((PyTypeObject *)a0); sipRes = qmlAttachedPropertiesObject(proxy, qmlAttachedPropertiesFunction(nullptr, mo), a2); } %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.240922 PyQt6-6.6.1/sip/QtQml/qmlregistertype.sip0000644000076500000240000000544314532160401017176 0ustar00philstaff// This is the SIP specification of the template versions of qmlRegisterType() // and related functions. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleHeaderCode #include %End %ModuleCode // Imports from QtCore. pyqt6_qtqml_get_qmetaobject_t pyqt6_qtqml_get_qmetaobject; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtqml_get_qmetaobject = (pyqt6_qtqml_get_qmetaobject_t)sipImportSymbol( "pyqt6_get_qmetaobject"); Q_ASSERT(pyqt6_qtqml_get_qmetaobject); %End int qmlRegisterRevision(SIP_PYTYPE, const char *uri, int major, int minor, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a1, a2, a3, nullptr, (PyTypeObject *)a4)) < 0) sipError = sipErrorFail; %End int qmlRegisterSingletonInstance(const char *uri, int major, int minor, const char *typeName, QObject *cppObject); int qmlRegisterSingletonType(SIP_PYTYPE, const char *uri, int major, int minor, SIP_PYCALLABLE factory /TypeHint="Callable[[QQmlEngine, QJSEngine], Any]"/, const char *name = 0); %MethodCode if ((sipRes = qpyqml_register_singleton_type((PyTypeObject *)a0, a1, a2, a3, a5, a4)) < 0) sipError = sipErrorFail; %End int qmlRegisterType(SIP_PYTYPE, const char *uri, int major, int minor, const char *name = 0, SIP_PYTYPE attachedProperties = 0); %MethodCode if ((sipRes = qpyqml_register_library_type((PyTypeObject *)a0, a1, a2, a3, a4, (PyTypeObject *)a5)) < 0) sipError = sipErrorFail; %End int qmlRegisterAnonymousType(SIP_PYTYPE, const char *uri, int major); %MethodCode if ((sipRes = qpyqml_register_anonymous_type((PyTypeObject *)a0, a1, a2)) < 0) sipError = sipErrorFail; %End int qmlRegisterUncreatableType(SIP_PYTYPE, const char *uri, int major, int minor, const QString &reason, const char *qmlName = 0); %MethodCode if ((sipRes = qpyqml_register_uncreatable_type((PyTypeObject *)a0, a1, a2, a3, a5, *a4)) < 0) sipError = sipErrorFail; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2386024 PyQt6-6.6.1/sip/QtQml/qpyqmllistproperty.sip0000644000076500000240000000260514532160401017757 0ustar00philstaff// This is the SIP specification of the QQmlListProperty mapped type. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QQmlListProperty /TypeHint="QQmlListProperty"/ { %TypeHeaderCode #include "qpyqmllistpropertywrapper.h" %End %ConvertFromTypeCode return qpyqml_QQmlListPropertyWrapper_New(sipCpp, 0); %End %ConvertToTypeCode if (sipIsErr == NULL) return PyObject_IsInstance(sipPy, (PyObject *)qpyqml_QQmlListPropertyWrapper_TypeObject); *sipCppPtr = ((qpyqml_QQmlListPropertyWrapper *)sipPy)->qml_list_property; // It isn't a temporary copy. return 0; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2444696 PyQt6-6.6.1/sip/QtQml/qqml.sip0000644000076500000240000000347414532160401014712 0ustar00philstaff// qqml.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End void qmlClearTypeRegistrations(); int qmlRegisterTypeNotAvailable(const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &message); int qmlRegisterUncreatableMetaObject(const QMetaObject &staticMetaObject, const char *uri, int versionMajor, int versionMinor, const char *qmlName, const QString &reason); bool qmlProtectModule(const char *uri, int majVersion); void qmlRegisterModule(const char *uri, int versionMajor, int versionMinor); int qmlRegisterSingletonType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName); int qmlRegisterType(const QUrl &url, const char *uri, int versionMajor, int versionMinor, const char *qmlName); int qmlTypeId(const char *uri, int versionMajor, int versionMinor, const char *qmlName); QQmlContext *qmlContext(const QObject *); QQmlEngine *qmlEngine(const QObject *); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2397208 PyQt6-6.6.1/sip/QtQml/qqmlabstracturlinterceptor.sip0000644000076500000240000000251214532160401021430 0ustar00philstaff// qqmlabstracturlinterceptor.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlAbstractUrlInterceptor { %TypeHeaderCode #include %End public: enum DataType { QmlFile, JavaScriptFile, QmldirFile, UrlString, }; QQmlAbstractUrlInterceptor(); virtual ~QQmlAbstractUrlInterceptor(); virtual QUrl intercept(const QUrl &path, QQmlAbstractUrlInterceptor::DataType type) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2346032 PyQt6-6.6.1/sip/QtQml/qqmlapplicationengine.sip0000644000076500000240000000406614532160401020322 0ustar00philstaff// qqmlapplicationengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlApplicationEngine : QQmlEngine { %TypeHeaderCode #include %End public: QQmlApplicationEngine(QObject *parent /TransferThis/ = 0); QQmlApplicationEngine(const QUrl &url, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlApplicationEngine(const QString &filePath, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; %If (Qt_6_5_0 -) QQmlApplicationEngine(QAnyStringView uri, QAnyStringView typeName, QObject *parent /TransferThis/ = 0); %End virtual ~QQmlApplicationEngine(); QList rootObjects() const; public slots: void load(const QUrl &url) /ReleaseGIL/; void load(const QString &filePath) /ReleaseGIL/; void loadData(const QByteArray &data, const QUrl &url = QUrl()) /ReleaseGIL/; void setExtraFileSelectors(const QStringList &extraFileSelectors); void setInitialProperties(const QVariantMap &initialProperties); %If (Qt_6_5_0 -) void loadFromModule(QAnyStringView uri, QAnyStringView typeName); %End signals: void objectCreated(QObject *object, const QUrl &url); %If (Qt_6_4_0 -) void objectCreationFailed(const QUrl &url); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2341566 PyQt6-6.6.1/sip/QtQml/qqmlcomponent.sip0000644000076500000240000000665114532160401016635 0ustar00philstaff// qqmlcomponent.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlComponent : QObject { %TypeHeaderCode #include %End public: enum CompilationMode { PreferSynchronous, Asynchronous, }; QQmlComponent(QQmlEngine *, QObject *parent /TransferThis/ = 0); QQmlComponent(QQmlEngine *, const QString &fileName, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QString &fileName, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QUrl &url, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QQmlComponent(QQmlEngine *, const QUrl &url, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; %If (Qt_6_5_0 -) QQmlComponent(QQmlEngine *engine, QAnyStringView uri, QAnyStringView typeName, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; %End %If (Qt_6_5_0 -) QQmlComponent(QQmlEngine *engine, QAnyStringView uri, QAnyStringView typeName, QQmlComponent::CompilationMode mode, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; %End QQmlComponent(QObject *parent /TransferThis/ = 0); virtual ~QQmlComponent(); enum Status { Null, Ready, Loading, Error, }; QQmlComponent::Status status() const; %If (Qt_6_5_0 -) bool isBound() const; %End bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; qreal progress() const; QUrl url() const; virtual QObject *create(QQmlContext *context = 0) /TransferBack/; QObject *createWithInitialProperties(const QVariantMap &initialProperties, QQmlContext *context = 0) /TransferBack/; virtual QObject *beginCreate(QQmlContext *) /TransferBack/; virtual void completeCreate(); void create(QQmlIncubator &, QQmlContext *context = 0, QQmlContext *forContext = 0); QQmlContext *creationContext() const; public slots: void loadUrl(const QUrl &url) /ReleaseGIL/; void loadUrl(const QUrl &url, QQmlComponent::CompilationMode mode) /ReleaseGIL/; void setData(const QByteArray &, const QUrl &baseUrl); %If (Qt_6_5_0 -) void loadFromModule(QAnyStringView uri, QAnyStringView typeName, QQmlComponent::CompilationMode mode = QQmlComponent::PreferSynchronous); %End signals: void statusChanged(QQmlComponent::Status); void progressChanged(qreal); public: QQmlEngine *engine() const; void setInitialProperties(QObject *component, const QVariantMap &properties); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2438283 PyQt6-6.6.1/sip/QtQml/qqmlcontext.sip0000644000076500000240000000372614532160401016317 0ustar00philstaff// qqmlcontext.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlContext : QObject { %TypeHeaderCode #include %End public: QQmlContext(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); QQmlContext(QQmlContext *parentContext, QObject *parent /TransferThis/ = 0); virtual ~QQmlContext(); bool isValid() const; QQmlEngine *engine() const; QQmlContext *parentContext() const; QObject *contextObject() const; void setContextObject(QObject *); QVariant contextProperty(const QString &) const; void setContextProperty(const QString &, QObject *); void setContextProperty(const QString &, const QVariant &); QString nameForObject(const QObject *) const; QUrl resolvedUrl(const QUrl &) const; void setBaseUrl(const QUrl &); QUrl baseUrl() const; struct PropertyPair { %TypeHeaderCode #include %End QString name; QVariant value; }; void setContextProperties(const QList &properties); %If (Qt_6_2_0 -) QObject *objectForName(const QString &) const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2456062 PyQt6-6.6.1/sip/QtQml/qqmlengine.sip0000644000076500000240000001334314532160401016074 0ustar00philstaff// qqmlengine.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlEngine : QJSEngine { %TypeHeaderCode #include %End public: explicit QQmlEngine(QObject *parent /TransferThis/ = 0); virtual ~QQmlEngine(); QQmlContext *rootContext() const; void clearComponentCache(); void trimComponentCache(); QStringList importPathList() const; void setImportPathList(const QStringList &paths); void addImportPath(const QString &dir); QStringList pluginPathList() const; void setPluginPathList(const QStringList &paths); void addPluginPath(const QString &dir); bool importPlugin(const QString &filePath, const QString &uri, QList *errors /GetWrapper/); %MethodCode int orig_size = (a2 ? a2->size() : 0); sipRes = sipCpp->importPlugin(*a0, *a1, a2); if (a2) { for (int i = a2->size(); i > orig_size; --i) { QQmlError *new_error = new QQmlError(a2->at(i - orig_size - 1)); PyObject *new_error_obj = sipConvertFromNewType(new_error, sipType_QQmlError, 0); if (!new_error_obj) { delete new_error; sipError = sipErrorFail; break; } if (PyList_Insert(a2Wrapper, 0, new_error_obj) < 0) { Py_DECREF(new_error_obj); sipError = sipErrorFail; break; } Py_DECREF(new_error_obj); } } %End void setNetworkAccessManagerFactory(QQmlNetworkAccessManagerFactory * /KeepReference/); QQmlNetworkAccessManagerFactory *networkAccessManagerFactory() const; QNetworkAccessManager *networkAccessManager() const; void addImageProvider(const QString &id, QQmlImageProviderBase * /Transfer/); QQmlImageProviderBase *imageProvider(const QString &id) const; void removeImageProvider(const QString &id); void setIncubationController(QQmlIncubationController * /KeepReference/); QQmlIncubationController *incubationController() const; void setOfflineStoragePath(const QString &dir); QString offlineStoragePath() const; QUrl baseUrl() const; void setBaseUrl(const QUrl &); bool outputWarningsToStandardError() const; void setOutputWarningsToStandardError(bool); static QQmlContext *contextForObject(const QObject *); static void setContextForObject(QObject *, QQmlContext *); public slots: void retranslate(); protected: virtual bool event(QEvent *); signals: void quit(); void warnings(const QList &warnings); void exit(int retCode); public: QString offlineStorageDatabaseFilePath(const QString &databaseName) const; SIP_PYOBJECT singletonInstance(int qmlTypeId) /TypeHint="QObject"/; %MethodCode QJSValue instance = sipCpp->singletonInstance(a0); if (instance.isQObject()) { sipRes = sipConvertFromType(instance.toQObject(), sipType_QObject, NULL); if (!sipRes) sipError = sipErrorFail; } else { sipRes = Py_None; Py_INCREF(sipRes); } %End %If (Qt_6_5_0 -) SIP_PYOBJECT singletonInstance(QAnyStringView moduleName, QAnyStringView typeName) /TypeHint="QObject"/; %MethodCode QJSValue instance = sipCpp->singletonInstance(*a0, *a1); if (instance.isQObject()) { sipRes = sipConvertFromType(instance.toQObject(), sipType_QObject, NULL); if (!sipRes) sipError = sipErrorFail; } else { sipRes = Py_None; Py_INCREF(sipRes); } %End %End void addUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor); void removeUrlInterceptor(QQmlAbstractUrlInterceptor *urlInterceptor); QUrl interceptUrl(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) const; %If (Qt_6_2_0 -) QList urlInterceptors() const; %End %If (Qt_6_3_0 -) void clearSingletons(); %End signals: %If (Qt_6_5_0 -) void offlineStoragePathChanged(); %End public: %If (Qt_6_6_0 -) void markCurrentFunctionAsTranslationBinding(); %End }; class QQmlImageProviderBase : QObject { %TypeHeaderCode #include %End public: enum ImageType { Image, Pixmap, Texture, ImageResponse, }; enum Flag /BaseType=Flag/ { ForceAsynchronousImageLoading, }; typedef QFlags Flags; virtual ~QQmlImageProviderBase(); virtual QQmlImageProviderBase::ImageType imageType() const = 0; virtual QQmlImageProviderBase::Flags flags() const = 0; private: QQmlImageProviderBase(); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.246164 PyQt6-6.6.1/sip/QtQml/qqmlerror.sip0000644000076500000240000000313014532160401015751 0ustar00philstaff// qqmlerror.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlError { %TypeHeaderCode #include %End public: QQmlError(); QQmlError(const QQmlError &); ~QQmlError(); bool isValid() const; QUrl url() const; void setUrl(const QUrl &); QString description() const; void setDescription(const QString &); int line() const; void setLine(int); int column() const; void setColumn(int); QString toString() const; QObject *object() const; void setObject(QObject *); QtMsgType messageType() const; void setMessageType(QtMsgType messageType); %If (Qt_6_4_0 -) void swap(QQmlError &other); %End }; bool operator==(const QQmlError &a, const QQmlError &b); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2429678 PyQt6-6.6.1/sip/QtQml/qqmlexpression.sip0000644000076500000240000000360514532160401017026 0ustar00philstaff// qqmlexpression.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExpression : QObject { %TypeHeaderCode #include %End public: QQmlExpression(); QQmlExpression(QQmlContext *, QObject *, const QString &, QObject *parent /TransferThis/ = 0); QQmlExpression(const QQmlScriptString &, QQmlContext *context = 0, QObject *scope = 0, QObject *parent /TransferThis/ = 0); virtual ~QQmlExpression(); QQmlEngine *engine() const; QQmlContext *context() const; QString expression() const; void setExpression(const QString &); bool notifyOnValueChanged() const; void setNotifyOnValueChanged(bool); QString sourceFile() const; int lineNumber() const; int columnNumber() const; void setSourceLocation(const QString &fileName, int line, int column = 0); QObject *scopeObject() const; bool hasError() const; void clearError(); QQmlError error() const; QVariant evaluate(bool *valueIsUndefined = 0) /ReleaseGIL/; signals: void valueChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2391975 PyQt6-6.6.1/sip/QtQml/qqmlextensionplugin.sip0000644000076500000240000000305714532160401020063 0ustar00philstaff// qqmlextensionplugin.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlExtensionPlugin : QObject { %TypeHeaderCode #include %End public: explicit QQmlExtensionPlugin(QObject *parent /TransferThis/ = 0); virtual ~QQmlExtensionPlugin(); virtual void registerTypes(const char *uri) = 0; QUrl baseUrl() const; virtual void unregisterTypes(); }; class QQmlEngineExtensionPlugin : QObject { %TypeHeaderCode #include %End public: explicit QQmlEngineExtensionPlugin(QObject *parent /TransferThis/ = 0); virtual ~QQmlEngineExtensionPlugin(); virtual void initializeEngine(QQmlEngine *engine, const char *uri); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2335882 PyQt6-6.6.1/sip/QtQml/qqmlfileselector.sip0000644000076500000240000000242714532160401017310 0ustar00philstaff// qqmlfileselector.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlFileSelector : QObject { %TypeHeaderCode #include %End public: QQmlFileSelector(QQmlEngine *engine, QObject *parent /TransferThis/ = 0); virtual ~QQmlFileSelector(); void setSelector(QFileSelector *selector); void setExtraSelectors(const QStringList &strings); QFileSelector *selector() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.233209 PyQt6-6.6.1/sip/QtQml/qqmlincubator.sip0000644000076500000240000000443414532160401016616 0ustar00philstaff// qqmlincubator.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlIncubator { %TypeHeaderCode #include %End public: enum IncubationMode { Asynchronous, AsynchronousIfNested, Synchronous, }; enum Status { Null, Ready, Loading, Error, }; QQmlIncubator(QQmlIncubator::IncubationMode mode = QQmlIncubator::Asynchronous); virtual ~QQmlIncubator(); void clear(); void forceCompletion(); bool isNull() const; bool isReady() const; bool isError() const; bool isLoading() const; QList errors() const; QQmlIncubator::IncubationMode incubationMode() const; QQmlIncubator::Status status() const; QObject *object() const /Factory/; void setInitialProperties(const QVariantMap &initialProperties); protected: virtual void statusChanged(QQmlIncubator::Status); virtual void setInitialState(QObject *); private: QQmlIncubator(const QQmlIncubator &); }; class QQmlIncubationController { %TypeHeaderCode #include %End public: QQmlIncubationController(); virtual ~QQmlIncubationController(); QQmlEngine *engine() const; int incubatingObjectCount() const; void incubateFor(int msecs) /ReleaseGIL/; protected: virtual void incubatingObjectCountChanged(int); private: QQmlIncubationController(const QQmlIncubationController &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2380297 PyQt6-6.6.1/sip/QtQml/qqmllist.sip0000644000076500000240000000355214532160401015603 0ustar00philstaff// qqmllist.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlListReference { %TypeHeaderCode #include %End public: QQmlListReference(); QQmlListReference(QObject *, const char *property, QQmlEngine *engine = 0); QQmlListReference(const QQmlListReference &); %If (Qt_6_1_0 -) QQmlListReference(const QVariant &variant, QQmlEngine *engine = 0); %End ~QQmlListReference(); bool isValid() const; QObject *object() const; const QMetaObject *listElementType() const; bool canAppend() const; bool canAt() const; bool canClear() const; bool canCount() const; bool isManipulable() const; bool isReadable() const; bool append(QObject *) const; QObject *at(qsizetype) const; bool clear() const; qsizetype count() const /__len__/; bool canReplace() const; bool canRemoveLast() const; bool replace(qsizetype, QObject *) const; bool removeLast() const; bool operator==(const QQmlListReference &other) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2413418 PyQt6-6.6.1/sip/QtQml/qqmlnetworkaccessmanagerfactory.sip0000644000076500000240000000225714532160401022427 0ustar00philstaff// qqmlnetworkaccessmanagerfactory.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlNetworkAccessManagerFactory { %TypeHeaderCode #include %End public: virtual ~QQmlNetworkAccessManagerFactory(); virtual QNetworkAccessManager *create(QObject *parent) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2424915 PyQt6-6.6.1/sip/QtQml/qqmlparserstatus.sip0000644000076500000240000000232314532160401017363 0ustar00philstaff// qqmlparserstatus.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlParserStatus /Mixin,PyQtInterface="org.qt-project.Qt.QQmlParserStatus"/ { %TypeHeaderCode #include %End public: QQmlParserStatus(); virtual ~QQmlParserStatus(); virtual void classBegin() = 0; virtual void componentComplete() = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2307894 PyQt6-6.6.1/sip/QtQml/qqmlproperty.sip0000644000076500000240000001012614532160401016507 0ustar00philstaff// qqmlproperty.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlProperty { %TypeHeaderCode #include %End public: enum PropertyTypeCategory { InvalidCategory, List, Object, Normal, }; enum Type { Invalid, Property, SignalProperty, }; QQmlProperty(); QQmlProperty(QObject *); QQmlProperty(QObject *, QQmlContext *); QQmlProperty(QObject *, QQmlEngine *); QQmlProperty(QObject *, const QString &); QQmlProperty(QObject *, const QString &, QQmlContext *); QQmlProperty(QObject *, const QString &, QQmlEngine *); QQmlProperty(const QQmlProperty &); ~QQmlProperty(); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End bool operator==(const QQmlProperty &) const; QQmlProperty::Type type() const; bool isValid() const; bool isProperty() const; bool isSignalProperty() const; %If (Qt_6_2_0 -) bool isBindable() const; %End int propertyType() const; QQmlProperty::PropertyTypeCategory propertyTypeCategory() const; const char *propertyTypeName() const; %If (Qt_6_1_0 -) QMetaType propertyMetaType() const; %End QString name() const; QVariant read() const; static QVariant read(const QObject *, const QString &); static QVariant read(const QObject *, const QString &, QQmlContext *); static QVariant read(const QObject *, const QString &, QQmlEngine *); bool write(const QVariant &) const; static bool write(QObject *, const QString &, const QVariant &); static bool write(QObject *, const QString &, const QVariant &, QQmlContext *); static bool write(QObject *, const QString &, const QVariant &, QQmlEngine *); bool reset() const; bool hasNotifySignal() const; bool needsNotifySignal() const; bool connectNotifySignal(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) const; %MethodCode QObject *receiver; QByteArray slot; if ((sipError = pyqt6_qtqml_get_connection_parts(a0, 0, "()", false, &receiver, slot)) == sipErrorNone) { sipRes = sipCpp->connectNotifySignal(receiver, slot.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End bool connectNotifySignal(QObject *dest, int method) const; bool isWritable() const; bool isDesignable() const; bool isResettable() const; QObject *object() const; int index() const; QMetaProperty property() const; QMetaMethod method() const; %If (Qt_6_3_0 -) void swap(QQmlProperty &other); %End }; typedef QList QQmlProperties; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qtqml_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt6_qtqml_get_connection_parts_t pyqt6_qtqml_get_connection_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qtqml_get_connection_parts_t pyqt6_qtqml_get_connection_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtqml_get_connection_parts = (pyqt6_qtqml_get_connection_parts_t)sipImportSymbol("pyqt6_get_connection_parts"); Q_ASSERT(pyqt6_qtqml_get_connection_parts); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2358902 PyQt6-6.6.1/sip/QtQml/qqmlpropertymap.sip0000644000076500000240000000335114532160401017207 0ustar00philstaff// qqmlpropertymap.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyMap : QObject { %TypeHeaderCode #include %End public: explicit QQmlPropertyMap(QObject *parent /TransferThis/ = 0); virtual ~QQmlPropertyMap(); QVariant value(const QString &key) const; %If (Qt_6_1_0 -) void insert(const QVariantHash &values); %End void insert(const QString &key, const QVariant &value); %If (Qt_6_1_0 -) void freeze(); %End void clear(const QString &key); QStringList keys() const; int count() const; int size() const /__len__/; bool isEmpty() const; bool contains(const QString &key) const; QVariant operator[](const QString &key) const; signals: void valueChanged(const QString &key, const QVariant &value); protected: virtual QVariant updateValue(const QString &key, const QVariant &input); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2433515 PyQt6-6.6.1/sip/QtQml/qqmlpropertyvaluesource.sip0000644000076500000240000000234614532160401020772 0ustar00philstaff// qqmlpropertyvaluesource.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlPropertyValueSource /Mixin,PyQtInterface="org.qt-project.Qt.QQmlPropertyValueSource"/ { %TypeHeaderCode #include %End public: QQmlPropertyValueSource(); virtual ~QQmlPropertyValueSource(); virtual void setTarget(const QQmlProperty &) = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.2403212 PyQt6-6.6.1/sip/QtQml/qqmlscriptstring.sip0000644000076500000240000000266114532160401017363 0ustar00philstaff// qqmlscriptstring.sip generated by MetaSIP // // This file is part of the QtQml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQmlScriptString { %TypeHeaderCode #include %End public: QQmlScriptString(); QQmlScriptString(const QQmlScriptString &); ~QQmlScriptString(); bool isEmpty() const; bool isUndefinedLiteral() const; bool isNullLiteral() const; QString stringLiteral() const; qreal numberLiteral(bool *ok) const; bool booleanLiteral(bool *ok) const; bool operator==(const QQmlScriptString &) const; bool operator!=(const QQmlScriptString &) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5934334 PyQt6-6.6.1/sip/QtQuick/0000755000076500000240000000000014532160403013540 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4384665 PyQt6-6.6.1/sip/QtQuick/QtQuickmod.sip0000644000076500000240000000544414532160401016343 0ustar00philstaff// QtQuickmod.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtQuick, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qquickframebufferobject.sip %Include qquickgraphicsconfiguration.sip %Include qquickgraphicsdevice.sip %Include qquickimageprovider.sip %Include qquickitem.sip %Include qquickitemgrabresult.sip %Include qquickpainteditem.sip %Include qquickrendercontrol.sip %Include qquickrendertarget.sip %Include qquicktextdocument.sip %Include qquickview.sip %Include qquickwindow.sip %Include qsgflatcolormaterial.sip %Include qsggeometry.sip %Include qsgimagenode.sip %Include qsgmaterial.sip %Include qsgmaterialshader.sip %Include qsgmaterialtype.sip %Include qsgnode.sip %Include qsgrectanglenode.sip %Include qsgrendererinterface.sip %Include qsgrendernode.sip %Include qsgsimplerectnode.sip %Include qsgsimpletexturenode.sip %Include qsgtexture.sip %Include qsgtexture_platform.sip %Include qsgtexturematerial.sip %Include qsgtextureprovider.sip %Include qsgvertexcolormaterial.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4353013 PyQt6-6.6.1/sip/QtQuick/qquickframebufferobject.sip0000644000076500000240000000476414532160401021157 0ustar00philstaff// qquickframebufferobject.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QOpenGLFramebufferObject /External/; class QQuickFramebufferObject : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: class Renderer /Supertype=PyQt6.sip.wrapper/ { %TypeHintCode try: from PyQt6.QtOpenGL import QOpenGLFramebufferObject except ImportError: pass %End %TypeHeaderCode #include %End protected: Renderer(); virtual ~Renderer(); virtual void render() = 0; %If (PyQt_OpenGL) virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size); %End virtual void synchronize(QQuickFramebufferObject *); %If (PyQt_OpenGL) QOpenGLFramebufferObject *framebufferObject() const; %End void update(); void invalidateFramebufferObject(); }; QQuickFramebufferObject(QQuickItem *parent /TransferThis/ = 0); bool textureFollowsItemSize() const; void setTextureFollowsItemSize(bool follows); virtual QQuickFramebufferObject::Renderer *createRenderer() const = 0 /Factory/; protected: virtual void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); signals: void textureFollowsItemSizeChanged(bool); public: virtual bool isTextureProvider() const; virtual QSGTextureProvider *textureProvider() const; virtual void releaseResources(); bool mirrorVertically() const; void setMirrorVertically(bool enable); signals: void mirrorVerticallyChanged(bool); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4455929 PyQt6-6.6.1/sip/QtQuick/qquickgraphicsconfiguration.sip0000644000076500000240000000457114532160401022070 0ustar00philstaff// qquickgraphicsconfiguration.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickGraphicsConfiguration { %TypeHeaderCode #include %End public: QQuickGraphicsConfiguration(); QQuickGraphicsConfiguration(const QQuickGraphicsConfiguration &other); ~QQuickGraphicsConfiguration(); void setDeviceExtensions(const QByteArrayList &extensions); QByteArrayList deviceExtensions() const; void setDepthBufferFor2D(bool enable); bool isDepthBufferEnabledFor2D() const; %If (Qt_6_1_0 -) static QByteArrayList preferredInstanceExtensions(); %End %If (Qt_6_5_0 -) void setDebugLayer(bool enable); %End %If (Qt_6_5_0 -) bool isDebugLayerEnabled() const; %End %If (Qt_6_5_0 -) void setDebugMarkers(bool enable); %End %If (Qt_6_5_0 -) bool isDebugMarkersEnabled() const; %End %If (Qt_6_5_0 -) void setPreferSoftwareDevice(bool enable); %End %If (Qt_6_5_0 -) bool prefersSoftwareDevice() const; %End %If (Qt_6_5_0 -) void setAutomaticPipelineCache(bool enable); %End %If (Qt_6_5_0 -) bool isAutomaticPipelineCacheEnabled() const; %End %If (Qt_6_5_0 -) void setPipelineCacheSaveFile(const QString &filename); %End %If (Qt_6_5_0 -) QString pipelineCacheSaveFile() const; %End %If (Qt_6_5_0 -) void setPipelineCacheLoadFile(const QString &filename); %End %If (Qt_6_5_0 -) QString pipelineCacheLoadFile() const; %End %If (Qt_6_6_0 -) void setTimestamps(bool enable); %End %If (Qt_6_6_0 -) bool timestampsEnabled() const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4298668 PyQt6-6.6.1/sip/QtQuick/qquickgraphicsdevice.sip0000644000076500000240000000242214532160401020451 0ustar00philstaff// qquickgraphicsdevice.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickGraphicsDevice { %TypeHeaderCode #include %End public: QQuickGraphicsDevice(); ~QQuickGraphicsDevice(); QQuickGraphicsDevice(const QQuickGraphicsDevice &other); bool isNull() const; %If (PyQt_OpenGL) static QQuickGraphicsDevice fromOpenGLContext(QOpenGLContext *context); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4440491 PyQt6-6.6.1/sip/QtQuick/qquickimageprovider.sip0000644000076500000240000000540414532160401020331 0ustar00philstaff// qquickimageprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickTextureFactory : QObject { %TypeHeaderCode #include %End public: QQuickTextureFactory(); virtual ~QQuickTextureFactory(); virtual QSGTexture *createTexture(QQuickWindow *window) const = 0 /Factory/; virtual QSize textureSize() const = 0; virtual int textureByteCount() const = 0; virtual QImage image() const; static QQuickTextureFactory *textureFactoryForImage(const QImage &image) /Factory/; }; class QQuickImageProvider : QQmlImageProviderBase { %TypeHeaderCode #include %End public: QQuickImageProvider(QQmlImageProviderBase::ImageType type, QQmlImageProviderBase::Flags flags = QQmlImageProviderBase::Flags()); virtual ~QQuickImageProvider(); virtual QQmlImageProviderBase::ImageType imageType() const; virtual QQmlImageProviderBase::Flags flags() const; virtual QImage requestImage(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QPixmap requestPixmap(const QString &id, QSize *size /Out/, const QSize &requestedSize); virtual QQuickTextureFactory *requestTexture(const QString &id, QSize *size /Out/, const QSize &requestedSize) /Factory/; }; class QQuickImageResponse : QObject { %TypeHeaderCode #include %End public: QQuickImageResponse(); virtual ~QQuickImageResponse(); virtual QQuickTextureFactory *textureFactory() const = 0 /Factory/; virtual QString errorString() const; public slots: virtual void cancel(); signals: void finished(); }; class QQuickAsyncImageProvider : QQuickImageProvider { %TypeHeaderCode #include %End public: QQuickAsyncImageProvider(); virtual ~QQuickAsyncImageProvider(); virtual QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) = 0 /Factory/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4488559 PyQt6-6.6.1/sip/QtQuick/qquickitem.sip0000644000076500000240000002366414532160401016442 0ustar00philstaff// qquickitem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickItem : QObject, QQmlParserStatus /ExportDerived/ { %TypeHeaderCode #include %End public: enum Flag /BaseType=Flag/ { ItemClipsChildrenToShape, ItemAcceptsInputMethod, ItemIsFocusScope, ItemHasContents, ItemAcceptsDrops, %If (Qt_6_3_0 -) ItemIsViewport, %End %If (Qt_6_3_0 -) ItemObservesViewport, %End }; typedef QFlags Flags; enum ItemChange { ItemChildAddedChange, ItemChildRemovedChange, ItemSceneChange, ItemVisibleHasChanged, ItemParentHasChanged, ItemOpacityHasChanged, ItemActiveFocusHasChanged, ItemRotationHasChanged, ItemAntialiasingHasChanged, ItemDevicePixelRatioHasChanged, ItemEnabledHasChanged, }; struct ItemChangeData { %TypeHeaderCode #include %End ItemChangeData(QQuickItem *v); ItemChangeData(QQuickWindow *v); ItemChangeData(qreal v /Constrained/); ItemChangeData(bool v /Constrained/); QQuickItem *item; QQuickWindow *window; qreal realValue; bool boolValue; }; enum TransformOrigin { TopLeft, Top, TopRight, Left, Center, Right, BottomLeft, Bottom, BottomRight, }; explicit QQuickItem(QQuickItem *parent /TransferThis/ = 0); virtual ~QQuickItem(); QQuickWindow *window() const; QQuickItem *parentItem() const; void setParentItem(QQuickItem *parent); void stackBefore(const QQuickItem *); void stackAfter(const QQuickItem *); QRectF childrenRect(); QList childItems() const; bool clip() const; void setClip(bool); QString state() const; void setState(const QString &); qreal baselineOffset() const; void setBaselineOffset(qreal); qreal x() const; qreal y() const; void setX(qreal); void setY(qreal); qreal width() const; void setWidth(qreal); void resetWidth(); void setImplicitWidth(qreal); qreal implicitWidth() const; qreal height() const; void setHeight(qreal); void resetHeight(); void setImplicitHeight(qreal); qreal implicitHeight() const; void setSize(const QSizeF &size); QQuickItem::TransformOrigin transformOrigin() const; void setTransformOrigin(QQuickItem::TransformOrigin); qreal z() const; void setZ(qreal); qreal rotation() const; void setRotation(qreal); qreal scale() const; void setScale(qreal); qreal opacity() const; void setOpacity(qreal); bool isVisible() const; void setVisible(bool); bool isEnabled() const; void setEnabled(bool); bool smooth() const; void setSmooth(bool); bool antialiasing() const; void setAntialiasing(bool); QQuickItem::Flags flags() const; void setFlag(QQuickItem::Flag flag, bool enabled = true); void setFlags(QQuickItem::Flags flags); bool hasActiveFocus() const; bool hasFocus() const; void setFocus(bool); bool isFocusScope() const; QQuickItem *scopedFocusItem() const; Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); QCursor cursor() const; void setCursor(const QCursor &cursor); void unsetCursor(); void grabMouse(); void ungrabMouse(); bool keepMouseGrab() const; void setKeepMouseGrab(bool); bool filtersChildMouseEvents() const; void setFiltersChildMouseEvents(bool filter); void grabTouchPoints(const QList &ids); void ungrabTouchPoints(); bool keepTouchGrab() const; void setKeepTouchGrab(bool); virtual bool contains(const QPointF &point) const; QPointF mapToItem(const QQuickItem *item, const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QRectF mapRectToItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QPointF mapFromItem(const QQuickItem *item, const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QRectF mapRectFromItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; void polish(); void forceActiveFocus(); QQuickItem *childAt(qreal x, qreal y) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; struct UpdatePaintNodeData { %TypeHeaderCode #include %End QSGTransformNode *transformNode; private: UpdatePaintNodeData(); }; virtual bool isTextureProvider() const; virtual QSGTextureProvider *textureProvider() const; public slots: void update() /ReleaseGIL/; signals: void childrenRectChanged(const QRectF &); void baselineOffsetChanged(qreal); void stateChanged(const QString &); void focusChanged(bool); void activeFocusChanged(bool); void parentChanged(QQuickItem *); void transformOriginChanged(QQuickItem::TransformOrigin); void smoothChanged(bool); void antialiasingChanged(bool); void clipChanged(bool); void opacityChanged(); void enabledChanged(); void visibleChanged(); void rotationChanged(); void scaleChanged(); void xChanged(); void yChanged(); void widthChanged(); void heightChanged(); void zChanged(); void implicitWidthChanged(); void implicitHeightChanged(); protected: virtual bool event(QEvent *); bool isComponentComplete() const; virtual void itemChange(QQuickItem::ItemChange, const QQuickItem::ItemChangeData &); void updateInputMethod(Qt::InputMethodQueries queries = Qt::ImQueryInput); bool widthValid() const; bool heightValid() const; virtual void classBegin(); virtual void componentComplete(); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void inputMethodEvent(QInputMethodEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mouseUngrabEvent(); virtual void touchUngrabEvent(); virtual void wheelEvent(QWheelEvent *event); virtual void touchEvent(QTouchEvent *event); virtual void hoverEnterEvent(QHoverEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); virtual void hoverLeaveEvent(QHoverEvent *event); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual bool childMouseEventFilter(QQuickItem *, QEvent *); virtual void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry); virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); %VirtualCatcherCode PyObject *res; res = sipCallMethod(&sipIsErr, sipMethod, "DD", a0, sipType_QSGNode, NULL, a1, sipType_QQuickItem_UpdatePaintNodeData, NULL); if (res) { sipParseResult(&sipIsErr, sipMethod, res, "H0", sipType_QSGNode, &sipRes); if (!sipIsErr && sipRes && (sipRes->flags() & QSGNode::OwnedByParent)) sipTransferTo(res, (PyObject *)sipPySelf); Py_DECREF(res); } %End virtual void releaseResources(); virtual void updatePolish(); public: bool activeFocusOnTab() const; void setActiveFocusOnTab(bool); void setFocus(bool focus, Qt::FocusReason reason); void forceActiveFocus(Qt::FocusReason reason); QQuickItem *nextItemInFocusChain(bool forward = true); signals: void activeFocusOnTabChanged(bool); void windowChanged(QQuickWindow *window); public: void resetAntialiasing(); QQuickItemGrabResult *grabToImage(const QSize &targetSize = QSize()) /Factory/; %MethodCode QSharedPointer *grab; Py_BEGIN_ALLOW_THREADS // This will leak but there seems to be no way to detach the object. grab = new QSharedPointer(sipCpp->grabToImage(*a0)); Py_END_ALLOW_THREADS sipRes = grab->data(); %End bool isAncestorOf(const QQuickItem *child) const; QPointF mapToGlobal(const QPointF &point) const; QPointF mapFromGlobal(const QPointF &point) const; QSizeF size() const; bool acceptTouchEvents() const; void setAcceptTouchEvents(bool accept); QObject *containmentMask() const; void setContainmentMask(QObject *mask /KeepReference/); signals: void containmentMaskChanged(); public: %If (Qt_6_3_0 -) QQuickItem *viewportItem() const; %End %If (Qt_6_3_0 -) void ensurePolished(); %End %If (Qt_6_3_0 -) void dumpItemTree() const; %End }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.44746 PyQt6-6.6.1/sip/QtQuick/qquickitemgrabresult.sip0000644000076500000240000000253014532160401020522 0ustar00philstaff// qquickitemgrabresult.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickItemGrabResult : QObject { %TypeHeaderCode #include %End public: QImage image() const; QUrl url() const; bool saveToFile(const QString &fileName) const; %If (Qt_6_2_0 -) bool saveToFile(const QUrl &fileName) const; %End protected: virtual bool event(QEvent *); signals: void ready(); private: QQuickItemGrabResult(QObject *parent = 0); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4323888 PyQt6-6.6.1/sip/QtQuick/qquickpainteditem.sip0000644000076500000240000000564714532160401020010 0ustar00philstaff// qquickpainteditem.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickPaintedItem : QQuickItem /ExportDerived/ { %TypeHeaderCode #include %End public: explicit QQuickPaintedItem(QQuickItem *parent /TransferThis/ = 0); virtual ~QQuickPaintedItem(); enum RenderTarget { Image, FramebufferObject, InvertedYFramebufferObject, }; enum PerformanceHint /BaseType=Flag/ { FastFBOResizing, }; typedef QFlags PerformanceHints; void update(const QRect &rect = QRect()); bool opaquePainting() const; void setOpaquePainting(bool opaque); bool antialiasing() const; void setAntialiasing(bool enable); bool mipmap() const; void setMipmap(bool enable); QQuickPaintedItem::PerformanceHints performanceHints() const; void setPerformanceHint(QQuickPaintedItem::PerformanceHint hint, bool enabled = true); void setPerformanceHints(QQuickPaintedItem::PerformanceHints hints); QRectF contentsBoundingRect() const; QSize contentsSize() const; void setContentsSize(const QSize &); void resetContentsSize(); qreal contentsScale() const; void setContentsScale(qreal); QColor fillColor() const; void setFillColor(const QColor &); QQuickPaintedItem::RenderTarget renderTarget() const; void setRenderTarget(QQuickPaintedItem::RenderTarget target); virtual void paint(QPainter *painter) = 0; signals: void fillColorChanged(); void contentsSizeChanged(); void contentsScaleChanged(); void renderTargetChanged(); protected: virtual QSGNode *updatePaintNode(QSGNode *, QQuickItem::UpdatePaintNodeData *); public: virtual bool isTextureProvider() const; virtual QSGTextureProvider *textureProvider() const; protected: virtual void releaseResources(); virtual void itemChange(QQuickItem::ItemChange, const QQuickItem::ItemChangeData &); public: QSize textureSize() const; void setTextureSize(const QSize &size); signals: void textureSizeChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4379945 PyQt6-6.6.1/sip/QtQuick/qquickrendercontrol.sip0000644000076500000240000000317614532160401020360 0ustar00philstaff// qquickrendercontrol.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickRenderControl : QObject { %TypeHeaderCode #include %End public: explicit QQuickRenderControl(QObject *parent /TransferThis/ = 0); virtual ~QQuickRenderControl(); bool initialize(); void invalidate(); void polishItems(); void render(); bool sync(); static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = 0); virtual QWindow *renderWindow(QPoint *offset); void prepareThread(QThread *targetThread); signals: void renderRequested(); void sceneChanged(); public: void setSamples(int sampleCount); int samples() const; void beginFrame(); void endFrame(); QQuickWindow *window() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.431816 PyQt6-6.6.1/sip/QtQuick/qquickrendertarget.sip0000644000076500000240000000406414532160401020163 0ustar00philstaff// qquickrendertarget.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickRenderTarget { %TypeHeaderCode #include %End public: QQuickRenderTarget(); ~QQuickRenderTarget(); QQuickRenderTarget(const QQuickRenderTarget &other); bool isNull() const; %If (PyQt_OpenGL) static QQuickRenderTarget fromOpenGLTexture(uint textureId, const QSize &pixelSize, int sampleCount = 1); %End %If (Qt_6_4_0 -) static QQuickRenderTarget fromOpenGLTexture(uint textureId, uint format, const QSize &pixelSize, int sampleCount = 1); %End %If (Qt_6_2_0 -) static QQuickRenderTarget fromOpenGLRenderBuffer(uint renderbufferId, const QSize &pixelSize, int sampleCount = 1); %End %If (Qt_6_4_0 -) static QQuickRenderTarget fromPaintDevice(QPaintDevice *device); %End %If (Qt_6_3_0 -) qreal devicePixelRatio() const; %End %If (Qt_6_3_0 -) void setDevicePixelRatio(qreal ratio); %End %If (Qt_6_4_0 -) bool mirrorVertically() const; %End %If (Qt_6_4_0 -) void setMirrorVertically(bool enable); %End }; bool operator==(const QQuickRenderTarget &lhs, const QQuickRenderTarget &rhs); bool operator!=(const QQuickRenderTarget &lhs, const QQuickRenderTarget &rhs); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4411428 PyQt6-6.6.1/sip/QtQuick/qquicktextdocument.sip0000644000076500000240000000221014532160401020207 0ustar00philstaff// qquicktextdocument.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickTextDocument : QObject { %TypeHeaderCode #include %End public: QQuickTextDocument(QQuickItem *parent /TransferThis/); QTextDocument *textDocument() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.446668 PyQt6-6.6.1/sip/QtQuick/qquickview.sip0000644000076500000240000000445114532160401016447 0ustar00philstaff// qquickview.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickView : QQuickWindow /ExportDerived/ { %TypeHeaderCode #include %End public: explicit QQuickView(QWindow *parent /TransferThis/ = 0); QQuickView(QQmlEngine *engine, QWindow *parent /TransferThis/); QQuickView(const QUrl &source, QWindow *parent /TransferThis/ = 0); virtual ~QQuickView() /ReleaseGIL/; QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickView::ResizeMode resizeMode() const; void setResizeMode(QQuickView::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickView::Status status() const; QList errors() const; QSize initialSize() const; public slots: void setSource(const QUrl &) /ReleaseGIL/; void setInitialProperties(const QVariantMap &initialProperties); signals: void statusChanged(QQuickView::Status); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.440175 PyQt6-6.6.1/sip/QtQuick/qquickwindow.sip0000644000076500000240000001542014532160401017002 0ustar00philstaff// qquickwindow.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickWindow : QWindow /ExportDerived/ { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QQuickImageProvider, &sipType_QQuickImageProvider, 10, 1}, {sipName_QQuickItem, &sipType_QQuickItem, 11, 2}, {sipName_QQuickImageResponse, &sipType_QQuickImageResponse, -1, 3}, {sipName_QQuickItemGrabResult, &sipType_QQuickItemGrabResult, -1, 4}, {sipName_QQuickRenderControl, &sipType_QQuickRenderControl, -1, 5}, {sipName_QQuickTextDocument, &sipType_QQuickTextDocument, -1, 6}, {sipName_QQuickTextureFactory, &sipType_QQuickTextureFactory, -1, 7}, {sipName_QQuickWindow, &sipType_QQuickWindow, 13, 8}, {sipName_QSGTexture, &sipType_QSGTexture, 14, 9}, {sipName_QSGTextureProvider, &sipType_QSGTextureProvider, -1, -1}, {sipName_QQuickAsyncImageProvider, &sipType_QQuickAsyncImageProvider, -1, -1}, {sipName_QQuickFramebufferObject, &sipType_QQuickFramebufferObject, -1, 12}, {sipName_QQuickPaintedItem, &sipType_QQuickPaintedItem, -1, -1}, {sipName_QQuickView, &sipType_QQuickView, -1, -1}, {sipName_QSGDynamicTexture, &sipType_QSGDynamicTexture, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum CreateTextureOption /BaseType=Flag/ { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, TextureCanUseAtlas, TextureIsOpaque, }; typedef QFlags CreateTextureOptions; explicit QQuickWindow(QWindow *parent /TransferThis/ = 0); virtual ~QQuickWindow() /ReleaseGIL/; QQuickItem *contentItem() const; QQuickItem *activeFocusItem() const; virtual QObject *focusObject() const; QQuickItem *mouseGrabberItem() const; QImage grabWindow() /ReleaseGIL/; void setRenderTarget(const QQuickRenderTarget &target); QQuickRenderTarget renderTarget() const; QQmlIncubationController *incubationController() const; QSGTexture *createTextureFromImage(const QImage &image) const /Factory/; QSGTexture *createTextureFromImage(const QImage &image, QQuickWindow::CreateTextureOptions options) const /Factory/; void setColor(const QColor &color); QColor color() const; void setPersistentSceneGraph(bool persistent); bool isPersistentSceneGraph() const; signals: void frameSwapped(); void sceneGraphInitialized(); void sceneGraphInvalidated(); void beforeSynchronizing(); void beforeRendering(); void afterRendering(); void colorChanged(const QColor &); public slots: void update(); void releaseResources(); protected: virtual void exposeEvent(QExposeEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void tabletEvent(QTabletEvent *); virtual void closeEvent(QCloseEvent *); public: static bool hasDefaultAlphaBuffer(); static void setDefaultAlphaBuffer(bool useAlpha); signals: void closing(QQuickCloseEvent *close); void activeFocusItemChanged(); public: enum SceneGraphError { ContextNotAvailable, }; signals: void afterSynchronizing(); void afterAnimating(); void sceneGraphAboutToStop(); void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); public: enum RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, NoStage, }; void scheduleRenderJob(QRunnable *job /Transfer/, QQuickWindow::RenderStage schedule) /ReleaseGIL/; qreal effectiveDevicePixelRatio() const; bool isSceneGraphInitialized() const; QSGRendererInterface *rendererInterface() const; static void setSceneGraphBackend(const QString &backend); QSGRectangleNode *createRectangleNode() const /Factory/; QSGImageNode *createImageNode() const /Factory/; static QString sceneGraphBackend(); enum TextRenderType { QtTextRendering, NativeTextRendering, }; static QQuickWindow::TextRenderType textRenderType(); static void setTextRenderType(QQuickWindow::TextRenderType renderType); void beginExternalCommands(); void endExternalCommands(); signals: void beforeRenderPassRecording(); void afterRenderPassRecording(); void beforeFrameBegin(); void afterFrameEnd(); public: void setPersistentGraphics(bool persistent); bool isPersistentGraphics() const; static void setGraphicsApi(QSGRendererInterface::GraphicsApi api); static QSGRendererInterface::GraphicsApi graphicsApi(); void setGraphicsDevice(const QQuickGraphicsDevice &device); QQuickGraphicsDevice graphicsDevice() const; void setGraphicsConfiguration(const QQuickGraphicsConfiguration &config); QQuickGraphicsConfiguration graphicsConfiguration() const; }; class QQuickCloseEvent; %ModuleHeaderCode #include "qpyquick_api.h" %End %PostInitialisationCode qpyquick_post_init(); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4342747 PyQt6-6.6.1/sip/QtQuick/qsgflatcolormaterial.sip0000644000076500000240000000254114532160401020474 0ustar00philstaff// qsgflatcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGFlatColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGFlatColorMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const /Factory/; void setColor(const QColor &color); const QColor &color() const; virtual int compare(const QSGMaterial *other) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4375672 PyQt6-6.6.1/sip/QtQuick/qsggeometry.sip0000644000076500000240000002673414532160401016635 0ustar00philstaff// qsggeometry.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGGeometry /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: struct Attribute { %TypeHeaderCode #include %End int position; int tupleSize; int type; uint isVertexCoordinate; QSGGeometry::AttributeType attributeType; static QSGGeometry::Attribute create(int pos, int tupleSize, int primitiveType, bool isPosition = false) /Factory/; static QSGGeometry::Attribute createWithAttributeType(int pos, int tupleSize, int primitiveType, QSGGeometry::AttributeType attributeType) /Factory/; }; struct AttributeSet /NoDefaultCtors/ { %TypeHeaderCode #include #include %End AttributeSet(SIP_PYOBJECT attributes /TypeHint="Iterable[QSGGeometry.Attribute]"/, int stride = 0); %MethodCode PyObject *iter = PyObject_GetIter(a0); if (!iter || PyUnicode_Check(a0)) { Py_XDECREF(iter); PyErr_SetString(PyExc_TypeError, "iterable object expected"); sipError = sipErrorContinue; } else { QList attrs; int stride = 0; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) sipError = sipErrorFail; break; } int state, is_err = 0; QSGGeometry::Attribute *attr; attr = reinterpret_cast( sipForceConvertToType(itm, sipType_QSGGeometry_Attribute, 0, SIP_NOT_NONE, &state, &is_err)); if (is_err) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QSGGeometry.Attribute' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); sipError = sipErrorFail; break; } // Calculate the stride if there no explicit one. if (a1 <= 0) { int size; switch (attr->type) { case QSGGeometry::ByteType: size = sizeof (qint8); break; case QSGGeometry::DoubleType: size = sizeof (double); break; case QSGGeometry::FloatType: size = sizeof (float); break; case QSGGeometry::IntType: size = sizeof (qint32); break; default: size = 0; } if (!size) { PyErr_Format(PyExc_TypeError, "index %zd has an unsupported primitive type", i); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); sipError = sipErrorFail; break; } stride += attr->tupleSize * size; } attrs.append(*attr); sipReleaseType(attr, sipType_QSGGeometry_Attribute, state); Py_DECREF(itm); } Py_DECREF(iter); if (sipError == sipErrorNone) { if (attrs.isEmpty()) { PyErr_SetString(PyExc_TypeError, "no attributes defined"); sipError = sipErrorFail; } else { PyObject *bytes = PyBytes_FromStringAndSize( reinterpret_cast(attrs.data()), sizeof (QSGGeometry::Attribute) * attrs.size()); if (!bytes) { sipError = sipErrorFail; } else { sipCpp = new QSGGeometry::AttributeSet; sipCpp->count = attrs.size(); sipCpp->stride = (a1 > 0 ? a1 : stride); sipCpp->attributes = reinterpret_cast( PyBytes_AsString(bytes)); sipSetUserObject(sipSelf, bytes); } } } } %End int count; int stride; const QSGGeometry::Attribute *attributes /TypeHint="PyQt6.sip.array[QSGGeometry.Attribute]"/ { %GetCode sipPy = sipConvertToTypedArray((void *)sipCpp->attributes, sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->count, SIP_READ_ONLY); %End %SetCode sipErr = 1; PyErr_SetString(PyExc_ValueError, "array is read-only"); %End }; }; struct Point2D { %TypeHeaderCode #include %End float x; float y; void set(float nx, float ny); }; struct TexturedPoint2D { %TypeHeaderCode #include %End float x; float y; float tx; float ty; void set(float nx, float ny, float ntx, float nty); }; struct ColoredPoint2D { %TypeHeaderCode #include %End float x; float y; unsigned char r /PyInt/; unsigned char g /PyInt/; unsigned char b /PyInt/; unsigned char a /PyInt/; void set(float nx, float ny, uchar nr /PyInt/, uchar ng /PyInt/, uchar nb /PyInt/, uchar na /PyInt/); }; static const QSGGeometry::AttributeSet &defaultAttributes_Point2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_TexturedPoint2D() /NoCopy/; static const QSGGeometry::AttributeSet &defaultAttributes_ColoredPoint2D() /NoCopy/; enum DataPattern { AlwaysUploadPattern, StreamPattern, DynamicPattern, StaticPattern, }; QSGGeometry(const QSGGeometry::AttributeSet &attribs /KeepReference/, int vertexCount, int indexCount = 0, int indexType = QSGGeometry::UnsignedShortType); virtual ~QSGGeometry(); void setDrawingMode(unsigned int mode); unsigned int drawingMode() const; void allocate(int vertexCount, int indexCount = 0); int vertexCount() const; void *vertexData(); int indexType() const; int indexCount() const; void *indexData(); int attributeCount() const; SIP_PYOBJECT attributes() const /TypeHint="PyQt6.sip.array[QSGGeometry.Attribute]"/; %MethodCode sipRes = sipConvertToTypedArray((void *)sipCpp->attributes(), sipType_QSGGeometry_Attribute, "iiiI", sizeof (QSGGeometry::Attribute), sipCpp->attributeCount(), SIP_READ_ONLY); %End int sizeOfVertex() const; static void updateRectGeometry(QSGGeometry *g, const QRectF &rect); static void updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &sourceRect); void setIndexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern indexDataPattern() const; void setVertexDataPattern(QSGGeometry::DataPattern p); QSGGeometry::DataPattern vertexDataPattern() const; void markIndexDataDirty(); void markVertexDataDirty(); float lineWidth() const; void setLineWidth(float w); SIP_PYOBJECT indexDataAsUInt() /TypeHint="PyQt6.sip.array[int]"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUInt(), "I", sipCpp->indexCount(), 0); %End SIP_PYOBJECT indexDataAsUShort() /TypeHint="PyQt6.sip.array[int]"/; %MethodCode sipRes = sipConvertToArray(sipCpp->indexDataAsUShort(), "H", sipCpp->indexCount(), 0); %End SIP_PYOBJECT vertexDataAsPoint2D() /TypeHint="PyQt6.sip.array[QSGGeometry.Point2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsPoint2D(), sipType_QSGGeometry_Point2D, "ff", sizeof (QSGGeometry::Point2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsTexturedPoint2D() /TypeHint="PyQt6.sip.array[QSGGeometry.TexturedPoint2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsTexturedPoint2D(), sipType_QSGGeometry_TexturedPoint2D, "ffff", sizeof (QSGGeometry::TexturedPoint2D), sipCpp->vertexCount(), 0); %End SIP_PYOBJECT vertexDataAsColoredPoint2D() /TypeHint="PyQt6.sip.array[QSGGeometry.ColoredPoint2D]"/; %MethodCode sipRes = sipConvertToTypedArray(sipCpp->vertexDataAsColoredPoint2D(), sipType_QSGGeometry_ColoredPoint2D, "ffbbbb", sizeof (QSGGeometry::ColoredPoint2D), sipCpp->vertexCount(), 0); %End int sizeOfIndex() const; enum AttributeType { UnknownAttribute, PositionAttribute, ColorAttribute, TexCoordAttribute, TexCoord1Attribute, TexCoord2Attribute, }; enum DrawingMode /BaseType=IntEnum/ { DrawPoints, DrawLines, DrawLineLoop, DrawLineStrip, DrawTriangles, DrawTriangleStrip, DrawTriangleFan, }; enum Type { ByteType, UnsignedByteType, ShortType, UnsignedShortType, IntType, UnsignedIntType, FloatType, Bytes2Type, Bytes3Type, Bytes4Type, DoubleType, }; static void updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect); private: QSGGeometry(const QSGGeometry &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4347653 PyQt6-6.6.1/sip/QtQuick/qsgimagenode.sip0000644000076500000240000000531214532160401016717 0ustar00philstaff// qsgimagenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGImageNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGImageNode(); virtual void setRect(const QRectF &rect) = 0; void setRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF rect() const = 0; virtual void setSourceRect(const QRectF &r) = 0; void setSourceRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF sourceRect() const = 0; virtual void setTexture(QSGTexture *texture /GetWrapper/) = 0; %MethodCode sipCpp->setTexture(a0); if (sipCpp->ownsTexture()) sipTransferTo(a0Wrapper, sipSelf); %End virtual QSGTexture *texture() const = 0; virtual void setFiltering(QSGTexture::Filtering filtering) = 0; virtual QSGTexture::Filtering filtering() const = 0; virtual void setMipmapFiltering(QSGTexture::Filtering filtering) = 0; virtual QSGTexture::Filtering mipmapFiltering() const = 0; enum TextureCoordinatesTransformFlag /BaseType=Flag/ { NoTransform, MirrorHorizontally, MirrorVertically, }; typedef QFlags TextureCoordinatesTransformMode; virtual void setTextureCoordinatesTransform(QSGImageNode::TextureCoordinatesTransformMode mode) = 0; virtual QSGImageNode::TextureCoordinatesTransformMode textureCoordinatesTransform() const = 0; virtual void setOwnsTexture(bool owns) = 0; virtual bool ownsTexture() const = 0; static void rebuildGeometry(QSGGeometry *g, QSGTexture *texture, const QRectF &rect, QRectF sourceRect, QSGImageNode::TextureCoordinatesTransformMode texCoordMode); virtual void setAnisotropyLevel(QSGTexture::AnisotropyLevel level) = 0; virtual QSGTexture::AnisotropyLevel anisotropyLevel() const = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4445064 PyQt6-6.6.1/sip/QtQuick/qsgmaterial.sip0000644000076500000240000000332314532160401016565 0ustar00philstaff// qsgmaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGMaterial /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum Flag /BaseType=Flag/ { Blending, RequiresDeterminant, RequiresFullMatrixExceptTranslate, RequiresFullMatrix, %If (Qt_6_3_0 -) NoBatching, %End CustomCompileStep, }; typedef QFlags Flags; QSGMaterial(); virtual ~QSGMaterial(); virtual QSGMaterialType *type() const = 0; virtual QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const = 0 /Factory/; virtual int compare(const QSGMaterial *other) const; QSGMaterial::Flags flags() const; void setFlag(QSGMaterial::Flags flags, bool enabled = true); private: QSGMaterial(const QSGMaterial &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4312513 PyQt6-6.6.1/sip/QtQuick/qsgmaterialshader.sip0000644000076500000240000001130714532160401017755 0ustar00philstaff// qsgmaterialshader.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGMaterialShader { %TypeHeaderCode #include %End public: class RenderState { %TypeHeaderCode #include %End public: enum DirtyState /BaseType=Flag/ { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll, }; typedef QFlags DirtyStates; QSGMaterialShader::RenderState::DirtyStates dirtyStates() const; bool isMatrixDirty() const; bool isOpacityDirty() const; float opacity() const; QMatrix4x4 combinedMatrix() const; QMatrix4x4 modelViewMatrix() const; QMatrix4x4 projectionMatrix() const; QRect viewportRect() const; QRect deviceRect() const; float determinant() const; float devicePixelRatio() const; QByteArray *uniformData(); }; struct GraphicsPipelineState { %TypeHeaderCode #include %End enum BlendFactor { Zero, One, SrcColor, OneMinusSrcColor, DstColor, OneMinusDstColor, SrcAlpha, OneMinusSrcAlpha, DstAlpha, OneMinusDstAlpha, ConstantColor, OneMinusConstantColor, ConstantAlpha, OneMinusConstantAlpha, SrcAlphaSaturate, Src1Color, OneMinusSrc1Color, Src1Alpha, OneMinusSrc1Alpha, }; enum ColorMaskComponent /BaseType=Flag/ { R, G, B, A, }; typedef QFlags ColorMask; enum CullMode { CullNone, CullFront, CullBack, }; %If (Qt_6_4_0 -) enum PolygonMode { Fill, Line, }; %End QColor blendConstant; bool blendEnable; QSGMaterialShader::GraphicsPipelineState::ColorMask colorWrite; QSGMaterialShader::GraphicsPipelineState::CullMode cullMode; %If (Qt_6_5_0 -) QSGMaterialShader::GraphicsPipelineState::BlendFactor dstAlpha; %End QSGMaterialShader::GraphicsPipelineState::BlendFactor dstColor; %If (Qt_6_4_0 -) QSGMaterialShader::GraphicsPipelineState::PolygonMode polygonMode; %End %If (Qt_6_5_0 -) bool separateBlendFactors; %End %If (Qt_6_5_0 -) QSGMaterialShader::GraphicsPipelineState::BlendFactor srcAlpha; %End QSGMaterialShader::GraphicsPipelineState::BlendFactor srcColor; }; enum Flag /BaseType=Flag/ { UpdatesGraphicsPipelineState, }; typedef QFlags Flags; enum Stage { VertexStage, FragmentStage, }; QSGMaterialShader(); virtual ~QSGMaterialShader(); virtual bool updateUniformData(QSGMaterialShader::RenderState &state, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); virtual void updateSampledImage(QSGMaterialShader::RenderState &state, int binding, QSGTexture **texture /Out/, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); virtual bool updateGraphicsPipelineState(QSGMaterialShader::RenderState &state, QSGMaterialShader::GraphicsPipelineState *ps, QSGMaterial *newMaterial, QSGMaterial *oldMaterial); QSGMaterialShader::Flags flags() const; void setFlag(QSGMaterialShader::Flags flags, bool on = true); void setFlags(QSGMaterialShader::Flags flags); %If (Qt_6_4_0 -) int combinedImageSamplerCount(int binding) const; %End protected: void setShaderFileName(QSGMaterialShader::Stage stage, const QString &filename); private: QSGMaterialShader(const QSGMaterialShader &); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.433219 PyQt6-6.6.1/sip/QtQuick/qsgmaterialtype.sip0000644000076500000240000000201114532160401017460 0ustar00philstaff// qsgmaterialtype.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. struct QSGMaterialType { %TypeHeaderCode #include %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4431777 PyQt6-6.6.1/sip/QtQuick/qsgnode.sip0000644000076500000240000002071414532160401015717 0ustar00philstaff// qsgnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGNode /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End %TypeCode static sipErrorState qsgnode_handle_flags(QSGNode *node, PyObject *self, QSGNode::Flags old_flags) { QSGNode::Flags new_flags = node->flags(); if (node->parent()) { if ((old_flags & QSGNode::OwnedByParent) != (new_flags & QSGNode::OwnedByParent)) { if (old_flags & QSGNode::OwnedByParent) { sipTransferBack(self); } else { PyObject *parent = sipConvertFromType(node->parent(), sipType_QSGNode, 0); if (!parent) return sipErrorFail; sipTransferTo(self, parent); Py_DECREF(parent); } } } QSGNode::NodeType ntype = node->type(); if (ntype == QSGNode::BasicNodeType || ntype == QSGNode::GeometryNodeType || ntype == QSGNode::ClipNodeType) { QSGBasicGeometryNode *bg_node = (QSGBasicGeometryNode *)node; if (bg_node->geometry()) { if ((old_flags & QSGNode::OwnsGeometry) != (new_flags & QSGNode::OwnsGeometry)) { PyObject *geom = sipConvertFromType(bg_node->geometry(), sipType_QSGGeometry, 0); if (!geom) return sipErrorFail; if (old_flags & QSGNode::OwnsGeometry) sipTransferBack(geom); else sipTransferTo(geom, self); Py_DECREF(geom); } } } if (ntype == QSGNode::GeometryNodeType) { QSGGeometryNode *g_node = (QSGGeometryNode *)node; if (g_node->material()) { if ((old_flags & QSGNode::OwnsMaterial) != (new_flags & QSGNode::OwnsMaterial)) { PyObject *mat = sipConvertFromType(g_node->material(), sipType_QSGMaterial, 0); if (!mat) return sipErrorFail; if (old_flags & QSGNode::OwnsMaterial) sipTransferBack(mat); else sipTransferTo(mat, self); Py_DECREF(mat); } } if (g_node->opaqueMaterial()) { if ((old_flags & QSGNode::OwnsOpaqueMaterial) != (new_flags & QSGNode::OwnsOpaqueMaterial)) { PyObject *omat = sipConvertFromType(g_node->opaqueMaterial(), sipType_QSGMaterial, 0); if (!omat) return sipErrorFail; if (old_flags & QSGNode::OwnsOpaqueMaterial) sipTransferBack(omat); else sipTransferTo(omat, self); Py_DECREF(omat); } } } return sipErrorNone; } %End %ConvertToSubClassCode switch (sipCpp->type()) { case QSGNode::BasicNodeType: sipType = sipType_QSGBasicGeometryNode; break; case QSGNode::GeometryNodeType: sipType = sipType_QSGGeometryNode; break; case QSGNode::TransformNodeType: sipType = sipType_QSGClipNode; break; case QSGNode::ClipNodeType: sipType = sipType_QSGTransformNode; break; case QSGNode::OpacityNodeType: sipType = sipType_QSGOpacityNode; break; default: sipType = 0; } %End public: enum NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, }; enum Flag /BaseType=Flag/ { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, }; typedef QFlags Flags; enum DirtyStateBit /BaseType=Flag/ { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, DirtyOpacity, }; typedef QFlags DirtyState; QSGNode(); virtual ~QSGNode(); QSGNode *parent() const; void removeChildNode(QSGNode *node); void removeAllChildNodes(); void prependChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->prependChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void appendChildNode(QSGNode *node /GetWrapper/); %MethodCode sipCpp->appendChildNode(a0); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeBefore(QSGNode *node /GetWrapper/, QSGNode *before); %MethodCode sipCpp->insertChildNodeBefore(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End void insertChildNodeAfter(QSGNode *node /GetWrapper/, QSGNode *after); %MethodCode sipCpp->insertChildNodeAfter(a0, a1); if (a0->flags() & QSGNode::OwnedByParent) sipTransferTo(a0Wrapper, sipSelf); %End int childCount() const /__len__/; QSGNode *childAtIndex(int i) const; QSGNode *firstChild() const; QSGNode *lastChild() const; QSGNode *nextSibling() const; QSGNode *previousSibling() const; QSGNode::NodeType type() const; void markDirty(QSGNode::DirtyState bits); virtual bool isSubtreeBlocked() const; QSGNode::Flags flags() const; void setFlag(QSGNode::Flag, bool enabled = true); %MethodCode QSGNode::Flags old_flags = sipCpp->flags(); sipCpp->setFlag(a0, a1); sipError = qsgnode_handle_flags(sipCpp, sipSelf, old_flags); %End void setFlags(QSGNode::Flags, bool enabled = true); virtual void preprocess(); private: QSGNode(const QSGNode &); }; class QSGBasicGeometryNode : QSGNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGBasicGeometryNode(); void setGeometry(QSGGeometry *geometry /GetWrapper/); %MethodCode sipCpp->setGeometry(a0); if (sipCpp->flags() & QSGNode::OwnsGeometry) sipTransferTo(a0Wrapper, sipSelf); %End QSGGeometry *geometry(); }; class QSGGeometryNode : QSGBasicGeometryNode { %TypeHeaderCode #include %End public: QSGGeometryNode(); virtual ~QSGGeometryNode(); void setMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *material() const; void setOpaqueMaterial(QSGMaterial *material /GetWrapper/); %MethodCode sipCpp->setOpaqueMaterial(a0); if (sipCpp->flags() & QSGNode::OwnsOpaqueMaterial) sipTransferTo(a0Wrapper, sipSelf); %End QSGMaterial *opaqueMaterial() const; }; class QSGClipNode : QSGBasicGeometryNode { %TypeHeaderCode #include %End public: QSGClipNode(); virtual ~QSGClipNode(); void setIsRectangular(bool rectHint); bool isRectangular() const; void setClipRect(const QRectF &); QRectF clipRect() const; }; class QSGTransformNode : QSGNode { %TypeHeaderCode #include %End public: QSGTransformNode(); virtual ~QSGTransformNode(); void setMatrix(const QMatrix4x4 &matrix); const QMatrix4x4 &matrix() const; }; class QSGOpacityNode : QSGNode { %TypeHeaderCode #include %End public: QSGOpacityNode(); virtual ~QSGOpacityNode(); void setOpacity(qreal opacity); qreal opacity() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4470408 PyQt6-6.6.1/sip/QtQuick/qsgrectanglenode.sip0000644000076500000240000000247714532160401017612 0ustar00philstaff// qsgrectanglenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGRectangleNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSGRectangleNode(); virtual void setRect(const QRectF &rect) = 0; void setRect(qreal x, qreal y, qreal w, qreal h); virtual QRectF rect() const = 0; virtual void setColor(const QColor &color) = 0; virtual QColor color() const = 0; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4360626 PyQt6-6.6.1/sip/QtQuick/qsgrendererinterface.sip0000644000076500000240000000625114532160401020461 0ustar00philstaff// qsgrendererinterface.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGRendererInterface /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum GraphicsApi { Unknown, Software, OpenGL, OpenVG, OpenGLRhi, Direct3D11Rhi, VulkanRhi, MetalRhi, NullRhi, Direct3D11, Vulkan, Metal, %If (Qt_6_6_0 -) Direct3D12, %End Null, }; enum Resource { DeviceResource, CommandQueueResource, CommandListResource, PainterResource, RhiResource, PhysicalDeviceResource, OpenGLContextResource, DeviceContextResource, CommandEncoderResource, VulkanInstanceResource, RenderPassResource, RhiSwapchainResource, RhiRedirectCommandBuffer, RhiRedirectRenderTarget, %If (Qt_6_4_0 -) RedirectPaintDevice, %End %If (Qt_6_6_0 -) GraphicsQueueFamilyIndexResource, %End %If (Qt_6_6_0 -) GraphicsQueueIndexResource, %End }; enum ShaderType { UnknownShadingLanguage, GLSL, HLSL, RhiShader, }; enum ShaderCompilationType /BaseType=Flag/ { RuntimeCompilation, OfflineCompilation, }; typedef QFlags ShaderCompilationTypes; enum ShaderSourceType /BaseType=Flag/ { ShaderSourceString, ShaderSourceFile, ShaderByteCode, }; typedef QFlags ShaderSourceTypes; virtual ~QSGRendererInterface(); virtual QSGRendererInterface::GraphicsApi graphicsApi() const = 0; virtual void *getResource(QQuickWindow *window, QSGRendererInterface::Resource resource) const; virtual void *getResource(QQuickWindow *window, const char *resource) const; virtual QSGRendererInterface::ShaderType shaderType() const = 0; virtual QSGRendererInterface::ShaderCompilationTypes shaderCompilationType() const = 0; virtual QSGRendererInterface::ShaderSourceTypes shaderSourceType() const = 0; static bool isApiRhiBased(QSGRendererInterface::GraphicsApi api); enum RenderMode { RenderMode2D, RenderMode2DNoDepthBuffer, RenderMode3D, }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4407213 PyQt6-6.6.1/sip/QtQuick/qsgrendernode.sip0000644000076500000240000000473614532160401017125 0ustar00philstaff// qsgrendernode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGRenderNode : QSGNode { %TypeHeaderCode #include %End public: enum StateFlag /BaseType=Flag/ { DepthState, StencilState, ScissorState, ColorState, BlendState, CullState, ViewportState, RenderTargetState, }; typedef QFlags StateFlags; enum RenderingFlag /BaseType=Flag/ { BoundedRectRendering, DepthAwareRendering, OpaqueRendering, }; typedef QFlags RenderingFlags; struct RenderState /NoDefaultCtors/ { %TypeHeaderCode #include %End virtual ~RenderState(); virtual const QMatrix4x4 *projectionMatrix() const = 0; virtual QRect scissorRect() const = 0; virtual bool scissorEnabled() const = 0; virtual int stencilValue() const = 0; virtual bool stencilEnabled() const = 0; virtual const QRegion *clipRegion() const = 0; virtual void *get(const char *state) const; }; virtual ~QSGRenderNode(); virtual QSGRenderNode::StateFlags changedStates() const; virtual void render(const QSGRenderNode::RenderState *state) = 0; virtual void releaseResources(); virtual QSGRenderNode::RenderingFlags flags() const; virtual QRectF rect() const; const QMatrix4x4 *matrix() const; const QSGClipNode *clipList() const; qreal inheritedOpacity() const; virtual void prepare(); %If (Qt_6_5_0 -) const QMatrix4x4 *projectionMatrix() const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4415238 PyQt6-6.6.1/sip/QtQuick/qsgsimplerectnode.sip0000644000076500000240000000251214532160401020003 0ustar00philstaff// qsgsimplerectnode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleRectNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleRectNode(const QRectF &rect, const QColor &color); QSGSimpleRectNode(); void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setColor(const QColor &color); QColor color() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4450152 PyQt6-6.6.1/sip/QtQuick/qsgsimpletexturenode.sip0000644000076500000240000000406114532160401020547 0ustar00philstaff// qsgsimpletexturenode.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGSimpleTextureNode : QSGGeometryNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: QSGSimpleTextureNode(); virtual ~QSGSimpleTextureNode(); void setRect(const QRectF &rect); void setRect(qreal x, qreal y, qreal w, qreal h); QRectF rect() const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; enum TextureCoordinatesTransformFlag /BaseType=Flag/ { NoTransform, MirrorHorizontally, MirrorVertically, }; typedef QFlags TextureCoordinatesTransformMode; void setTextureCoordinatesTransform(QSGSimpleTextureNode::TextureCoordinatesTransformMode mode); QSGSimpleTextureNode::TextureCoordinatesTransformMode textureCoordinatesTransform() const; void setOwnsTexture(bool owns); bool ownsTexture() const; void setSourceRect(const QRectF &r); void setSourceRect(qreal x, qreal y, qreal w, qreal h); QRectF sourceRect() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4304278 PyQt6-6.6.1/sip/QtQuick/qsgtexture.sip0000644000076500000240000000472114532160401016472 0ustar00philstaff// qsgtexture.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTexture : QObject { %TypeHeaderCode #include %End public: QSGTexture(); virtual ~QSGTexture(); enum WrapMode { Repeat, ClampToEdge, MirroredRepeat, }; enum Filtering { None, Nearest, Linear, }; virtual QSize textureSize() const = 0; virtual bool hasAlphaChannel() const = 0; virtual bool hasMipmaps() const = 0; virtual QRectF normalizedTextureSubRect() const; virtual bool isAtlasTexture() const; void setMipmapFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filter); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode hwrap); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode vwrap); QSGTexture::WrapMode verticalWrapMode() const; QRectF convertToNormalizedSourceRect(const QRectF &rect) const; enum AnisotropyLevel { AnisotropyNone, Anisotropy2x, Anisotropy4x, Anisotropy8x, Anisotropy16x, }; void setAnisotropyLevel(QSGTexture::AnisotropyLevel level); QSGTexture::AnisotropyLevel anisotropyLevel() const; virtual qint64 comparisonKey() const = 0; }; class QSGDynamicTexture : QSGTexture { %TypeHeaderCode #include %End public: QSGDynamicTexture(); virtual bool updateTexture() = 0; %If (Qt_6_4_0 -) virtual ~QSGDynamicTexture(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4391088 PyQt6-6.6.1/sip/QtQuick/qsgtexture_platform.sip0000644000076500000240000000264614532160401020402 0ustar00philstaff// qsgtexture_platform.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QNativeInterface { %TypeHeaderCode #include %End %If (PyQt_OpenGL) struct QSGOpenGLTexture /NoDefaultCtors/ { %TypeHeaderCode #include %End protected: virtual ~QSGOpenGLTexture(); public: virtual GLuint nativeTexture() const = 0; static QSGTexture *fromNative(GLuint textureId, QQuickWindow *window, const QSize &size, QQuickWindow::CreateTextureOptions options = {}); }; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4328332 PyQt6-6.6.1/sip/QtQuick/qsgtexturematerial.sip0000644000076500000240000000423714532160401020213 0ustar00philstaff// qsgtexturematerial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGOpaqueTextureMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGOpaqueTextureMaterial(); virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const /Factory/; virtual int compare(const QSGMaterial *other) const; void setTexture(QSGTexture *texture); QSGTexture *texture() const; void setMipmapFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering mipmapFiltering() const; void setFiltering(QSGTexture::Filtering filtering); QSGTexture::Filtering filtering() const; void setHorizontalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode horizontalWrapMode() const; void setVerticalWrapMode(QSGTexture::WrapMode mode); QSGTexture::WrapMode verticalWrapMode() const; void setAnisotropyLevel(QSGTexture::AnisotropyLevel level); QSGTexture::AnisotropyLevel anisotropyLevel() const; }; class QSGTextureMaterial : QSGOpaqueTextureMaterial { %TypeHeaderCode #include %End public: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const /Factory/; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.445979 PyQt6-6.6.1/sip/QtQuick/qsgtextureprovider.sip0000644000076500000240000000220014532160401020233 0ustar00philstaff// qsgtextureprovider.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGTextureProvider : QObject { %TypeHeaderCode #include %End public: virtual QSGTexture *texture() const = 0 /Factory/; signals: void textureChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4338977 PyQt6-6.6.1/sip/QtQuick/qsgvertexcolormaterial.sip0000644000076500000240000000245414532160401021066 0ustar00philstaff// qsgvertexcolormaterial.sip generated by MetaSIP // // This file is part of the QtQuick Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSGVertexColorMaterial : QSGMaterial { %TypeHeaderCode #include %End public: QSGVertexColorMaterial(); virtual int compare(const QSGMaterial *other) const; protected: virtual QSGMaterialType *type() const; virtual QSGMaterialShader *createShader(QSGRendererInterface::RenderMode renderMode) const /Factory/; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.518962 PyQt6-6.6.1/sip/QtQuick3D/0000755000076500000240000000000014532160403013727 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3075728 PyQt6-6.6.1/sip/QtQuick3D/QtQuick3Dmod.sip0000644000076500000240000000404614532160401016716 0ustar00philstaff// QtQuick3Dmod.sip generated by MetaSIP // // This file is part of the QtQuick3D Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtQuick3D, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qquick3d.sip %Include qquick3dgeometry.sip %Include qquick3dobject.sip %Include qquick3dtexturedata.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3071706 PyQt6-6.6.1/sip/QtQuick3D/qquick3d.sip0000644000076500000240000000207614532160401016173 0ustar00philstaff// qquick3d.sip generated by MetaSIP // // This file is part of the QtQuick3D Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuick3D { %TypeHeaderCode #include %End public: static QSurfaceFormat idealSurfaceFormat(int samples = -1); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.306778 PyQt6-6.6.1/sip/QtQuick3D/qquick3dgeometry.sip0000644000076500000240000001072714532160401017751 0ustar00philstaff// qquick3dgeometry.sip generated by MetaSIP // // This file is part of the QtQuick3D Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuick3DGeometry : QQuick3DObject { %TypeHeaderCode #include %End public: explicit QQuick3DGeometry(QQuick3DObject *parent /TransferThis/ = 0); virtual ~QQuick3DGeometry(); enum class PrimitiveType { Points, LineStrip, Lines, TriangleStrip, TriangleFan, Triangles, }; struct Attribute { %TypeHeaderCode #include %End enum Semantic { IndexSemantic, PositionSemantic, NormalSemantic, TexCoordSemantic, TangentSemantic, BinormalSemantic, JointSemantic, WeightSemantic, ColorSemantic, %If (Qt_6_1_0 -) TargetPositionSemantic, %End %If (Qt_6_1_0 -) TargetNormalSemantic, %End %If (Qt_6_1_0 -) TargetTangentSemantic, %End %If (Qt_6_1_0 -) TargetBinormalSemantic, %End %If (Qt_6_1_0 -) TexCoord1Semantic, %End %If (Qt_6_1_0 -) TexCoord0Semantic, %End }; enum ComponentType { U16Type, U32Type, F32Type, I32Type, }; QQuick3DGeometry::Attribute::Semantic semantic; int offset; QQuick3DGeometry::Attribute::ComponentType componentType; }; int attributeCount() const; QQuick3DGeometry::Attribute attribute(int index) const; QQuick3DGeometry::PrimitiveType primitiveType() const; QVector3D boundsMin() const; QVector3D boundsMax() const; int stride() const; void setVertexData(const QByteArray &data); void setVertexData(int offset, const QByteArray &data); void setIndexData(const QByteArray &data); void setIndexData(int offset, const QByteArray &data); void setStride(int stride); void setBounds(const QVector3D &min, const QVector3D &max); void setPrimitiveType(QQuick3DGeometry::PrimitiveType type); void addAttribute(QQuick3DGeometry::Attribute::Semantic semantic, int offset, QQuick3DGeometry::Attribute::ComponentType componentType); void addAttribute(const QQuick3DGeometry::Attribute &att); void clear(); QByteArray vertexData() const; QByteArray indexData() const; %If (Qt_6_3_0 -) int subsetCount(int subset) const; %End %If (Qt_6_3_0 -) int subsetCount() const; %End %If (Qt_6_3_0 -) QVector3D subsetBoundsMin(int subset) const; %End %If (Qt_6_3_0 -) QVector3D subsetBoundsMax(int subset) const; %End %If (Qt_6_3_0 -) int subsetOffset(int subset) const; %End %If (Qt_6_3_0 -) QString subsetName(int subset) const; %End %If (Qt_6_3_0 -) void addSubset(int offset, int count, const QVector3D &boundsMin, const QVector3D &boundsMax, const QString &name = {}); %End %If (Qt_6_6_0 -) struct TargetAttribute { %TypeHeaderCode #include %End quint32 targetId; QQuick3DGeometry::Attribute attr; int stride; }; %End %If (Qt_6_6_0 -) QByteArray targetData() const; %End %If (Qt_6_6_0 -) void setTargetData(int offset, const QByteArray &data); %End %If (Qt_6_6_0 -) void setTargetData(const QByteArray &data); %End %If (Qt_6_6_0 -) QQuick3DGeometry::TargetAttribute targetAttribute(int index) const; %End %If (Qt_6_6_0 -) int targetAttributeCount() const; %End %If (Qt_6_6_0 -) void addTargetAttribute(const QQuick3DGeometry::TargetAttribute &att); %End %If (Qt_6_6_0 -) void addTargetAttribute(quint32 targetId, QQuick3DGeometry::Attribute::Semantic semantic, int offset, int stride = 0); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3080926 PyQt6-6.6.1/sip/QtQuick3D/qquick3dobject.sip0000644000076500000240000000415714532160401017364 0ustar00philstaff// qquick3dobject.sip generated by MetaSIP // // This file is part of the QtQuick3D Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuick3DObject : QObject, QQmlParserStatus /Abstract/ { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QQuick3DObject, &sipType_QQuick3DObject, 1, -1}, {sipName_QQuick3DGeometry, &sipType_QQuick3DGeometry, -1, 2}, {sipName_QQuick3DTextureData, &sipType_QQuick3DTextureData, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QQuick3DObject(QQuick3DObject *parent /TransferThis/ = 0); virtual ~QQuick3DObject(); QString state() const; void setState(const QString &state); QQuick3DObject *parentItem() const; public slots: void setParentItem(QQuick3DObject *parentItem); signals: void stateChanged(); protected: virtual void classBegin(); virtual void componentComplete(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3058777 PyQt6-6.6.1/sip/QtQuick3D/qquick3dtexturedata.sip0000644000076500000240000000434614532160401020450 0ustar00philstaff// qquick3dtexturedata.sip generated by MetaSIP // // This file is part of the QtQuick3D Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuick3DTextureData : QQuick3DObject { %TypeHeaderCode #include %End public: enum Format { None /PyName=None_/, RGBA8, RGBA16F, RGBA32F, RGBE8, R8, R16, R16F, R32F, BC1, BC2, BC3, BC4, BC5, BC6H, BC7, DXT1_RGBA, DXT1_RGB, DXT3_RGBA, DXT5_RGBA, ETC2_RGB8, ETC2_RGB8A1, ETC2_RGBA8, ASTC_4x4, ASTC_5x4, ASTC_5x5, ASTC_6x5, ASTC_6x6, ASTC_8x5, ASTC_8x6, ASTC_8x8, ASTC_10x5, ASTC_10x6, ASTC_10x8, ASTC_10x10, ASTC_12x10, ASTC_12x12, }; QQuick3DTextureData(QQuick3DObject *parent /TransferThis/ = 0); virtual ~QQuick3DTextureData(); const QByteArray textureData() const; void setTextureData(const QByteArray &data); QSize size() const; void setSize(const QSize &size); QQuick3DTextureData::Format format() const; void setFormat(QQuick3DTextureData::Format format); bool hasTransparency() const; void setHasTransparency(bool hasTransparency); %If (Qt_6_6_0 -) int depth() const; %End %If (Qt_6_6_0 -) void setDepth(int depth); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6000497 PyQt6-6.6.1/sip/QtQuickWidgets/0000755000076500000240000000000014532160403015067 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4596446 PyQt6-6.6.1/sip/QtQuickWidgets/QtQuickWidgetsmod.sip0000644000076500000240000000404014532160401021210 0ustar00philstaff// QtQuickWidgetsmod.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtQuickWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtQml/QtQmlmod.sip %Import QtQuick/QtQuickmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qquickwidget.sip ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.46043 PyQt6-6.6.1/sip/QtQuickWidgets/qquickwidget.sip0000644000076500000240000000642114532160401020306 0ustar00philstaff// qquickwidget.sip generated by MetaSIP // // This file is part of the QtQuickWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QQuickWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits(sipName_QQuickWidget) ? sipType_QQuickWidget : 0); %End public: explicit QQuickWidget(QWidget *parent /TransferThis/ = 0); QQuickWidget(QQmlEngine *engine, QWidget *parent /TransferThis/); QQuickWidget(const QUrl &source, QWidget *parent /TransferThis/ = 0); virtual ~QQuickWidget(); QUrl source() const; QQmlEngine *engine() const; QQmlContext *rootContext() const; QQuickItem *rootObject() const; enum ResizeMode { SizeViewToRootObject, SizeRootObjectToView, }; QQuickWidget::ResizeMode resizeMode() const; void setResizeMode(QQuickWidget::ResizeMode); enum Status { Null, Ready, Loading, Error, }; QQuickWidget::Status status() const; QList errors() const; virtual QSize sizeHint() const; QSize initialSize() const; void setFormat(const QSurfaceFormat &format); QSurfaceFormat format() const; public slots: void setSource(const QUrl &) /ReleaseGIL/; signals: void statusChanged(QQuickWidget::Status); void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message); protected: virtual void resizeEvent(QResizeEvent *); virtual void timerEvent(QTimerEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void wheelEvent(QWheelEvent *); virtual bool event(QEvent *); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void paintEvent(QPaintEvent *event); public: QImage grabFramebuffer() const; void setClearColor(const QColor &color); QQuickWindow *quickWindow() const; protected: virtual bool focusNextPrevChild(bool next); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5321453 PyQt6-6.6.1/sip/QtRemoteObjects/0000755000076500000240000000000014532160403015231 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.326939 PyQt6-6.6.1/sip/QtRemoteObjects/QtRemoteObjectsmod.sip0000644000076500000240000000416314532160401021522 0ustar00philstaff// QtRemoteObjectsmod.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtRemoteObjects, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qtremoteobjectglobal.sip %Include qremoteobjectabstractitemmodelreplica.sip %Include qremoteobjectdynamicreplica.sip %Include qremoteobjectnode.sip %Include qremoteobjectregistry.sip %Include qremoteobjectreplica.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.324894 PyQt6-6.6.1/sip/QtRemoteObjects/qremoteobjectabstractitemmodelreplica.sip0000644000076500000240000000437214532160401025601 0ustar00philstaff// qremoteobjectabstractitemmodelreplica.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAbstractItemModelReplica : QAbstractItemModel /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QAbstractItemModelReplica(); QItemSelectionModel *selectionModel() const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QModelIndex parent(const QModelIndex &index) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; QList availableRoles() const; virtual QHash roleNames() const; bool isInitialized() const; bool hasData(const QModelIndex &index, int role) const; size_t rootCacheSize() const; void setRootCacheSize(size_t rootCacheSize); signals: void initialized(); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.323697 PyQt6-6.6.1/sip/QtRemoteObjects/qremoteobjectdynamicreplica.sip0000644000076500000240000000230514532160401023514 0ustar00philstaff// qremoteobjectdynamicreplica.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QRemoteObjectDynamicReplica : QRemoteObjectReplica { %TypeHeaderCode #include %End public: virtual ~QRemoteObjectDynamicReplica(); private: QRemoteObjectDynamicReplica(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3258302 PyQt6-6.6.1/sip/QtRemoteObjects/qremoteobjectnode.sip0000644000076500000240000001450514532160401021462 0ustar00philstaff// qremoteobjectnode.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QRemoteObjectAbstractPersistedStore : QObject { %TypeHeaderCode #include %End public: QRemoteObjectAbstractPersistedStore(QObject *parent /TransferThis/ = 0); virtual ~QRemoteObjectAbstractPersistedStore(); virtual void saveProperties(const QString &repName, const QByteArray &repSig, const QVariantList &values) = 0; virtual QVariantList restoreProperties(const QString &repName, const QByteArray &repSig) = 0; }; %End %If (Qt_6_2_0 -) class QRemoteObjectNode : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAbstractItemModelReplica, &sipType_QAbstractItemModelReplica, -1, 1}, {sipName_QRemoteObjectAbstractPersistedStore, &sipType_QRemoteObjectAbstractPersistedStore, -1, 2}, {sipName_QRemoteObjectReplica, &sipType_QRemoteObjectReplica, 4, 3}, {sipName_QRemoteObjectNode, &sipType_QRemoteObjectNode, 6, -1}, {sipName_QRemoteObjectDynamicReplica, &sipType_QRemoteObjectDynamicReplica, -1, 5}, {sipName_QRemoteObjectRegistry, &sipType_QRemoteObjectRegistry, -1, -1}, {sipName_QRemoteObjectHostBase, &sipType_QRemoteObjectHostBase, 7, -1}, {sipName_QRemoteObjectHost, &sipType_QRemoteObjectHost, -1, 8}, {sipName_QRemoteObjectRegistryHost, &sipType_QRemoteObjectRegistryHost, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum ErrorCode { NoError, RegistryNotAcquired, RegistryAlreadyHosted, NodeIsNoServer, ServerAlreadyCreated, UnintendedRegistryHosting, OperationNotValidOnClientNode, SourceNotRegistered, MissingObjectName, HostUrlInvalid, ProtocolMismatch, ListenFailed, }; QRemoteObjectNode(QObject *parent /TransferThis/ = 0); QRemoteObjectNode(const QUrl ®istryAddress, QObject *parent /TransferThis/ = 0); virtual ~QRemoteObjectNode(); bool connectToNode(const QUrl &address); void addClientSideConnection(QIODevice *ioDevice); virtual void setName(const QString &name); QStringList instances(QStringView typeName) const; QRemoteObjectDynamicReplica *acquireDynamic(const QString &name) /Factory/; QAbstractItemModelReplica *acquireModel(const QString &name, QtRemoteObjects::InitialAction action = QtRemoteObjects::FetchRootSize, const QList &rolesHint = {}); QUrl registryUrl() const; virtual bool setRegistryUrl(const QUrl ®istryAddress); bool waitForRegistry(int timeout = 30000) /ReleaseGIL/; const QRemoteObjectRegistry *registry() const; QRemoteObjectAbstractPersistedStore *persistedStore() const; void setPersistedStore(QRemoteObjectAbstractPersistedStore *persistedStore); QRemoteObjectNode::ErrorCode lastError() const; int heartbeatInterval() const; void setHeartbeatInterval(int interval); signals: void remoteObjectAdded(const QRemoteObjectSourceLocation &); void remoteObjectRemoved(const QRemoteObjectSourceLocation &); void error(QRemoteObjectNode::ErrorCode errorCode); void heartbeatIntervalChanged(int heartbeatInterval); protected: virtual void timerEvent(QTimerEvent *); }; %End %If (Qt_6_2_0 -) class QRemoteObjectHostBase : QRemoteObjectNode /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum AllowedSchemas { BuiltInSchemasOnly, AllowExternalRegistration, }; virtual ~QRemoteObjectHostBase(); virtual void setName(const QString &name); bool enableRemoting(QObject *object, const QString &name = QString()); bool enableRemoting(QAbstractItemModel *model, const QString &name, const QList roles, QItemSelectionModel *selectionModel = 0); bool disableRemoting(QObject *remoteObject); void addHostSideConnection(QIODevice *ioDevice); bool proxy(const QUrl ®istryUrl, const QUrl &hostUrl /TypeHintValue="QUrl()"/ = {}); bool reverseProxy(); }; %End %If (Qt_6_2_0 -) class QRemoteObjectHost : QRemoteObjectHostBase { %TypeHeaderCode #include %End public: QRemoteObjectHost(QObject *parent /TransferThis/ = 0); QRemoteObjectHost(const QUrl &address, const QUrl ®istryAddress = QUrl(), QRemoteObjectHostBase::AllowedSchemas allowedSchemas = QRemoteObjectHostBase::BuiltInSchemasOnly, QObject *parent /TransferThis/ = 0); QRemoteObjectHost(const QUrl &address, QObject *parent /TransferThis/); virtual ~QRemoteObjectHost(); virtual QUrl hostUrl() const; virtual bool setHostUrl(const QUrl &hostAddress, QRemoteObjectHostBase::AllowedSchemas allowedSchemas = QRemoteObjectHostBase::BuiltInSchemasOnly); signals: void hostUrlChanged(); }; %End %If (Qt_6_2_0 -) class QRemoteObjectRegistryHost : QRemoteObjectHostBase { %TypeHeaderCode #include %End public: QRemoteObjectRegistryHost(const QUrl ®istryAddress = QUrl(), QObject *parent /TransferThis/ = 0); virtual ~QRemoteObjectRegistryHost(); virtual bool setRegistryUrl(const QUrl ®istryUrl); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3273506 PyQt6-6.6.1/sip/QtRemoteObjects/qremoteobjectregistry.sip0000644000076500000240000000262514532160401022405 0ustar00philstaff// qremoteobjectregistry.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QRemoteObjectRegistry : QRemoteObjectReplica { %TypeHeaderCode #include %End public: virtual ~QRemoteObjectRegistry(); QRemoteObjectSourceLocations sourceLocations() const; signals: void remoteObjectAdded(const QRemoteObjectSourceLocation &entry); void remoteObjectRemoved(const QRemoteObjectSourceLocation &entry); private: explicit QRemoteObjectRegistry(QObject *parent = 0); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3263543 PyQt6-6.6.1/sip/QtRemoteObjects/qremoteobjectreplica.sip0000644000076500000240000000323114532160401022146 0ustar00philstaff// qremoteobjectreplica.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QRemoteObjectReplica : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum State { Uninitialized, Default, Valid, Suspect, SignatureMismatch, }; virtual ~QRemoteObjectReplica(); bool isReplicaValid() const; bool waitForSource(int timeout = 30000) /ReleaseGIL/; bool isInitialized() const; QRemoteObjectReplica::State state() const; QRemoteObjectNode *node() const; virtual void setNode(QRemoteObjectNode *node); signals: void initialized(); void stateChanged(QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState); void notified(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3244307 PyQt6-6.6.1/sip/QtRemoteObjects/qtremoteobjectglobal.sip0000644000076500000240000000405514532160401022160 0ustar00philstaff// qtremoteobjectglobal.sip generated by MetaSIP // // This file is part of the QtRemoteObjects Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) struct QRemoteObjectSourceLocationInfo { %TypeHeaderCode #include %End QRemoteObjectSourceLocationInfo(); QRemoteObjectSourceLocationInfo(const QString &typeName_, const QUrl &hostUrl_); bool operator==(const QRemoteObjectSourceLocationInfo &other) const; bool operator!=(const QRemoteObjectSourceLocationInfo &other) const; QString typeName; QUrl hostUrl; }; %End %If (Qt_6_2_0 -) QDataStream &operator<<(QDataStream &stream, const QRemoteObjectSourceLocationInfo &info) /ReleaseGIL/; %End %If (Qt_6_2_0 -) QDataStream &operator>>(QDataStream &stream, QRemoteObjectSourceLocationInfo &info /Constrained/) /ReleaseGIL/; %End %If (Qt_6_2_0 -) typedef std::pair QRemoteObjectSourceLocation; %End %If (Qt_6_2_0 -) typedef QHash QRemoteObjectSourceLocations; %End %If (Qt_6_2_0 -) namespace QtRemoteObjects /PyQtNoQMetaObject/ { %TypeHeaderCode #include %End enum InitialAction { FetchRootSize, PrefetchData, }; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5387738 PyQt6-6.6.1/sip/QtSensors/0000755000076500000240000000000014532160403014120 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3367507 PyQt6-6.6.1/sip/QtSensors/QtSensorsmod.sip0000644000076500000240000000453114532160401017277 0ustar00philstaff// QtSensorsmod.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSensors, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qaccelerometer.sip %Include qambientlightsensor.sip %Include qambienttemperaturesensor.sip %Include qcompass.sip %Include qgyroscope.sip %Include qhumiditysensor.sip %Include qirproximitysensor.sip %Include qlidsensor.sip %Include qlightsensor.sip %Include qmagnetometer.sip %Include qorientationsensor.sip %Include qpressuresensor.sip %Include qproximitysensor.sip %Include qrotationsensor.sip %Include qsensor.sip %Include qtapsensor.sip %Include qtiltsensor.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.331377 PyQt6-6.6.1/sip/QtSensors/qaccelerometer.sip0000644000076500000240000000376514532160401017641 0ustar00philstaff// qaccelerometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAccelerometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_6_2_0 -) class QAccelerometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAccelerometerReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QAccelerometer : QSensor { %TypeHeaderCode #include %End public: explicit QAccelerometer(QObject *parent /TransferThis/ = 0); virtual ~QAccelerometer(); enum AccelerationMode { Combined, Gravity, User, }; QAccelerometer::AccelerationMode accelerationMode() const; void setAccelerationMode(QAccelerometer::AccelerationMode accelerationMode); QAccelerometerReading *reading() const; signals: void accelerationModeChanged(QAccelerometer::AccelerationMode accelerationMode /ScopesStripped=1/); }; %End ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.32794 PyQt6-6.6.1/sip/QtSensors/qambientlightsensor.sip0000644000076500000240000000346214532160401020722 0ustar00philstaff// qambientlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAmbientLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum LightLevel { Undefined, Dark, Twilight, Light, Bright, Sunny, }; QAmbientLightReading::LightLevel lightLevel() const; void setLightLevel(QAmbientLightReading::LightLevel lightLevel); }; %End %If (Qt_6_2_0 -) class QAmbientLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientLightReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QAmbientLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientLightSensor(); QAmbientLightReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3328137 PyQt6-6.6.1/sip/QtSensors/qambienttemperaturesensor.sip0000644000076500000240000000327614532160401022153 0ustar00philstaff// qambienttemperaturesensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QAmbientTemperatureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal temperature() const; void setTemperature(qreal temperature); }; %End %If (Qt_6_2_0 -) class QAmbientTemperatureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QAmbientTemperatureReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QAmbientTemperatureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QAmbientTemperatureSensor(QObject *parent /TransferThis/ = 0); virtual ~QAmbientTemperatureSensor(); QAmbientTemperatureReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.336305 PyQt6-6.6.1/sip/QtSensors/qcompass.sip0000644000076500000240000000315114532160401016461 0ustar00philstaff// qcompass.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QCompassReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal azimuth() const; void setAzimuth(qreal azimuth); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_6_2_0 -) class QCompassFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QCompassReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QCompass : QSensor { %TypeHeaderCode #include %End public: explicit QCompass(QObject *parent /TransferThis/ = 0); virtual ~QCompass(); QCompassReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.333478 PyQt6-6.6.1/sip/QtSensors/qgyroscope.sip0000644000076500000240000000315514532160401017032 0ustar00philstaff// qgyroscope.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QGyroscopeReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); }; %End %If (Qt_6_2_0 -) class QGyroscopeFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QGyroscopeReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QGyroscope : QSensor { %TypeHeaderCode #include %End public: explicit QGyroscope(QObject *parent /TransferThis/ = 0); virtual ~QGyroscope(); QGyroscopeReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.332331 PyQt6-6.6.1/sip/QtSensors/qhumiditysensor.sip0000644000076500000240000000324514532160401020106 0ustar00philstaff// qhumiditysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QHumidityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal relativeHumidity() const; void setRelativeHumidity(qreal percent); qreal absoluteHumidity() const; void setAbsoluteHumidity(qreal value); }; %End %If (Qt_6_2_0 -) class QHumidityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QHumidityReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QHumiditySensor : QSensor { %TypeHeaderCode #include %End public: explicit QHumiditySensor(QObject *parent /TransferThis/ = 0); virtual ~QHumiditySensor(); QHumidityReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3318465 PyQt6-6.6.1/sip/QtSensors/qirproximitysensor.sip0000644000076500000240000000316114532160401020646 0ustar00philstaff// qirproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QIRProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal reflectance() const; void setReflectance(qreal reflectance); }; %End %If (Qt_6_2_0 -) class QIRProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QIRProximityReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QIRProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QIRProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QIRProximitySensor(); QIRProximityReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.328446 PyQt6-6.6.1/sip/QtSensors/qlidsensor.sip0000644000076500000240000000326714532160401017026 0ustar00philstaff// qlidsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLidReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool backLidClosed() const; void setBackLidClosed(bool closed); bool frontLidClosed() const; void setFrontLidClosed(bool closed); signals: void backLidChanged(bool closed); void frontLidChanged(bool closed); }; %End %If (Qt_6_2_0 -) class QLidFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QLidReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QLidSensor : QSensor { %TypeHeaderCode #include %End public: explicit QLidSensor(QObject *parent /TransferThis/ = 0); virtual ~QLidSensor(); QLidReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3306382 PyQt6-6.6.1/sip/QtSensors/qlightsensor.sip0000644000076500000240000000323414532160401017357 0ustar00philstaff// qlightsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QLightReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal lux() const; void setLux(qreal lux); }; %End %If (Qt_6_2_0 -) class QLightFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QLightReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QLightSensor : QSensor { %TypeHeaderCode #include %End public: explicit QLightSensor(QObject *parent /TransferThis/ = 0); virtual ~QLightSensor(); QLightReading *reading() const; qreal fieldOfView() const; void setFieldOfView(qreal fieldOfView); signals: void fieldOfViewChanged(qreal fieldOfView); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.337288 PyQt6-6.6.1/sip/QtSensors/qmagnetometer.sip0000644000076500000240000000357614532160401017516 0ustar00philstaff// qmagnetometer.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMagnetometerReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; void setX(qreal x); qreal y() const; void setY(qreal y); qreal z() const; void setZ(qreal z); qreal calibrationLevel() const; void setCalibrationLevel(qreal calibrationLevel); }; %End %If (Qt_6_2_0 -) class QMagnetometerFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QMagnetometerReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QMagnetometer : QSensor { %TypeHeaderCode #include %End public: explicit QMagnetometer(QObject *parent /TransferThis/ = 0); virtual ~QMagnetometer(); QMagnetometerReading *reading() const; bool returnGeoValues() const; void setReturnGeoValues(bool returnGeoValues); signals: void returnGeoValuesChanged(bool returnGeoValues); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3291526 PyQt6-6.6.1/sip/QtSensors/qorientationsensor.sip0000644000076500000240000000350014532160401020577 0ustar00philstaff// qorientationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QOrientationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Orientation { Undefined, TopUp, TopDown, LeftUp, RightUp, FaceUp, FaceDown, }; QOrientationReading::Orientation orientation() const; void setOrientation(QOrientationReading::Orientation orientation); }; %End %If (Qt_6_2_0 -) class QOrientationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QOrientationReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QOrientationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QOrientationSensor(QObject *parent /TransferThis/ = 0); virtual ~QOrientationSensor(); QOrientationReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3301442 PyQt6-6.6.1/sip/QtSensors/qpressuresensor.sip0000644000076500000240000000322214532160401020115 0ustar00philstaff// qpressuresensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QPressureReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal pressure() const; void setPressure(qreal pressure); qreal temperature() const; void setTemperature(qreal temperature); }; %End %If (Qt_6_2_0 -) class QPressureFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QPressureReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QPressureSensor : QSensor { %TypeHeaderCode #include %End public: explicit QPressureSensor(QObject *parent /TransferThis/ = 0); virtual ~QPressureSensor(); QPressureReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3296666 PyQt6-6.6.1/sip/QtSensors/qproximitysensor.sip0000644000076500000240000000310714532160401020313 0ustar00philstaff// qproximitysensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QProximityReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: bool close() const; void setClose(bool close); }; %End %If (Qt_6_2_0 -) class QProximityFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QProximityReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QProximitySensor : QSensor { %TypeHeaderCode #include %End public: explicit QProximitySensor(QObject *parent /TransferThis/ = 0); virtual ~QProximitySensor(); QProximityReading *reading() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3377938 PyQt6-6.6.1/sip/QtSensors/qrotationsensor.sip0000644000076500000240000000332514532160401020110 0ustar00philstaff// qrotationsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QRotationReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal x() const; qreal y() const; qreal z() const; void setFromEuler(qreal x, qreal y, qreal z); }; %End %If (Qt_6_2_0 -) class QRotationFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QRotationReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QRotationSensor : QSensor { %TypeHeaderCode #include %End public: explicit QRotationSensor(QObject *parent /TransferThis/ = 0); virtual ~QRotationSensor(); QRotationReading *reading() const; bool hasZ() const; void setHasZ(bool hasZ); signals: void hasZChanged(bool hasZ); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.335594 PyQt6-6.6.1/sip/QtSensors/qsensor.sip0000644000076500000240000001660414532160401016334 0ustar00philstaff// qsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) struct qoutputrange { %TypeHeaderCode #include %End qreal minimum; qreal maximum; qreal accuracy; }; %End %If (Qt_6_2_0 -) typedef QList qoutputrangelist; %End %If (Qt_6_2_0 -) class QSensorReading : QObject /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QSensorReading(); quint64 timestamp() const; void setTimestamp(quint64 timestamp); int valueCount() const; QVariant value(int index) const; }; %End %If (Qt_6_2_0 -) class QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QSensorReading *reading) = 0; protected: QSensorFilter(); virtual ~QSensorFilter(); }; %End %If (Qt_6_2_0 -) class QSensor : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSensor, &sipType_QSensor, 2, 1}, {sipName_QSensorReading, &sipType_QSensorReading, 18, -1}, {sipName_QAccelerometer, &sipType_QAccelerometer, -1, 3}, {sipName_QAmbientLightSensor, &sipType_QAmbientLightSensor, -1, 4}, {sipName_QAmbientTemperatureSensor, &sipType_QAmbientTemperatureSensor, -1, 5}, {sipName_QCompass, &sipType_QCompass, -1, 6}, {sipName_QGyroscope, &sipType_QGyroscope, -1, 7}, {sipName_QHumiditySensor, &sipType_QHumiditySensor, -1, 8}, {sipName_QIRProximitySensor, &sipType_QIRProximitySensor, -1, 9}, {sipName_QLidSensor, &sipType_QLidSensor, -1, 10}, {sipName_QLightSensor, &sipType_QLightSensor, -1, 11}, {sipName_QMagnetometer, &sipType_QMagnetometer, -1, 12}, {sipName_QOrientationSensor, &sipType_QOrientationSensor, -1, 13}, {sipName_QPressureSensor, &sipType_QPressureSensor, -1, 14}, {sipName_QProximitySensor, &sipType_QProximitySensor, -1, 15}, {sipName_QRotationSensor, &sipType_QRotationSensor, -1, 16}, {sipName_QTapSensor, &sipType_QTapSensor, -1, 17}, {sipName_QTiltSensor, &sipType_QTiltSensor, -1, -1}, {sipName_QAccelerometerReading, &sipType_QAccelerometerReading, -1, 19}, {sipName_QAmbientLightReading, &sipType_QAmbientLightReading, -1, 20}, {sipName_QAmbientTemperatureReading, &sipType_QAmbientTemperatureReading, -1, 21}, {sipName_QCompassReading, &sipType_QCompassReading, -1, 22}, {sipName_QGyroscopeReading, &sipType_QGyroscopeReading, -1, 23}, {sipName_QHumidityReading, &sipType_QHumidityReading, -1, 24}, {sipName_QIRProximityReading, &sipType_QIRProximityReading, -1, 25}, {sipName_QLidReading, &sipType_QLidReading, -1, 26}, {sipName_QLightReading, &sipType_QLightReading, -1, 27}, {sipName_QMagnetometerReading, &sipType_QMagnetometerReading, -1, 28}, {sipName_QOrientationReading, &sipType_QOrientationReading, -1, 29}, {sipName_QPressureReading, &sipType_QPressureReading, -1, 30}, {sipName_QProximityReading, &sipType_QProximityReading, -1, 31}, {sipName_QRotationReading, &sipType_QRotationReading, -1, 32}, {sipName_QTapReading, &sipType_QTapReading, -1, 33}, {sipName_QTiltReading, &sipType_QTiltReading, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Feature { Buffering, AlwaysOn, GeoValues, FieldOfView, AccelerationMode, SkipDuplicates, AxesOrientation, PressureSensorTemperature, }; enum AxesOrientationMode { FixedOrientation, AutomaticOrientation, UserOrientation, }; QSensor(const QByteArray &type, QObject *parent /TransferThis/ = 0); virtual ~QSensor(); QByteArray identifier() const; void setIdentifier(const QByteArray &identifier); QByteArray type() const; bool connectToBackend(); bool isConnectedToBackend() const; bool isBusy() const; void setActive(bool active); bool isActive() const; bool isAlwaysOn() const; void setAlwaysOn(bool alwaysOn); bool skipDuplicates() const; void setSkipDuplicates(bool skipDuplicates); qrangelist availableDataRates() const; int dataRate() const; void setDataRate(int rate); qoutputrangelist outputRanges() const; int outputRange() const; void setOutputRange(int index); QString description() const; int error() const; void addFilter(QSensorFilter *filter); void removeFilter(QSensorFilter *filter); QList filters() const; QSensorReading *reading() const; static QList sensorTypes(); static QList sensorsForType(const QByteArray &type); static QByteArray defaultSensorForType(const QByteArray &type); bool isFeatureSupported(QSensor::Feature feature) const; QSensor::AxesOrientationMode axesOrientationMode() const; void setAxesOrientationMode(QSensor::AxesOrientationMode axesOrientationMode); int currentOrientation() const; void setCurrentOrientation(int currentOrientation); int userOrientation() const; void setUserOrientation(int userOrientation); int maxBufferSize() const; void setMaxBufferSize(int maxBufferSize); int efficientBufferSize() const; void setEfficientBufferSize(int efficientBufferSize); int bufferSize() const; void setBufferSize(int bufferSize); public slots: bool start(); void stop(); signals: void busyChanged(); void activeChanged(); void readingChanged(); void sensorError(int error); void availableSensorsChanged(); void alwaysOnChanged(); void dataRateChanged(); void skipDuplicatesChanged(bool skipDuplicates); void axesOrientationModeChanged(QSensor::AxesOrientationMode axesOrientationMode /ScopesStripped=1/); void currentOrientationChanged(int currentOrientation); void userOrientationChanged(int userOrientation); void maxBufferSizeChanged(int maxBufferSize); void efficientBufferSizeChanged(int efficientBufferSize); void bufferSizeChanged(int bufferSize); void identifierChanged(); }; %End %If (Qt_6_2_0 -) typedef std::pair qrange; %End %If (Qt_6_2_0 -) typedef QList> qrangelist; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3345275 PyQt6-6.6.1/sip/QtSensors/qtapsensor.sip0000644000076500000240000000403714532160401017036 0ustar00philstaff// qtapsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QTapReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum TapDirection { Undefined, X, Y, Z, X_Pos, Y_Pos, Z_Pos, X_Neg, Y_Neg, Z_Neg, X_Both, Y_Both, Z_Both, }; QTapReading::TapDirection tapDirection() const; void setTapDirection(QTapReading::TapDirection tapDirection); bool isDoubleTap() const; void setDoubleTap(bool doubleTap); }; %End %If (Qt_6_2_0 -) class QTapFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTapReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QTapSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTapSensor(QObject *parent /TransferThis/ = 0); virtual ~QTapSensor(); QTapReading *reading() const; bool returnDoubleTapEvents() const; void setReturnDoubleTapEvents(bool returnDoubleTapEvents); signals: void returnDoubleTapEventsChanged(bool returnDoubleTapEvents); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3339665 PyQt6-6.6.1/sip/QtSensors/qtiltsensor.sip0000644000076500000240000000315114532160401017222 0ustar00philstaff// qtiltsensor.sip generated by MetaSIP // // This file is part of the QtSensors Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QTiltReading : QSensorReading /NoDefaultCtors/ { %TypeHeaderCode #include %End public: qreal yRotation() const; void setYRotation(qreal y); qreal xRotation() const; void setXRotation(qreal x); }; %End %If (Qt_6_2_0 -) class QTiltFilter : QSensorFilter { %TypeHeaderCode #include %End public: virtual bool filter(QTiltReading *reading) = 0; }; %End %If (Qt_6_2_0 -) class QTiltSensor : QSensor { %TypeHeaderCode #include %End public: explicit QTiltSensor(QObject *parent /TransferThis/ = 0); virtual ~QTiltSensor(); QTiltReading *reading() const; void calibrate(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5826836 PyQt6-6.6.1/sip/QtSerialPort/0000755000076500000240000000000014532160403014550 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.428007 PyQt6-6.6.1/sip/QtSerialPort/QtSerialPortmod.sip0000644000076500000240000000367614532160401020370 0ustar00philstaff// QtSerialPortmod.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSerialPort, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qserialport.sip %Include qserialportinfo.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.429403 PyQt6-6.6.1/sip/QtSerialPort/qserialport.sip0000644000076500000240000001736614532160401017645 0ustar00philstaff// qserialport.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QSerialPort : QIODevice { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSerialPort, &sipType_QSerialPort, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum Direction /BaseType=Flag/ { Input, Output, AllDirections, }; typedef QFlags Directions; enum BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, Baud38400, Baud57600, Baud115200, }; enum DataBits { Data5, Data6, Data7, Data8, }; enum Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity, }; enum StopBits { OneStop, OneAndHalfStop, TwoStop, }; enum FlowControl { NoFlowControl, HardwareControl, SoftwareControl, }; enum PinoutSignal /BaseType=Flag/ { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, RequestToSendSignal, ClearToSendSignal, SecondaryTransmittedDataSignal, SecondaryReceivedDataSignal, }; typedef QFlags PinoutSignals; enum SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, WriteError, ReadError, ResourceError, UnsupportedOperationError, TimeoutError, NotOpenError, UnknownError, }; explicit QSerialPort(QObject *parent /TransferThis/ = 0); QSerialPort(const QString &name, QObject *parent /TransferThis/ = 0); QSerialPort(const QSerialPortInfo &info, QObject *parent /TransferThis/ = 0); virtual ~QSerialPort(); void setPortName(const QString &name); QString portName() const; void setPort(const QSerialPortInfo &info); virtual bool open(QIODeviceBase::OpenMode mode) /ReleaseGIL/; virtual void close() /ReleaseGIL/; bool setBaudRate(qint32 baudRate, QSerialPort::Directions dir = QSerialPort::AllDirections); qint32 baudRate(QSerialPort::Directions dir = QSerialPort::AllDirections) const; bool setDataBits(QSerialPort::DataBits dataBits); QSerialPort::DataBits dataBits() const; bool setParity(QSerialPort::Parity parity); QSerialPort::Parity parity() const; bool setStopBits(QSerialPort::StopBits stopBits); QSerialPort::StopBits stopBits() const; bool setFlowControl(QSerialPort::FlowControl flow); QSerialPort::FlowControl flowControl() const; bool setDataTerminalReady(bool set); bool isDataTerminalReady(); bool setRequestToSend(bool set); bool isRequestToSend(); QSerialPort::PinoutSignals pinoutSignals(); bool flush() /ReleaseGIL/; bool clear(QSerialPort::Directions dir = QSerialPort::AllDirections); QSerialPort::SerialPortError error() const; void clearError(); qint64 readBufferSize() const; void setReadBufferSize(qint64 size); virtual bool isSequential() const; virtual qint64 bytesAvailable() const; virtual qint64 bytesToWrite() const; virtual bool canReadLine() const; virtual bool waitForReadyRead(int msecs = 30000) /ReleaseGIL/; virtual bool waitForBytesWritten(int msecs = 30000) /ReleaseGIL/; bool setBreakEnabled(bool enabled = true); signals: void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions); void dataBitsChanged(QSerialPort::DataBits dataBits); void parityChanged(QSerialPort::Parity parity); void stopBitsChanged(QSerialPort::StopBits stopBits); void flowControlChanged(QSerialPort::FlowControl flow); void dataTerminalReadyChanged(bool set); void requestToSendChanged(bool set); protected: virtual SIP_PYOBJECT readData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readData(s, a0) : sipCpp->readData(s, a0); #else len = sipCpp->sipProtectVirt_readData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual SIP_PYOBJECT readLineData(qint64 maxlen) /TypeHint="bytes",ReleaseGIL/ [qint64 (char *data, qint64 maxSize)]; %MethodCode // Return the data read or None if there was an error. if (a0 < 0) { PyErr_SetString(PyExc_ValueError, "maximum length of data to be read cannot be negative"); sipIsErr = 1; } else { char *s = new char[a0]; qint64 len; Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) len = sipSelfWasArg ? sipCpp->QSerialPort::readLineData(s, a0) : sipCpp->readLineData(s, a0); #else len = sipCpp->sipProtectVirt_readLineData(sipSelfWasArg, s, a0); #endif Py_END_ALLOW_THREADS if (len < 0) { Py_INCREF(Py_None); sipRes = Py_None; } else { sipRes = PyBytes_FromStringAndSize(s, len); if (!sipRes) sipIsErr = 1; } delete[] s; } %End virtual qint64 writeData(const char *data /Array/, qint64 maxSize /ArraySize/) /ReleaseGIL/; public: %If (Windows) void *handle() const; %End %If (Android || Linux || iOS || macOS || WebAssembly) int handle() const; %End bool isBreakEnabled() const; signals: void breakEnabledChanged(bool set); void errorOccurred(QSerialPort::SerialPortError error); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4276278 PyQt6-6.6.1/sip/QtSerialPort/qserialportinfo.sip0000644000076500000240000000335014532160401020505 0ustar00philstaff// qserialportinfo.sip generated by MetaSIP // // This file is part of the QtSerialPort Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QSerialPortInfo { %TypeHeaderCode #include %End public: QSerialPortInfo(); explicit QSerialPortInfo(const QSerialPort &port); explicit QSerialPortInfo(const QString &name); QSerialPortInfo(const QSerialPortInfo &other); ~QSerialPortInfo(); void swap(QSerialPortInfo &other /Constrained/); QString portName() const; QString systemLocation() const; QString description() const; QString manufacturer() const; quint16 vendorIdentifier() const; quint16 productIdentifier() const; bool hasVendorIdentifier() const; bool hasProductIdentifier() const; static QList standardBaudRates(); static QList availablePorts(); bool isNull() const; QString serialNumber() const; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.662565 PyQt6-6.6.1/sip/QtSpatialAudio/0000755000076500000240000000000014532160403015043 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5783024 PyQt6-6.6.1/sip/QtSpatialAudio/QtSpatialAudiomod.sip0000644000076500000240000000407314532160402021147 0ustar00philstaff// QtSpatialAudiomod.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSpatialAudio, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtMultimedia/QtMultimediamod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qambientsound.sip %Include qaudioengine.sip %Include qaudiolistener.sip %Include qaudioroom.sip %Include qspatialsound.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5794008 PyQt6-6.6.1/sip/QtSpatialAudio/qambientsound.sip0000644000076500000240000000321014532160402020424 0ustar00philstaff// qambientsound.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QAmbientSound : QObject { %TypeHeaderCode #include %End public: enum Loops { Infinite, Once, }; explicit QAmbientSound(QAudioEngine *engine); virtual ~QAmbientSound(); void setSource(const QUrl &url); QUrl source() const; int loops() const; void setLoops(int loops); bool autoPlay() const; void setAutoPlay(bool autoPlay); void setVolume(float volume); float volume() const; QAudioEngine *engine() const; signals: void sourceChanged(); void loopsChanged(); void autoPlayChanged(); void volumeChanged(); public slots: void play(); void pause(); void stop(); }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.581179 PyQt6-6.6.1/sip/QtSpatialAudio/qaudioengine.sip0000644000076500000240000000564214532160402020236 0ustar00philstaff// qaudioengine.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QAudioEngine : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QAmbientSound, &sipType_QAmbientSound, -1, 1}, {sipName_QAudioEngine, &sipType_QAudioEngine, -1, 2}, {sipName_QAudioListener, &sipType_QAudioListener, -1, 3}, {sipName_QAudioRoom, &sipType_QAudioRoom, -1, 4}, {sipName_QSpatialSound, &sipType_QSpatialSound, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum OutputMode { Surround, Stereo, Headphone, }; QAudioEngine(); explicit QAudioEngine(QObject *parent /TransferThis/); QAudioEngine(int sampleRate, QObject *parent /TransferThis/ = 0); virtual ~QAudioEngine(); void setOutputMode(QAudioEngine::OutputMode mode); QAudioEngine::OutputMode outputMode() const; int sampleRate() const; void setOutputDevice(const QAudioDevice &device); QAudioDevice outputDevice() const; void setMasterVolume(float volume); float masterVolume() const; void setPaused(bool paused); bool paused() const; void setRoomEffectsEnabled(bool enabled); bool roomEffectsEnabled() const; static const float DistanceScaleCentimeter; static const float DistanceScaleMeter; void setDistanceScale(float scale); float distanceScale() const; signals: void outputModeChanged(); void outputDeviceChanged(); void masterVolumeChanged(); void pausedChanged(); void distanceScaleChanged(); public slots: void start(); void stop(); void pause(); void resume(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5799396 PyQt6-6.6.1/sip/QtSpatialAudio/qaudiolistener.sip0000644000076500000240000000247614532160402020620 0ustar00philstaff// qaudiolistener.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QAudioListener : QObject { %TypeHeaderCode #include %End public: explicit QAudioListener(QAudioEngine *engine); virtual ~QAudioListener(); void setPosition(QVector3D pos); QVector3D position() const; void setRotation(const QQuaternion &q); QQuaternion rotation() const; QAudioEngine *engine() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5805516 PyQt6-6.6.1/sip/QtSpatialAudio/qaudioroom.sip0000644000076500000240000000532314532160402017741 0ustar00philstaff// qaudioroom.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QAudioRoom : QObject { %TypeHeaderCode #include %End public: enum Material { Transparent, AcousticCeilingTiles, BrickBare, BrickPainted, ConcreteBlockCoarse, ConcreteBlockPainted, CurtainHeavy, FiberGlassInsulation, GlassThin, GlassThick, Grass, LinoleumOnConcrete, Marble, Metal, ParquetOnConcrete, PlasterRough, PlasterSmooth, PlywoodPanel, PolishedConcreteOrTile, Sheetrock, WaterOrIceSurface, WoodCeiling, WoodPanel, UniformMaterial, }; enum Wall { LeftWall, RightWall, Floor, Ceiling, FrontWall, BackWall, }; explicit QAudioRoom(QAudioEngine *engine); virtual ~QAudioRoom(); void setPosition(QVector3D pos); QVector3D position() const; void setDimensions(QVector3D dim); QVector3D dimensions() const; void setRotation(const QQuaternion &q); QQuaternion rotation() const; void setWallMaterial(QAudioRoom::Wall wall, QAudioRoom::Material material); QAudioRoom::Material wallMaterial(QAudioRoom::Wall wall) const; void setReflectionGain(float factor); float reflectionGain() const; void setReverbGain(float factor); float reverbGain() const; void setReverbTime(float factor); float reverbTime() const; void setReverbBrightness(float factor); float reverbBrightness() const; signals: void positionChanged(); void dimensionsChanged(); void rotationChanged(); void wallsChanged(); void reflectionGainChanged(); void reverbGainChanged(); void reverbTimeChanged(); void reverbBrightnessChanged(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5789256 PyQt6-6.6.1/sip/QtSpatialAudio/qspatialsound.sip0000644000076500000240000000551314532160402020452 0ustar00philstaff// qspatialsound.sip generated by MetaSIP // // This file is part of the QtSpatialAudio Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_5_0 -) class QSpatialSound : QObject { %TypeHeaderCode #include %End public: enum class DistanceModel { Logarithmic, Linear, ManualAttenuation, }; enum Loops { Infinite, Once, }; explicit QSpatialSound(QAudioEngine *engine); virtual ~QSpatialSound(); void setSource(const QUrl &url); QUrl source() const; int loops() const; void setLoops(int loops); bool autoPlay() const; void setAutoPlay(bool autoPlay); void setPosition(QVector3D pos); QVector3D position() const; void setRotation(const QQuaternion &q); QQuaternion rotation() const; void setVolume(float volume); float volume() const; void setDistanceModel(QSpatialSound::DistanceModel model); QSpatialSound::DistanceModel distanceModel() const; void setSize(float size); float size() const; void setDistanceCutoff(float cutoff); float distanceCutoff() const; void setManualAttenuation(float attenuation); float manualAttenuation() const; void setOcclusionIntensity(float occlusion); float occlusionIntensity() const; void setDirectivity(float alpha); float directivity() const; void setDirectivityOrder(float alpha); float directivityOrder() const; void setNearFieldGain(float gain); float nearFieldGain() const; QAudioEngine *engine() const; signals: void sourceChanged(); void loopsChanged(); void autoPlayChanged(); void positionChanged(); void rotationChanged(); void volumeChanged(); void distanceModelChanged(); void sizeChanged(); void distanceCutoffChanged(); void manualAttenuationChanged(); void occlusionIntensityChanged(); void directivityChanged(); void directivityOrderChanged(); void nearFieldGainChanged(); public slots: void play(); void pause(); void stop(); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6495078 PyQt6-6.6.1/sip/QtSql/0000755000076500000240000000000014532160403013223 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5577404 PyQt6-6.6.1/sip/QtSql/QtSqlmod.sip0000644000076500000240000000435714532160402015514 0ustar00philstaff// QtSqlmod.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSql, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qsqldatabase.sip %Include qsqldriver.sip %Include qsqlerror.sip %Include qsqlfield.sip %Include qsqlindex.sip %Include qsqlquery.sip %Include qsqlquerymodel.sip %Include qsqlrecord.sip %Include qsqlrelationaldelegate.sip %Include qsqlrelationaltablemodel.sip %Include qsqlresult.sip %Include qsqltablemodel.sip %Include qtsqlglobal.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5573149 PyQt6-6.6.1/sip/QtSql/qsqldatabase.sip0000644000076500000240000000724214532160402016411 0ustar00philstaff// qsqldatabase.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriverCreatorBase /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlDriverCreatorBase(); virtual QSqlDriver *createObject() const = 0 /Factory/; }; class QSqlDatabase { %TypeHeaderCode #include %End public: QSqlDatabase(); QSqlDatabase(const QSqlDatabase &other); ~QSqlDatabase(); bool open() /ReleaseGIL/; bool open(const QString &user, const QString &password) /ReleaseGIL/; void close(); bool isOpen() const; bool isOpenError() const; QStringList tables(QSql::TableType type = QSql::Tables) const; QSqlIndex primaryIndex(const QString &tablename) const; QSqlRecord record(const QString &tablename) const; QSqlQuery exec(const QString &query = QString()) const /ReleaseGIL/; QSqlError lastError() const; bool isValid() const; bool transaction() /ReleaseGIL/; bool commit() /ReleaseGIL/; bool rollback() /ReleaseGIL/; void setDatabaseName(const QString &name); void setUserName(const QString &name); void setPassword(const QString &password); void setHostName(const QString &host); void setPort(int p); void setConnectOptions(const QString &options = QString()); QString databaseName() const; QString userName() const; QString password() const; QString hostName() const; QString driverName() const; int port() const; QString connectOptions() const; QString connectionName() const; QSqlDriver *driver() const; static QSqlDatabase addDatabase(const QString &type, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QSqlDatabase cloneDatabase(const QSqlDatabase &other, const QString &connectionName); static QSqlDatabase cloneDatabase(const QString &other, const QString &connectionName); static QSqlDatabase database(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection), bool open = true); static void removeDatabase(const QString &connectionName); static bool contains(const QString &connectionName = QLatin1String(QSqlDatabase::defaultConnection)); static QStringList drivers(); static QStringList connectionNames(); static void registerSqlDriver(const QString &name, QSqlDriverCreatorBase *creator /Transfer/); static bool isDriverAvailable(const QString &name); protected: explicit QSqlDatabase(const QString &type); explicit QSqlDatabase(QSqlDriver *driver); public: void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5530567 PyQt6-6.6.1/sip/QtSql/qsqldriver.sip0000644000076500000240000001166014532160402016137 0ustar00philstaff// qsqldriver.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlDriver : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSqlQueryModel, &sipType_QSqlQueryModel, 3, 1}, {sipName_QSqlRelationalDelegate, &sipType_QSqlRelationalDelegate, -1, 2}, {sipName_QSqlDriver, &sipType_QSqlDriver, -1, -1}, {sipName_QSqlTableModel, &sipType_QSqlTableModel, 4, -1}, {sipName_QSqlRelationalTableModel, &sipType_QSqlRelationalTableModel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum DriverFeature { Transactions, QuerySize, BLOB, Unicode, PreparedQueries, NamedPlaceholders, PositionalPlaceholders, LastInsertId, BatchOperations, SimpleLocking, LowPrecisionNumbers, EventNotifications, FinishQuery, MultipleResultSets, }; enum StatementType { WhereStatement, SelectStatement, UpdateStatement, InsertStatement, DeleteStatement, }; enum IdentifierType { FieldName, TableName, }; explicit QSqlDriver(QObject *parent /TransferThis/ = 0); virtual ~QSqlDriver(); virtual bool isOpen() const; bool isOpenError() const; virtual bool beginTransaction() /ReleaseGIL/; virtual bool commitTransaction() /ReleaseGIL/; virtual bool rollbackTransaction() /ReleaseGIL/; virtual QStringList tables(QSql::TableType tableType) const; virtual QSqlIndex primaryIndex(const QString &tableName) const; virtual QSqlRecord record(const QString &tableName) const; virtual QString formatValue(const QSqlField &field, bool trimStrings = false) const; virtual QString escapeIdentifier(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString sqlStatement(QSqlDriver::StatementType type, const QString &tableName, const QSqlRecord &rec, bool preparedStatement) const; QSqlError lastError() const; virtual QVariant handle() const; virtual bool hasFeature(QSqlDriver::DriverFeature f) const = 0; virtual void close() = 0; virtual QSqlResult *createResult() const = 0 /Factory/; virtual bool open(const QString &db, const QString &user = QString(), const QString &password = QString(), const QString &host = QString(), int port = -1, const QString &options = QString()) = 0 /ReleaseGIL/; protected: virtual void setOpen(bool o); virtual void setOpenError(bool e); virtual void setLastError(const QSqlError &e); public: virtual bool subscribeToNotification(const QString &name); virtual bool unsubscribeFromNotification(const QString &name); virtual QStringList subscribedToNotifications() const; enum NotificationSource { UnknownSource, SelfSource, OtherSource, }; signals: void notification(const QString &name, QSqlDriver::NotificationSource source, const QVariant &payload); public: virtual bool isIdentifierEscaped(const QString &identifier, QSqlDriver::IdentifierType type) const; virtual QString stripDelimiters(const QString &identifier, QSqlDriver::IdentifierType type) const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; enum DbmsType { UnknownDbms, MSSqlServer, MySqlServer, PostgreSQL, Oracle, Sybase, SQLite, Interbase, DB2, %If (Qt_6_6_0 -) MimerSQL, %End }; QSqlDriver::DbmsType dbmsType() const; virtual int maximumIdentifierLength(QSqlDriver::IdentifierType type) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5516102 PyQt6-6.6.1/sip/QtSql/qsqlerror.sip0000644000076500000240000000332514532160402015774 0ustar00philstaff// qsqlerror.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlError { %TypeHeaderCode #include %End public: enum ErrorType { NoError, ConnectionError, StatementError, TransactionError, UnknownError, }; QSqlError(const QString &driverText = QString(), const QString &databaseText = QString(), QSqlError::ErrorType type = QSqlError::NoError, const QString &errorCode = QString()); QSqlError(const QSqlError &other); ~QSqlError(); QString driverText() const; QString databaseText() const; QSqlError::ErrorType type() const; QString text() const; bool isValid() const; bool operator==(const QSqlError &other) const; bool operator!=(const QSqlError &other) const; QString nativeErrorCode() const; void swap(QSqlError &other /Constrained/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5587716 PyQt6-6.6.1/sip/QtSql/qsqlfield.sip0000644000076500000240000000457514532160402015736 0ustar00philstaff// qsqlfield.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlField { %TypeHeaderCode #include %End public: enum RequiredStatus { Unknown, Optional, Required, }; QSqlField(const QString &fieldName = QString(), QMetaType type = QMetaType(), const QString &tableName = QString()); QSqlField(const QSqlField &other); bool operator==(const QSqlField &other) const; bool operator!=(const QSqlField &other) const; ~QSqlField(); void setValue(const QVariant &value); QVariant value() const; void setName(const QString &name); QString name() const; bool isNull() const; void setReadOnly(bool readOnly); bool isReadOnly() const; void clear(); bool isAutoValue() const; void setRequiredStatus(QSqlField::RequiredStatus status); void setRequired(bool required); void setLength(int fieldLength); void setPrecision(int precision); void setDefaultValue(const QVariant &value); void setSqlType(int type); void setGenerated(bool gen); void setAutoValue(bool autoVal); QSqlField::RequiredStatus requiredStatus() const; int length() const; int precision() const; QVariant defaultValue() const; int typeID() const; bool isGenerated() const; bool isValid() const; void setTableName(const QString &tableName); QString tableName() const; QMetaType metaType() const; void setMetaType(QMetaType type); %If (Qt_6_6_0 -) void swap(QSqlField &other /Constrained/); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5567327 PyQt6-6.6.1/sip/QtSql/qsqlindex.sip0000644000076500000240000000303614532160402015751 0ustar00philstaff// qsqlindex.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlIndex : QSqlRecord { %TypeHeaderCode #include %End public: QSqlIndex(const QString &cursorName = QString(), const QString &name = QString()); QSqlIndex(const QSqlIndex &other); ~QSqlIndex(); void setCursorName(const QString &cursorName); QString cursorName() const; void setName(const QString &name); QString name() const; void append(const QSqlField &field); void append(const QSqlField &field, bool desc); bool isDescending(int i) const; void setDescending(int i, bool desc); %If (Qt_6_6_0 -) void swap(QSqlIndex &other /Constrained/); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.554607 PyQt6-6.6.1/sip/QtSql/qsqlquery.sip0000644000076500000240000000621014532160402016004 0ustar00philstaff// qsqlquery.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQuery { %TypeHeaderCode #include %End public: enum BatchExecutionMode { ValuesAsRows, ValuesAsColumns, }; explicit QSqlQuery(const QSqlDatabase &db); QSqlQuery(const QString &query = QString(), const QSqlDatabase &db = QSqlDatabase()) /ReleaseGIL/; explicit QSqlQuery(QSqlResult *r); QSqlQuery(const QSqlQuery &other); ~QSqlQuery(); bool isValid() const; bool isActive() const; bool isNull(int field) const; bool isNull(const QString &name) const; int at() const; QString lastQuery() const; int numRowsAffected() const; QSqlError lastError() const; bool isSelect() const; int size() const; const QSqlDriver *driver() const; const QSqlResult *result() const; bool isForwardOnly() const; QSqlRecord record() const; void setForwardOnly(bool forward); bool exec(const QString &query) /ReleaseGIL/; QVariant value(int i) const; QVariant value(const QString &name) const; bool seek(int index, bool relative = false) /ReleaseGIL/; bool next() /ReleaseGIL/; bool previous() /ReleaseGIL/; bool first() /ReleaseGIL/; bool last() /ReleaseGIL/; void clear() /ReleaseGIL/; bool exec() /ReleaseGIL/; bool execBatch(QSqlQuery::BatchExecutionMode mode = QSqlQuery::ValuesAsRows); bool prepare(const QString &query) /ReleaseGIL/; void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type = QSql::In); void bindValue(int pos, const QVariant &val, QSql::ParamType type = QSql::In); void addBindValue(const QVariant &val, QSql::ParamType type = QSql::In); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QVariantList boundValues() const; QString executedQuery() const; QVariant lastInsertId() const; void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; void finish(); bool nextResult(); %If (Qt_6_2_0 -) void swap(QSqlQuery &other /Constrained/); %End %If (Qt_6_6_0 -) QStringList boundValueNames() const; %End %If (Qt_6_6_0 -) QString boundValueName(int pos) const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5563176 PyQt6-6.6.1/sip/QtSql/qsqlquerymodel.sip0000644000076500000240000000605514532160402017034 0ustar00philstaff// qsqlquerymodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlQueryModel : QAbstractTableModel { %TypeHeaderCode #include %End public: explicit QSqlQueryModel(QObject *parent /TransferThis/ = 0); virtual ~QSqlQueryModel(); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; QSqlRecord record() const; QSqlRecord record(int row) const; virtual QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); void setQuery(const QSqlQuery &query); void setQuery(const QString &query, const QSqlDatabase &db = QSqlDatabase()); %If (Qt_6_5_0 -) const QSqlQuery &query() const; %MethodCode sipRes = const_cast(&sipCpp->query(Qt::Disambiguated)); %End %End %If (- Qt_6_5_0) QSqlQuery query() const; %End virtual void clear(); QSqlError lastError() const; virtual void fetchMore(const QModelIndex &parent = QModelIndex()); virtual bool canFetchMore(const QModelIndex &parent = QModelIndex()) const; protected: virtual void queryChange(); virtual QModelIndex indexInQuery(const QModelIndex &item) const; void setLastError(const QSqlError &error); void beginResetModel(); void endResetModel(); void beginInsertRows(const QModelIndex &parent, int first, int last); void endInsertRows(); void beginRemoveRows(const QModelIndex &parent, int first, int last); void endRemoveRows(); void beginInsertColumns(const QModelIndex &parent, int first, int last); void endInsertColumns(); void beginRemoveColumns(const QModelIndex &parent, int first, int last); void endRemoveColumns(); public: virtual QHash roleNames() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5550842 PyQt6-6.6.1/sip/QtSql/qsqlrecord.sip0000644000076500000240000000443214532160402016121 0ustar00philstaff// qsqlrecord.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRecord { %TypeHeaderCode #include %End public: QSqlRecord(); QSqlRecord(const QSqlRecord &other); ~QSqlRecord(); bool operator==(const QSqlRecord &other) const; bool operator!=(const QSqlRecord &other) const; QVariant value(int i) const; QVariant value(const QString &name) const; void setValue(int i, const QVariant &val); void setValue(const QString &name, const QVariant &val); void setNull(int i); void setNull(const QString &name); bool isNull(int i) const; bool isNull(const QString &name) const; int indexOf(const QString &name) const; QString fieldName(int i) const; QSqlField field(int i) const; QSqlField field(const QString &name) const; bool isGenerated(int i) const; bool isGenerated(const QString &name) const; void setGenerated(const QString &name, bool generated); void setGenerated(int i, bool generated); void append(const QSqlField &field); void replace(int pos, const QSqlField &field); void insert(int pos, const QSqlField &field); void remove(int pos); bool isEmpty() const; bool contains(const QString &name) const; void clear(); void clearValues(); int count() const /__len__/; QSqlRecord keyValues(const QSqlRecord &keyFields) const; %If (Qt_6_6_0 -) void swap(QSqlRecord &other /Constrained/); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5540373 PyQt6-6.6.1/sip/QtSql/qsqlrelationaldelegate.sip0000644000076500000240000000300614532160402020464 0ustar00philstaff// qsqlrelationaldelegate.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelationalDelegate : QStyledItemDelegate { %TypeHeaderCode #include %End public: explicit QSqlRelationalDelegate(QObject *parent /TransferThis/ = 0); virtual ~QSqlRelationalDelegate(); virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5582569 PyQt6-6.6.1/sip/QtSql/qsqlrelationaltablemodel.sip0000644000076500000240000000504614532160402021030 0ustar00philstaff// qsqlrelationaltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlRelation { %TypeHeaderCode #include %End public: QSqlRelation(); QSqlRelation(const QString &aTableName, const QString &indexCol, const QString &displayCol); QString tableName() const; QString indexColumn() const; QString displayColumn() const; bool isValid() const; void swap(QSqlRelation &other /Constrained/); }; class QSqlRelationalTableModel : QSqlTableModel { %TypeHeaderCode #include %End public: QSqlRelationalTableModel(QObject *parent /TransferThis/ = 0, const QSqlDatabase &db = QSqlDatabase()); virtual ~QSqlRelationalTableModel(); virtual QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole); virtual void clear(); virtual bool select(); virtual void setTable(const QString &tableName); virtual void setRelation(int column, const QSqlRelation &relation); QSqlRelation relation(int column) const; virtual QSqlTableModel *relationModel(int column) const; virtual void revertRow(int row); virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); protected: virtual QString selectStatement() const; virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual QString orderByClause() const; virtual bool insertRowIntoTable(const QSqlRecord &values); public: enum JoinMode { InnerJoin, LeftJoin, }; void setJoinMode(QSqlRelationalTableModel::JoinMode joinMode); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5522413 PyQt6-6.6.1/sip/QtSql/qsqlresult.sip0000644000076500000240000000705114532160402016161 0ustar00philstaff// qsqlresult.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlResult /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QSqlResult(); virtual QVariant handle() const; protected: enum BindingSyntax { PositionalBinding, NamedBinding, }; explicit QSqlResult(const QSqlDriver *db); int at() const; QString lastQuery() const; QSqlError lastError() const; bool isValid() const; bool isActive() const; bool isSelect() const; bool isForwardOnly() const; const QSqlDriver *driver() const; virtual void setAt(int at); virtual void setActive(bool a); virtual void setLastError(const QSqlError &e); virtual void setQuery(const QString &query); virtual void setSelect(bool s); virtual void setForwardOnly(bool forward); virtual bool exec() /ReleaseGIL/; virtual bool prepare(const QString &query) /ReleaseGIL/; virtual bool savePrepare(const QString &sqlquery); virtual void bindValue(int pos, const QVariant &val, QSql::ParamType type); virtual void bindValue(const QString &placeholder, const QVariant &val, QSql::ParamType type); void addBindValue(const QVariant &val, QSql::ParamType type); QVariant boundValue(const QString &placeholder) const; QVariant boundValue(int pos) const; QSql::ParamType bindValueType(const QString &placeholder) const; QSql::ParamType bindValueType(int pos) const; int boundValueCount() const; %If (Qt_6_6_0 -) QVariantList boundValues() const [QVariantList (Qt::Disambiguated_t = Qt::Disambiguated)]; %MethodCode #if defined(SIP_PROTECTED_IS_PUBLIC) sipRes = new ::QVariantList(sipCpp->boundValues()); #else sipRes = new ::QVariantList(sipCpp->sipProtect_boundValues(Qt::Disambiguated)); #endif %End %End %If (- Qt_6_6_0) QList &boundValues() const; %End QString executedQuery() const; QString boundValueName(int pos) const; void clear(); bool hasOutValues() const; QSqlResult::BindingSyntax bindingSyntax() const; virtual QVariant data(int i) = 0; virtual bool isNull(int i) = 0; virtual bool reset(const QString &sqlquery) = 0; virtual bool fetch(int i) = 0 /ReleaseGIL/; virtual bool fetchNext() /ReleaseGIL/; virtual bool fetchPrevious() /ReleaseGIL/; virtual bool fetchFirst() = 0 /ReleaseGIL/; virtual bool fetchLast() = 0 /ReleaseGIL/; virtual int size() = 0; virtual int numRowsAffected() = 0; virtual QSqlRecord record() const; virtual QVariant lastInsertId() const; %If (Qt_6_6_0 -) QStringList boundValueNames() const; %End private: QSqlResult(const QSqlResult &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5557976 PyQt6-6.6.1/sip/QtSql/qsqltablemodel.sip0000644000076500000240000000731114532160402016752 0ustar00philstaff// qsqltablemodel.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSqlTableModel : QSqlQueryModel { %TypeHeaderCode #include %End public: enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit, }; QSqlTableModel(QObject *parent /TransferThis/ = 0, const QSqlDatabase &db = QSqlDatabase()); virtual ~QSqlTableModel(); virtual bool select(); virtual void setTable(const QString &tableName); QString tableName() const; virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; bool isDirty(const QModelIndex &index) const; bool isDirty() const; virtual void clear(); virtual void setEditStrategy(QSqlTableModel::EditStrategy strategy); QSqlTableModel::EditStrategy editStrategy() const; QSqlIndex primaryKey() const; QSqlDatabase database() const; int fieldIndex(const QString &fieldName) const; virtual void sort(int column, Qt::SortOrder order); virtual void setSort(int column, Qt::SortOrder order); QString filter() const; virtual void setFilter(const QString &filter); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); bool insertRecord(int row, const QSqlRecord &record); bool setRecord(int row, const QSqlRecord &record); virtual void revertRow(int row); public slots: virtual bool submit(); virtual void revert(); bool submitAll(); void revertAll(); signals: void primeInsert(int row, QSqlRecord &record); void beforeInsert(QSqlRecord &record); void beforeUpdate(int row, QSqlRecord &record); void beforeDelete(int row); protected: virtual bool updateRowInTable(int row, const QSqlRecord &values); virtual bool insertRowIntoTable(const QSqlRecord &values); virtual bool deleteRowFromTable(int row); virtual QString orderByClause() const; virtual QString selectStatement() const; void setPrimaryKey(const QSqlIndex &key); %If (- Qt_6_5_0) void setQuery(const QSqlQuery &query); %End virtual QModelIndex indexInQuery(const QModelIndex &item) const; QSqlRecord primaryValues(int row) const; public: virtual bool selectRow(int row); QSqlRecord record() const; QSqlRecord record(int row) const; virtual bool clearItemData(const QModelIndex &index); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5536609 PyQt6-6.6.1/sip/QtSql/qtsqlglobal.sip0000644000076500000240000000275014532160402016270 0ustar00philstaff// qtsqlglobal.sip generated by MetaSIP // // This file is part of the QtSql Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QSql { %TypeHeaderCode #include %End enum Location { BeforeFirstRow, AfterLastRow, }; enum ParamTypeFlag /BaseType=Flag/ { In, Out, InOut, Binary, }; typedef QFlags ParamType; enum TableType { Tables, SystemTables, Views, AllTables, }; enum NumericalPrecisionPolicy { LowPrecisionInt32, LowPrecisionInt64, LowPrecisionDouble, HighPrecision, }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5273087 PyQt6-6.6.1/sip/QtSvg/0000755000076500000240000000000014532160403013223 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.319048 PyQt6-6.6.1/sip/QtSvg/QtSvgmod.sip0000644000076500000240000000370314532160401015505 0ustar00philstaff// QtSvgmod.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSvg, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qsvggenerator.sip %Include qsvgrenderer.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3178573 PyQt6-6.6.1/sip/QtSvg/qsvggenerator.sip0000644000076500000240000000404214532160401016625 0ustar00philstaff// qsvggenerator.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgGenerator : QPaintDevice { %TypeHeaderCode #include %End public: QSvgGenerator(); %If (Qt_6_5_0 -) explicit QSvgGenerator(QSvgGenerator::SvgVersion version); %End virtual ~QSvgGenerator(); QSize size() const; void setSize(const QSize &size); QString fileName() const; void setFileName(const QString &fileName); QIODevice *outputDevice() const; void setOutputDevice(QIODevice *outputDevice); int resolution() const; void setResolution(int resolution); QString title() const; void setTitle(const QString &title); QString description() const; void setDescription(const QString &description); QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewBox); void setViewBox(const QRectF &viewBox); protected: virtual QPaintEngine *paintEngine() const; virtual int metric(QPaintDevice::PaintDeviceMetric metric) const; public: %If (Qt_6_5_0 -) enum class SvgVersion { SvgTiny12, Svg11, }; %End %If (Qt_6_5_0 -) QSvgGenerator::SvgVersion svgVersion() const; %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.318544 PyQt6-6.6.1/sip/QtSvg/qsvgrenderer.sip0000644000076500000240000000574314532160401016456 0ustar00philstaff// qsvgrenderer.sip generated by MetaSIP // // This file is part of the QtSvg Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgRenderer : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QSvgRenderer, &sipType_QSvgRenderer, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QSvgRenderer(QObject *parent /TransferThis/ = 0); QSvgRenderer(const QString &filename, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSvgRenderer(const QByteArray &contents, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; QSvgRenderer(QXmlStreamReader *contents, QObject *parent /TransferThis/ = 0) /ReleaseGIL/; virtual ~QSvgRenderer(); bool isValid() const; QSize defaultSize() const; bool elementExists(const QString &id) const; QRect viewBox() const; QRectF viewBoxF() const; void setViewBox(const QRect &viewbox); void setViewBox(const QRectF &viewbox); bool animated() const; QRectF boundsOnElement(const QString &id) const; int framesPerSecond() const; void setFramesPerSecond(int num); int currentFrame() const; void setCurrentFrame(int); int animationDuration() const; public slots: bool load(const QString &filename) /ReleaseGIL/; bool load(const QByteArray &contents) /ReleaseGIL/; bool load(QXmlStreamReader *contents) /ReleaseGIL/; void render(QPainter *p) /ReleaseGIL/; void render(QPainter *p, const QRectF &bounds) /ReleaseGIL/; void render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) /ReleaseGIL/; signals: void repaintNeeded(); public: Qt::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Qt::AspectRatioMode mode); QTransform transformForElement(const QString &id) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.5293357 PyQt6-6.6.1/sip/QtSvgWidgets/0000755000076500000240000000000014532160403014552 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3227458 PyQt6-6.6.1/sip/QtSvgWidgets/QtSvgWidgetsmod.sip0000644000076500000240000000402714532160401020363 0ustar00philstaff// QtSvgWidgetsmod.sip generated by MetaSIP // // This file is part of the QtSvgWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtSvgWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtSvg/QtSvgmod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qgraphicssvgitem.sip %Include qsvgwidget.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3223577 PyQt6-6.6.1/sip/QtSvgWidgets/qgraphicssvgitem.sip0000644000076500000240000000356714532160401020660 0ustar00philstaff// qgraphicssvgitem.sip generated by MetaSIP // // This file is part of the QtSvgWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSvgItem : QGraphicsObject { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->type() == 13) { // Switch to the QObject convertor. *sipCppRet = static_cast(sipCpp); sipType = sipType_QObject; } else { sipType = 0; } %End public: QGraphicsSvgItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSvgItem(const QString &fileName, QGraphicsItem *parent /TransferThis/ = 0); void setSharedRenderer(QSvgRenderer *renderer /KeepReference/); QSvgRenderer *renderer() const; void setElementId(const QString &id); QString elementId() const; void setMaximumCacheSize(const QSize &size); QSize maximumCacheSize() const; virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual int type() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3232465 PyQt6-6.6.1/sip/QtSvgWidgets/qsvgwidget.sip0000644000076500000240000000376314532160401017462 0ustar00philstaff// qsvgwidget.sip generated by MetaSIP // // This file is part of the QtSvgWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSvgWidget : QWidget { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QGraphicsSvgItem, &sipType_QGraphicsSvgItem, -1, 1}, {sipName_QSvgWidget, &sipType_QSvgWidget, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QSvgWidget(QWidget *parent /TransferThis/ = 0); QSvgWidget(const QString &file, QWidget *parent /TransferThis/ = 0); virtual ~QSvgWidget(); QSvgRenderer *renderer() const; virtual QSize sizeHint() const; public slots: void load(const QString &file) /ReleaseGIL/; void load(const QByteArray &contents); protected: virtual void paintEvent(QPaintEvent *event); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.723679 PyQt6-6.6.1/sip/QtTest/0000755000076500000240000000000014532160403013403 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7155828 PyQt6-6.6.1/sip/QtTest/QtTestmod.sip0000644000076500000240000000407614532160402016052 0ustar00philstaff// QtTestmod.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtTest, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qabstractitemmodeltester.sip %Include qsignalspy.sip %Include qtestkeyboard.sip %Include qtestmouse.sip %Include qtestsystem.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.718001 PyQt6-6.6.1/sip/QtTest/qabstractitemmodeltester.sip0000644000076500000240000000323114532160402021231 0ustar00philstaff// qabstractitemmodeltester.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemModelTester : QObject { %TypeHeaderCode // Qt v5.11.0 needs this. #include #include %End public: enum class FailureReportingMode { QtTest, Warning, Fatal, }; QAbstractItemModelTester(QAbstractItemModel *model /KeepReference=1/, QObject *parent /TransferThis/ = 0); QAbstractItemModelTester(QAbstractItemModel *model /KeepReference=1/, QAbstractItemModelTester::FailureReportingMode mode, QObject *parent /TransferThis/ = 0); QAbstractItemModel *model() const; QAbstractItemModelTester::FailureReportingMode failureReportingMode() const; %If (Qt_6_4_0 -) void setUseFetchMore(bool value); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.716678 PyQt6-6.6.1/sip/QtTest/qsignalspy.sip0000644000076500000240000000632514532160402016317 0ustar00philstaff// qsignalspy.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSignalSpy : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = (sipCpp->inherits("QSignalSpy") ? sipType_QSignalSpy : 0); if (!sipType && sipCpp->inherits("QAbstractItemModelTester")) sipType = sipType_QAbstractItemModelTester; %End public: QSignalSpy(SIP_PYOBJECT signal /TypeHint="QtCore.pyqtBoundSignal"/) [(const QObject *obj, const char *aSignal)]; %MethodCode QObject *sender; QByteArray signal_signature; if ((sipError = pyqt6_qttest_get_pyqtsignal_parts(a0, &sender, signal_signature)) == sipErrorNone) sipCpp = new sipQSignalSpy(sender, signal_signature.constData()); else if (sipError == sipErrorContinue) sipError = sipBadCallableArg(0, a0); %End QSignalSpy(const QObject *obj, const QMetaMethod &signal); bool isValid() const; QByteArray signal() const; bool wait(int timeout = 5000) /ReleaseGIL/; Py_ssize_t __len__() const; %MethodCode sipRes = sipCpp->count(); %End QList __getitem__(int i) const; %MethodCode Py_ssize_t idx = sipConvertFromSequenceIndex(a0, sipCpp->count()); if (idx < 0) sipIsErr = 1; else sipRes = new QList(sipCpp->at((int)idx)); %End void __setitem__(int i, const QList &value); %MethodCode int len = sipCpp->count(); if ((a0 = (int)sipConvertFromSequenceIndex(a0, len)) < 0) sipIsErr = 1; else (*sipCpp)[a0] = *a1; %End void __delitem__(int i); %MethodCode if ((a0 = (int)sipConvertFromSequenceIndex(a0, sipCpp->count())) < 0) sipIsErr = 1; else sipCpp->removeAt(a0); %End }; %ModuleHeaderCode // Imports from QtCore. typedef sipErrorState (*pyqt6_qttest_get_pyqtsignal_parts_t)(PyObject *, QObject **, QByteArray &); extern pyqt6_qttest_get_pyqtsignal_parts_t pyqt6_qttest_get_pyqtsignal_parts; %End %ModuleCode // Imports from QtCore. pyqt6_qttest_get_pyqtsignal_parts_t pyqt6_qttest_get_pyqtsignal_parts; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qttest_get_pyqtsignal_parts = (pyqt6_qttest_get_pyqtsignal_parts_t)sipImportSymbol("pyqt6_get_pyqtsignal_parts"); Q_ASSERT(pyqt6_qttest_get_pyqtsignal_parts); %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.716061 PyQt6-6.6.1/sip/QtTest/qtestkeyboard.sip0000644000076500000240000000723414532160402017006 0ustar00philstaff// qtestkeyboard.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End enum KeyAction { Press, Release, Click, Shortcut, }; void keyClick(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClicks(QWidget *widget, const QString &sequence, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWidget *widget, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWidget *widget, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keySequence(QWidget *widget, const QKeySequence &keySequence); void simulateEvent(QWidget *widget, bool press, int code, Qt::KeyboardModifiers modifier, QString text, bool repeat, int delay = -1); void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code, char ascii /Encoding="ASCII"/, Qt::KeyboardModifiers modifier, int delay = -1); void sendKeyEvent(QTest::KeyAction action, QWidget *widget, Qt::Key code, QString text, Qt::KeyboardModifiers modifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyEvent(QTest::KeyAction action, QWindow *window, char ascii, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyClick(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyPress(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, Qt::Key key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keyRelease(QWindow *window, char key, Qt::KeyboardModifiers modifier = Qt::NoModifier, int delay = -1); void keySequence(QWindow *window, const QKeySequence &keySequence); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7175758 PyQt6-6.6.1/sip/QtTest/qtestmouse.sip0000644000076500000240000000461614532160402016337 0ustar00philstaff// qtestmouse.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void mouseClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseMove(QWidget *widget, QPoint pos = QPoint(), int delay = -1); void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseDClick(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); void mouseMove(QWindow *window, QPoint pos = QPoint(), int delay = -1); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.7171786 PyQt6-6.6.1/sip/QtTest/qtestsystem.sip0000644000076500000240000000254514532160402016532 0ustar00philstaff// qtestsystem.sip generated by MetaSIP // // This file is part of the QtTest Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. namespace QTest { %TypeHeaderCode #include %End void qWait(int ms) /ReleaseGIL/; bool qWaitForWindowActive(QWindow *window, int timeout = 5000) /ReleaseGIL/; bool qWaitForWindowExposed(QWindow *window, int timeout = 5000) /ReleaseGIL/; bool qWaitForWindowActive(QWidget *widget, int timeout = 5000) /ReleaseGIL/; bool qWaitForWindowExposed(QWidget *widget, int timeout = 5000) /ReleaseGIL/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6703796 PyQt6-6.6.1/sip/QtTextToSpeech/0000755000076500000240000000000014532160403015043 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.592371 PyQt6-6.6.1/sip/QtTextToSpeech/QtTextToSpeechmod.sip0000644000076500000240000000367514532160402021156 0ustar00philstaff// QtTextToSpeechmod.sip generated by MetaSIP // // This file is part of the QtTextToSpeech Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtTextToSpeech, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qtexttospeech.sip %Include qvoice.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5913916 PyQt6-6.6.1/sip/QtTextToSpeech/qtexttospeech.sip0000644000076500000240000001021514532160402020456 0ustar00philstaff// qtexttospeech.sip generated by MetaSIP // // This file is part of the QtTextToSpeech Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextToSpeech : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QTextToSpeech, &sipType_QTextToSpeech, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: enum class BoundaryHint { Default, Immediate, Word, Sentence, %If (Qt_6_6_0 -) Utterance, %End }; enum class ErrorReason { NoError, Initialization, Configuration, Input, Playback, }; enum State { Ready, Speaking, Paused, Error, %If (Qt_6_6_0 -) Synthesizing, %End }; QTextToSpeech(const QString &engine, const QVariantMap ¶ms, QObject *parent /TransferThis/ = 0); explicit QTextToSpeech(QObject *parent /TransferThis/ = 0); QTextToSpeech(const QString &engine, QObject *parent /TransferThis/ = 0); virtual ~QTextToSpeech(); bool setEngine(const QString &engine, const QVariantMap ¶ms = QVariantMap()); QString engine() const; QTextToSpeech::ErrorReason errorReason() const; QString errorString() const; QTextToSpeech::State state() const; QList availableLocales() const; QLocale locale() const; QVoice voice() const; QList availableVoices() const; double rate() const; double pitch() const; double volume() const; static QStringList availableEngines(); public slots: void say(const QString &text); void stop(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default); void pause(QTextToSpeech::BoundaryHint boundaryHint = QTextToSpeech::BoundaryHint::Default); void resume(); void setLocale(const QLocale &locale); void setRate(double rate); void setPitch(double pitch); void setVolume(double volume); void setVoice(const QVoice &voice); signals: void stateChanged(QTextToSpeech::State state); void localeChanged(const QLocale &locale); void rateChanged(double rate); void pitchChanged(double pitch); void volumeChanged(double volume); void voiceChanged(const QVoice &voice); void engineChanged(const QString &engine); void errorOccurred(QTextToSpeech::ErrorReason error, const QString &errorString); public: %If (Qt_6_6_0 -) enum class Capability { None, Speak, PauseResume, WordByWordProgress, Synthesize, }; %End %If (Qt_6_6_0 -) typedef QFlags Capabilities; %End %If (Qt_6_6_0 -) QTextToSpeech::Capabilities engineCapabilities() const; %End public slots: %If (Qt_6_6_0 -) qsizetype enqueue(const QString &text); %End signals: %If (Qt_6_6_0 -) void sayingWord(const QString &word, qsizetype id, qsizetype start, qsizetype length); %End %If (Qt_6_6_0 -) void aboutToSynthesize(qsizetype id); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5918915 PyQt6-6.6.1/sip/QtTextToSpeech/qvoice.sip0000644000076500000240000000343614532160402017053 0ustar00philstaff// qvoice.sip generated by MetaSIP // // This file is part of the QtTextToSpeech Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QVoice { %TypeHeaderCode #include %End public: enum Gender { Male, Female, Unknown, }; enum Age { Child, Teenager, Adult, Senior, Other, }; QVoice(); QVoice(const QVoice &other); ~QVoice(); QString name() const; QVoice::Gender gender() const; QVoice::Age age() const; static QString genderName(QVoice::Gender gender); static QString ageName(QVoice::Age age); void swap(QVoice &other); QLocale locale() const; %If (Qt_6_6_0 -) QLocale::Language language() const; %End }; bool operator==(const QVoice &lhs, const QVoice &rhs); bool operator!=(const QVoice &lhs, const QVoice &rhs); QDataStream &operator<<(QDataStream &str, const QVoice &voice); QDataStream &operator>>(QDataStream &str, QVoice &voice /Constrained/); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6013591 PyQt6-6.6.1/sip/QtWebChannel/0000755000076500000240000000000014532160403014472 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4608626 PyQt6-6.6.1/sip/QtWebChannel/QtWebChannelmod.sip0000644000076500000240000000371314532160401020224 0ustar00philstaff// QtWebChannelmod.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtWebChannel, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qwebchannel.sip %Include qwebchannelabstracttransport.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4618003 PyQt6-6.6.1/sip/QtWebChannel/qwebchannel.sip0000644000076500000240000000447314532160401017504 0ustar00philstaff// qwebchannel.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QWebChannel : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebChannelAbstractTransport, &sipType_QWebChannelAbstractTransport, -1, 1}, {sipName_QWebChannel, &sipType_QWebChannel, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: explicit QWebChannel(QObject *parent /TransferThis/ = 0); virtual ~QWebChannel(); void registerObjects(const QHash &objects); QHash registeredObjects() const; void registerObject(const QString &id, QObject *object); void deregisterObject(QObject *object); bool blockUpdates() const; void setBlockUpdates(bool block); int propertyUpdateInterval() const; void setPropertyUpdateInterval(int ms); public slots: void connectTo(QWebChannelAbstractTransport *transport); void disconnectFrom(QWebChannelAbstractTransport *transport); signals: void blockUpdatesChanged(bool block); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4612708 PyQt6-6.6.1/sip/QtWebChannel/qwebchannelabstracttransport.sip0000644000076500000240000000262114532160401023176 0ustar00philstaff// qwebchannelabstracttransport.sip generated by MetaSIP // // This file is part of the QtWebChannel Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QWebChannelAbstractTransport : QObject { %TypeHeaderCode #include %End public: explicit QWebChannelAbstractTransport(QObject *parent /TransferThis/ = 0); virtual ~QWebChannelAbstractTransport(); public slots: virtual void sendMessage(const QJsonObject &message) = 0; signals: void messageReceived(const QJsonObject &message, QWebChannelAbstractTransport *transport); }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.4605343 PyQt6-6.6.1/sip/QtWebSockets/0000755000076500000240000000000014532160402014534 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1706781 PyQt6-6.6.1/sip/QtWebSockets/QtWebSocketsmod.sip0000644000076500000240000000415614532160401020334 0ustar00philstaff// QtWebSocketsmod.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtWebSockets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtNetwork/QtNetworkmod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qmaskgenerator.sip %Include qwebsocket.sip %Include qwebsocketcorsauthenticator.sip %Include qwebsockethandshakeoptions.sip %Include qwebsocketprotocol.sip %Include qwebsocketserver.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1712687 PyQt6-6.6.1/sip/QtWebSockets/qmaskgenerator.sip0000644000076500000240000000232614532160401020276 0ustar00philstaff// qmaskgenerator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QMaskGenerator : QObject { %TypeHeaderCode #include %End public: explicit QMaskGenerator(QObject *parent /TransferThis/ = 0); virtual ~QMaskGenerator(); virtual bool seed() = 0; virtual quint32 nextMask() = 0; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.169961 PyQt6-6.6.1/sip/QtWebSockets/qwebsocket.sip0000644000076500000240000001375514532160401017432 0ustar00philstaff// qwebsocket.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QWebSocket : QObject { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWebSocket, &sipType_QWebSocket, -1, 1}, {sipName_QWebSocketServer, &sipType_QWebSocketServer, -1, 2}, {sipName_QMaskGenerator, &sipType_QMaskGenerator, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent /TransferThis/ = 0); virtual ~QWebSocket(); void abort(); QAbstractSocket::SocketError error() const; QString errorString() const; bool flush() /ReleaseGIL/; bool isValid() const; QHostAddress localAddress() const; quint16 localPort() const; QAbstractSocket::PauseModes pauseMode() const; QHostAddress peerAddress() const; QString peerName() const; quint16 peerPort() const; QNetworkProxy proxy() const; void setProxy(const QNetworkProxy &networkProxy); void setMaskGenerator(const QMaskGenerator *maskGenerator /KeepReference/); const QMaskGenerator *maskGenerator() const; qint64 readBufferSize() const; void setReadBufferSize(qint64 size); void resume() /ReleaseGIL/; void setPauseMode(QAbstractSocket::PauseModes pauseMode); QAbstractSocket::SocketState state() const; QWebSocketProtocol::Version version() const; QString resourceName() const; QUrl requestUrl() const; QString origin() const; QWebSocketProtocol::CloseCode closeCode() const; QString closeReason() const; qint64 sendTextMessage(const QString &message) /ReleaseGIL/; qint64 sendBinaryMessage(const QByteArray &data) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(const QList &errors); %End %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End QNetworkRequest request() const; public slots: void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()) /ReleaseGIL/; %If (Qt_6_4_0 -) void open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options) /ReleaseGIL/; %End %If (Qt_6_4_0 -) void open(const QUrl &url, const QWebSocketHandshakeOptions &options) /ReleaseGIL/; %End void open(const QUrl &url) /ReleaseGIL/; void open(const QNetworkRequest &request) /ReleaseGIL/; void ping(const QByteArray &payload = QByteArray()) /ReleaseGIL/; %If (PyQt_SSL) void ignoreSslErrors(); %End signals: void aboutToClose(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState state); void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator); void readChannelFinished(); void textFrameReceived(const QString &frame, bool isLastFrame); void binaryFrameReceived(const QByteArray &frame, bool isLastFrame); void textMessageReceived(const QString &message); void binaryMessageReceived(const QByteArray &message); void error(QAbstractSocket::SocketError error); void pong(quint64 elapsedTime, const QByteArray &payload); void bytesWritten(qint64 bytes); %If (PyQt_SSL) void sslErrors(const QList &errors); %End %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End public: qint64 bytesToWrite() const; void setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize); quint64 maxAllowedIncomingFrameSize() const; void setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize); quint64 maxAllowedIncomingMessageSize() const; static quint64 maxIncomingMessageSize(); static quint64 maxIncomingFrameSize(); void setOutgoingFrameSize(quint64 outgoingFrameSize); quint64 outgoingFrameSize() const; static quint64 maxOutgoingFrameSize(); void continueInterruptedHandshake(); signals: %If (PyQt_SSL) void peerVerifyError(const QSslError &error); %End %If (PyQt_SSL) void alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); %End %If (PyQt_SSL) void alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description); %End %If (PyQt_SSL) void handshakeInterruptedOnError(const QSslError &error); %End public: %If (Qt_6_4_0 -) QWebSocketHandshakeOptions handshakeOptions() const; %End %If (Qt_6_4_0 -) QString subprotocol() const; %End signals: %If (Qt_6_5_0 -) void errorOccurred(QAbstractSocket::SocketError error); %End %If (Qt_6_6_0 -) void authenticationRequired(QAuthenticator *authenticator); %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1686451 PyQt6-6.6.1/sip/QtWebSockets/qwebsocketcorsauthenticator.sip0000644000076500000240000000264514532160401023110 0ustar00philstaff// qwebsocketcorsauthenticator.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QWebSocketCorsAuthenticator { %TypeHeaderCode #include %End public: explicit QWebSocketCorsAuthenticator(const QString &origin); explicit QWebSocketCorsAuthenticator(const QWebSocketCorsAuthenticator &other); ~QWebSocketCorsAuthenticator(); void swap(QWebSocketCorsAuthenticator &other /Constrained/); QString origin() const; void setAllowed(bool allowed); bool allowed() const; }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1680515 PyQt6-6.6.1/sip/QtWebSockets/qwebsockethandshakeoptions.sip0000644000076500000240000000312714532160401022705 0ustar00philstaff// qwebsockethandshakeoptions.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_4_0 -) class QWebSocketHandshakeOptions { %TypeHeaderCode #include %End public: QWebSocketHandshakeOptions(); QWebSocketHandshakeOptions(const QWebSocketHandshakeOptions &other); ~QWebSocketHandshakeOptions(); void swap(QWebSocketHandshakeOptions &other); QStringList subprotocols() const; void setSubprotocols(const QStringList &protocols); }; %End %If (Qt_6_4_0 -) bool operator==(const QWebSocketHandshakeOptions &lhs, const QWebSocketHandshakeOptions &rhs); %End %If (Qt_6_4_0 -) bool operator!=(const QWebSocketHandshakeOptions &lhs, const QWebSocketHandshakeOptions &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.1674333 PyQt6-6.6.1/sip/QtWebSockets/qwebsocketprotocol.sip0000644000076500000240000000331514532160401021203 0ustar00philstaff// qwebsocketprotocol.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) namespace QWebSocketProtocol { %TypeHeaderCode #include %End enum Version { VersionUnknown, Version0, Version4, Version5, Version6, Version7, Version8, Version13, VersionLatest, }; enum CloseCode { CloseCodeNormal, CloseCodeGoingAway, CloseCodeProtocolError, CloseCodeDatatypeNotSupported, CloseCodeReserved1004, CloseCodeMissingStatusCode, CloseCodeAbnormalDisconnection, CloseCodeWrongDatatype, CloseCodePolicyViolated, CloseCodeTooMuchData, CloseCodeMissingExtension, CloseCodeBadOperation, CloseCodeTlsHandshakeFailed, }; }; %End ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.172173 PyQt6-6.6.1/sip/QtWebSockets/qwebsocketserver.sip0000644000076500000240000000626114532160401020653 0ustar00philstaff// qwebsocketserver.sip generated by MetaSIP // // This file is part of the QtWebSockets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %If (Qt_6_2_0 -) class QWebSocketServer : QObject { %TypeHeaderCode #include %End public: enum SslMode { %If (PyQt_SSL) SecureMode, %End NonSecureMode, }; QWebSocketServer(const QString &serverName, QWebSocketServer::SslMode secureMode, QObject *parent /TransferThis/ = 0); virtual ~QWebSocketServer(); bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); void close(); bool isListening() const; void setMaxPendingConnections(int numConnections); int maxPendingConnections() const; quint16 serverPort() const; QHostAddress serverAddress() const; QWebSocketServer::SslMode secureMode() const; bool setSocketDescriptor(qintptr socketDescriptor); qintptr socketDescriptor() const; bool hasPendingConnections() const; virtual QWebSocket *nextPendingConnection() /Factory/; QWebSocketProtocol::CloseCode error() const; QString errorString() const; void pauseAccepting(); void resumeAccepting(); void setServerName(const QString &serverName); QString serverName() const; void setProxy(const QNetworkProxy &networkProxy); QNetworkProxy proxy() const; %If (PyQt_SSL) void setSslConfiguration(const QSslConfiguration &sslConfiguration); %End %If (PyQt_SSL) QSslConfiguration sslConfiguration() const; %End QList supportedVersions() const; QUrl serverUrl() const; void handleConnection(QTcpSocket *socket) const; signals: void acceptError(QAbstractSocket::SocketError socketError); void serverError(QWebSocketProtocol::CloseCode closeCode); void originAuthenticationRequired(QWebSocketCorsAuthenticator *pAuthenticator); void newConnection(); %If (PyQt_SSL) void peerVerifyError(const QSslError &error); %End %If (PyQt_SSL) void sslErrors(const QList &errors); %End void closed(); %If (PyQt_SSL) void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator); %End public: void setHandshakeTimeout(int msec); int handshakeTimeoutMS() const; %If (Qt_6_4_0 -) void setSupportedSubprotocols(const QStringList &protocols); %End %If (Qt_6_4_0 -) QStringList supportedSubprotocols() const; %End }; %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.6444066 PyQt6-6.6.1/sip/QtWidgets/0000755000076500000240000000000014532160403014072 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.52464 PyQt6-6.6.1/sip/QtWidgets/QtWidgetsmod.sip0000644000076500000240000001146114532160402017224 0ustar00philstaff// QtWidgetsmod.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtWidgets, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Import QtGui/QtGuimod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qabstractbutton.sip %Include qabstractitemdelegate.sip %Include qabstractitemview.sip %Include qabstractscrollarea.sip %Include qabstractslider.sip %Include qabstractspinbox.sip %Include qapplication.sip %Include qboxlayout.sip %Include qbuttongroup.sip %Include qcalendarwidget.sip %Include qcheckbox.sip %Include qcolordialog.sip %Include qcolumnview.sip %Include qcombobox.sip %Include qcommandlinkbutton.sip %Include qcommonstyle.sip %Include qcompleter.sip %Include qdatawidgetmapper.sip %Include qdatetimeedit.sip %Include qdial.sip %Include qdialog.sip %Include qdialogbuttonbox.sip %Include qdockwidget.sip %Include qdrawutil.sip %Include qerrormessage.sip %Include qfiledialog.sip %Include qfileiconprovider.sip %Include qfocusframe.sip %Include qfontcombobox.sip %Include qfontdialog.sip %Include qformlayout.sip %Include qframe.sip %Include qgesture.sip %Include qgesturerecognizer.sip %Include qgraphicsanchorlayout.sip %Include qgraphicseffect.sip %Include qgraphicsgridlayout.sip %Include qgraphicsitem.sip %Include qgraphicslayout.sip %Include qgraphicslayoutitem.sip %Include qgraphicslinearlayout.sip %Include qgraphicsproxywidget.sip %Include qgraphicsscene.sip %Include qgraphicssceneevent.sip %Include qgraphicstransform.sip %Include qgraphicsview.sip %Include qgraphicswidget.sip %Include qgridlayout.sip %Include qgroupbox.sip %Include qheaderview.sip %Include qinputdialog.sip %Include qitemdelegate.sip %Include qitemeditorfactory.sip %Include qkeysequenceedit.sip %Include qlabel.sip %Include qlayout.sip %Include qlayoutitem.sip %Include qlcdnumber.sip %Include qlineedit.sip %Include qlistview.sip %Include qlistwidget.sip %Include qmainwindow.sip %Include qmdiarea.sip %Include qmdisubwindow.sip %Include qmenu.sip %Include qmenubar.sip %Include qmessagebox.sip %Include qplaintextedit.sip %Include qprogressbar.sip %Include qprogressdialog.sip %Include qproxystyle.sip %Include qpushbutton.sip %Include qradiobutton.sip %Include qrubberband.sip %Include qscrollarea.sip %Include qscrollbar.sip %Include qscroller.sip %Include qscrollerproperties.sip %Include qsizegrip.sip %Include qsizepolicy.sip %Include qslider.sip %Include qspinbox.sip %Include qsplashscreen.sip %Include qsplitter.sip %Include qstackedlayout.sip %Include qstackedwidget.sip %Include qstatusbar.sip %Include qstyle.sip %Include qstyleditemdelegate.sip %Include qstylefactory.sip %Include qstyleoption.sip %Include qstylepainter.sip %Include qsystemtrayicon.sip %Include qtabbar.sip %Include qtableview.sip %Include qtablewidget.sip %Include qtabwidget.sip %Include qtextbrowser.sip %Include qtextedit.sip %Include qtoolbar.sip %Include qtoolbox.sip %Include qtoolbutton.sip %Include qtooltip.sip %Include qtreeview.sip %Include qtreewidget.sip %Include qtreewidgetitemiterator.sip %Include qundoview.sip %Include qwhatsthis.sip %Include qwidget.sip %Include qwidgetaction.sip %Include qwizard.sip %Include qfilesystemmodel.sip %Include qpywidgets_qlist.sip ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.542337 PyQt6-6.6.1/sip/QtWidgets/qabstractbutton.sip0000644000076500000240000000525414532160402020034 0ustar00philstaff// qabstractbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractButton : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractButton(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractButton(); void setAutoRepeatDelay(int); int autoRepeatDelay() const; void setAutoRepeatInterval(int); int autoRepeatInterval() const; void setText(const QString &text); QString text() const; void setIcon(const QIcon &icon); QIcon icon() const; QSize iconSize() const; void setShortcut(const QKeySequence &key); QKeySequence shortcut() const; void setCheckable(bool); bool isCheckable() const; bool isChecked() const; void setDown(bool); bool isDown() const; void setAutoRepeat(bool); bool autoRepeat() const; void setAutoExclusive(bool); bool autoExclusive() const; QButtonGroup *group() const; public slots: void setIconSize(const QSize &size); void animateClick(); void click(); void toggle(); void setChecked(bool); signals: void pressed(); void released(); void clicked(bool checked = false); void toggled(bool checked); protected: virtual void paintEvent(QPaintEvent *e) = 0; virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void timerEvent(QTimerEvent *e); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4954486 PyQt6-6.6.1/sip/QtWidgets/qabstractitemdelegate.sip0000644000076500000240000000507514532160401021152 0ustar00philstaff// qabstractitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemDelegate : QObject { %TypeHeaderCode #include %End public: enum EndEditHint { NoHint, EditNextItem, EditPreviousItem, SubmitModelCache, RevertModelCache, }; explicit QAbstractItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QAbstractItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const = 0; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const; virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); virtual bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index); signals: void commitData(QWidget *editor); void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint = QAbstractItemDelegate::NoHint); void sizeHintChanged(const QModelIndex &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4811063 PyQt6-6.6.1/sip/QtWidgets/qabstractitemview.sip0000644000076500000240000002420414532160401020345 0ustar00philstaff// qabstractitemview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractItemView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum DragDropMode { NoDragDrop, DragOnly, DropOnly, DragDrop, InternalMove, }; enum EditTrigger /BaseType=Flag/ { NoEditTriggers, CurrentChanged, DoubleClicked, SelectedClicked, EditKeyPressed, AnyKeyPressed, AllEditTriggers, }; typedef QFlags EditTriggers; enum ScrollHint { EnsureVisible, PositionAtTop, PositionAtBottom, PositionAtCenter, }; enum ScrollMode { ScrollPerItem, ScrollPerPixel, }; enum SelectionBehavior { SelectItems, SelectRows, SelectColumns, }; enum SelectionMode { NoSelection, SingleSelection, MultiSelection, ExtendedSelection, ContiguousSelection, }; explicit QAbstractItemView(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractItemView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QItemSelectionModel *selectionModel() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setSelectionMode(QAbstractItemView::SelectionMode mode); QAbstractItemView::SelectionMode selectionMode() const; void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior); QAbstractItemView::SelectionBehavior selectionBehavior() const; QModelIndex currentIndex() const; QModelIndex rootIndex() const; void setEditTriggers(QAbstractItemView::EditTriggers triggers); QAbstractItemView::EditTriggers editTriggers() const; void setAutoScroll(bool enable); bool hasAutoScroll() const; void setTabKeyNavigation(bool enable); bool tabKeyNavigation() const; void setDropIndicatorShown(bool enable); bool showDropIndicator() const; void setDragEnabled(bool enable); bool dragEnabled() const; void setAlternatingRowColors(bool enable); bool alternatingRowColors() const; void setIconSize(const QSize &size); QSize iconSize() const; void setTextElideMode(Qt::TextElideMode mode); Qt::TextElideMode textElideMode() const; virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const = 0; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible) = 0; virtual QModelIndex indexAt(const QPoint &p) const = 0; QSize sizeHintForIndex(const QModelIndex &index) const; virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; void openPersistentEditor(const QModelIndex &index); void closePersistentEditor(const QModelIndex &index); void setIndexWidget(const QModelIndex &index, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->indexWidget(*a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setIndexWidget(*a0, a1); Py_END_ALLOW_THREADS %End QWidget *indexWidget(const QModelIndex &index) const; public slots: virtual void reset(); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); void edit(const QModelIndex &index); void clearSelection(); void setCurrentIndex(const QModelIndex &index); void scrollToTop(); void scrollToBottom(); void update(); void update(const QModelIndex &index); protected slots: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList &roles = QList()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void updateEditorData(); virtual void updateEditorGeometries(); virtual void updateGeometries(); virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual void verticalScrollbarValueChanged(int value); virtual void horizontalScrollbarValueChanged(int value); virtual void closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint); virtual void commitData(QWidget *editor); virtual void editorDestroyed(QObject *editor); signals: void pressed(const QModelIndex &index); void clicked(const QModelIndex &index); void doubleClicked(const QModelIndex &index); void activated(const QModelIndex &index); void entered(const QModelIndex &index); void viewportEntered(); void iconSizeChanged(const QSize &size); protected: enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, MoveHome, MoveEnd, MovePageUp, MovePageDown, MoveNext, MovePrevious, }; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0; virtual int horizontalOffset() const = 0; virtual int verticalOffset() const = 0; virtual bool isIndexHidden(const QModelIndex &index) const = 0; virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) = 0; virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0; virtual QModelIndexList selectedIndexes() const; virtual bool edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event); virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = 0) const; virtual void startDrag(Qt::DropActions supportedActions); enum State { NoState, DraggingState, DragSelectingState, EditingState, ExpandingState, CollapsingState, AnimatingState, }; QAbstractItemView::State state() const; void setState(QAbstractItemView::State state); void scheduleDelayedItemsLayout(); void executeDelayedItemsLayout(); void scrollDirtyRegion(int dx, int dy); void setDirtyRegion(const QRegion ®ion); QPoint dirtyRegionOffset() const; virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void timerEvent(QTimerEvent *e); enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport, }; QAbstractItemView::DropIndicatorPosition dropIndicatorPosition() const; public: void setVerticalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode verticalScrollMode() const; void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode); QAbstractItemView::ScrollMode horizontalScrollMode() const; void setDragDropOverwriteMode(bool overwrite); bool dragDropOverwriteMode() const; void setDragDropMode(QAbstractItemView::DragDropMode behavior); QAbstractItemView::DragDropMode dragDropMode() const; void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForRow(int row) const; void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegateForColumn(int column) const; virtual QAbstractItemDelegate *itemDelegateForIndex(const QModelIndex &index) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; void setAutoScrollMargin(int margin); int autoScrollMargin() const; protected: virtual bool focusNextPrevChild(bool next); virtual void inputMethodEvent(QInputMethodEvent *event); virtual QSize viewportSizeHint() const; virtual bool eventFilter(QObject *object, QEvent *event); public: void setDefaultDropAction(Qt::DropAction dropAction); Qt::DropAction defaultDropAction() const; void resetVerticalScrollMode(); void resetHorizontalScrollMode(); bool isPersistentEditorOpen(const QModelIndex &index) const; protected: virtual void initViewItemOption(QStyleOptionViewItem *option) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5429137 PyQt6-6.6.1/sip/QtWidgets/qabstractscrollarea.sip0000644000076500000240000000660314532160402020647 0ustar00philstaff// qabstractscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractScrollArea : QFrame { %TypeHeaderCode #include %End public: explicit QAbstractScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractScrollArea(); Qt::ScrollBarPolicy verticalScrollBarPolicy() const; void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *verticalScrollBar() const /Transfer/; Qt::ScrollBarPolicy horizontalScrollBarPolicy() const; void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy); QScrollBar *horizontalScrollBar() const /Transfer/; QWidget *viewport() const /Transfer/; QSize maximumViewportSize() const; virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; protected: void setViewportMargins(int left, int top, int right, int bottom); void setViewportMargins(const QMargins &margins); QMargins viewportMargins() const; virtual QSize viewportSizeHint() const; virtual bool event(QEvent *); virtual bool viewportEvent(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void keyPressEvent(QKeyEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void scrollContentsBy(int dx, int dy); public: void setVerticalScrollBar(QScrollBar *scrollbar /Transfer/); void setHorizontalScrollBar(QScrollBar *scrollbar /Transfer/); QWidget *cornerWidget() const; void setCornerWidget(QWidget *widget /Transfer/); void addScrollBarWidget(QWidget *widget /Transfer/, Qt::Alignment alignment); QWidgetList scrollBarWidgets(Qt::Alignment alignment) /Transfer/; void setViewport(QWidget *widget /Transfer/); virtual void setupViewport(QWidget *viewport); enum SizeAdjustPolicy { AdjustIgnored, AdjustToContentsOnFirstShow, AdjustToContents, }; QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const; void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.466694 PyQt6-6.6.1/sip/QtWidgets/qabstractslider.sip0000644000076500000240000000570114532160401017777 0ustar00philstaff// qabstractslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSlider : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSlider(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSlider(); Qt::Orientation orientation() const; void setMinimum(int); int minimum() const; void setMaximum(int); int maximum() const; void setRange(int min, int max); void setSingleStep(int); int singleStep() const; void setPageStep(int); int pageStep() const; void setTracking(bool enable); bool hasTracking() const; void setSliderDown(bool); bool isSliderDown() const; void setSliderPosition(int); int sliderPosition() const; void setInvertedAppearance(bool); bool invertedAppearance() const; void setInvertedControls(bool); bool invertedControls() const; enum SliderAction { SliderNoAction, SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd, SliderPageStepSub, SliderToMinimum, SliderToMaximum, SliderMove, }; int value() const; void triggerAction(QAbstractSlider::SliderAction action); public slots: void setValue(int); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); void sliderPressed(); void sliderMoved(int position); void sliderReleased(); void rangeChanged(int min, int max); void actionTriggered(int action); protected: void setRepeatAction(QAbstractSlider::SliderAction action, int thresholdTime = 500, int repeatTime = 50); QAbstractSlider::SliderAction repeatAction() const; enum SliderChange { SliderRangeChange, SliderOrientationChange, SliderStepsChange, SliderValueChange, }; virtual void sliderChange(QAbstractSlider::SliderChange change); virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void timerEvent(QTimerEvent *); virtual void wheelEvent(QWheelEvent *e); virtual void changeEvent(QEvent *e); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5232928 PyQt6-6.6.1/sip/QtWidgets/qabstractspinbox.sip0000644000076500000240000000766514532160402020213 0ustar00philstaff// qabstractspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QAbstractSpinBox : QWidget { %TypeHeaderCode #include %End public: explicit QAbstractSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QAbstractSpinBox(); enum StepEnabledFlag /BaseType=Flag/ { StepNone, StepUpEnabled, StepDownEnabled, }; typedef QFlags StepEnabled; enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons, }; QAbstractSpinBox::ButtonSymbols buttonSymbols() const; void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs); QString text() const; QString specialValueText() const; void setSpecialValueText(const QString &s); bool wrapping() const; void setWrapping(bool w); void setReadOnly(bool r); bool isReadOnly() const; void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void setFrame(bool); bool hasFrame() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void interpretText(); virtual bool event(QEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual void stepBy(int steps); public slots: void stepUp(); void stepDown(); void selectAll(); virtual void clear(); signals: void editingFinished(); protected: virtual void resizeEvent(QResizeEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void changeEvent(QEvent *e); virtual void closeEvent(QCloseEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); QLineEdit *lineEdit() const; void setLineEdit(QLineEdit *e /Transfer/); virtual QAbstractSpinBox::StepEnabled stepEnabled() const; virtual void initStyleOption(QStyleOptionSpinBox *option) const; public: enum CorrectionMode { CorrectToPreviousValue, CorrectToNearestValue, }; void setCorrectionMode(QAbstractSpinBox::CorrectionMode cm); QAbstractSpinBox::CorrectionMode correctionMode() const; bool hasAcceptableInput() const; void setAccelerated(bool on); bool isAccelerated() const; void setKeyboardTracking(bool kt); bool keyboardTracking() const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; void setGroupSeparatorShown(bool shown); bool isGroupSeparatorShown() const; enum StepType { DefaultStepType, AdaptiveDecimalStepType, }; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5102494 PyQt6-6.6.1/sip/QtWidgets/qapplication.sip0000644000076500000240000003347014532160402017301 0ustar00philstaff// qapplication.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. typedef QList QWidgetList; class QApplication : QGuiApplication { %TypeHeaderCode #include %End %ConvertToSubClassCode static struct class_graph { const char *name; sipTypeDef **type; int yes, no; } graph[] = { {sipName_QWidget, &sipType_QWidget, 18, 1}, {sipName_QAbstractItemDelegate, &sipType_QAbstractItemDelegate, 89, 2}, {sipName_QApplication, &sipType_QApplication, -1, 3}, {sipName_QLayout, &sipType_QLayout, 91, 4}, {sipName_QButtonGroup, &sipType_QButtonGroup, -1, 5}, {sipName_QStyle, &sipType_QStyle, 97, 6}, {sipName_QCompleter, &sipType_QCompleter, -1, 7}, {sipName_QDataWidgetMapper, &sipType_QDataWidgetMapper, -1, 8}, {sipName_QGesture, &sipType_QGesture, 99, 9}, {sipName_QGraphicsAnchor, &sipType_QGraphicsAnchor, -1, 10}, {sipName_QGraphicsEffect, &sipType_QGraphicsEffect, 104, 11}, {sipName_QGraphicsObject, &sipType_QGraphicsObject, 108, 12}, {sipName_QGraphicsTransform, &sipType_QGraphicsTransform, 111, 13}, {sipName_QGraphicsScene, &sipType_QGraphicsScene, -1, 14}, {sipName_QPlainTextDocumentLayout, &sipType_QPlainTextDocumentLayout, -1, 15}, {sipName_QScroller, &sipType_QScroller, -1, 16}, {sipName_QSystemTrayIcon, &sipType_QSystemTrayIcon, -1, 17}, {sipName_QWidgetAction, &sipType_QWidgetAction, -1, -1}, {sipName_QAbstractButton, &sipType_QAbstractButton, 45, 19}, {sipName_QFrame, &sipType_QFrame, 50, 20}, {sipName_QAbstractSlider, &sipType_QAbstractSlider, 72, 21}, {sipName_QAbstractSpinBox, &sipType_QAbstractSpinBox, 75, 22}, {sipName_QCalendarWidget, &sipType_QCalendarWidget, -1, 23}, {sipName_QDialog, &sipType_QDialog, 80, 24}, {sipName_QComboBox, &sipType_QComboBox, 88, 25}, {sipName_QDialogButtonBox, &sipType_QDialogButtonBox, -1, 26}, {sipName_QDockWidget, &sipType_QDockWidget, -1, 27}, {sipName_QFocusFrame, &sipType_QFocusFrame, -1, 28}, {sipName_QGroupBox, &sipType_QGroupBox, -1, 29}, {sipName_QKeySequenceEdit, &sipType_QKeySequenceEdit, -1, 30}, {sipName_QLineEdit, &sipType_QLineEdit, -1, 31}, {sipName_QMainWindow, &sipType_QMainWindow, -1, 32}, {sipName_QMdiSubWindow, &sipType_QMdiSubWindow, -1, 33}, {sipName_QMenu, &sipType_QMenu, -1, 34}, {sipName_QMenuBar, &sipType_QMenuBar, -1, 35}, {sipName_QProgressBar, &sipType_QProgressBar, -1, 36}, {sipName_QRubberBand, &sipType_QRubberBand, -1, 37}, {sipName_QSizeGrip, &sipType_QSizeGrip, -1, 38}, {sipName_QSplashScreen, &sipType_QSplashScreen, -1, 39}, {sipName_QSplitterHandle, &sipType_QSplitterHandle, -1, 40}, {sipName_QStatusBar, &sipType_QStatusBar, -1, 41}, {sipName_QTabBar, &sipType_QTabBar, -1, 42}, {sipName_QTabWidget, &sipType_QTabWidget, -1, 43}, {sipName_QToolBar, &sipType_QToolBar, -1, 44}, {sipName_QWizardPage, &sipType_QWizardPage, -1, -1}, {sipName_QCheckBox, &sipType_QCheckBox, -1, 46}, {sipName_QPushButton, &sipType_QPushButton, 49, 47}, {sipName_QRadioButton, &sipType_QRadioButton, -1, 48}, {sipName_QToolButton, &sipType_QToolButton, -1, -1}, {sipName_QCommandLinkButton, &sipType_QCommandLinkButton, -1, -1}, {sipName_QAbstractScrollArea, &sipType_QAbstractScrollArea, 56, 51}, {sipName_QLCDNumber, &sipType_QLCDNumber, -1, 52}, {sipName_QLabel, &sipType_QLabel, -1, 53}, {sipName_QSplitter, &sipType_QSplitter, -1, 54}, {sipName_QStackedWidget, &sipType_QStackedWidget, -1, 55}, {sipName_QToolBox, &sipType_QToolBox, -1, -1}, {sipName_QAbstractItemView, &sipType_QAbstractItemView, 62, 57}, {sipName_QGraphicsView, &sipType_QGraphicsView, -1, 58}, {sipName_QMdiArea, &sipType_QMdiArea, -1, 59}, {sipName_QPlainTextEdit, &sipType_QPlainTextEdit, -1, 60}, {sipName_QScrollArea, &sipType_QScrollArea, -1, 61}, {sipName_QTextEdit, &sipType_QTextEdit, 71, -1}, {sipName_QColumnView, &sipType_QColumnView, -1, 63}, {sipName_QHeaderView, &sipType_QHeaderView, -1, 64}, {sipName_QListView, &sipType_QListView, 67, 65}, {sipName_QTableView, &sipType_QTableView, 69, 66}, {sipName_QTreeView, &sipType_QTreeView, 70, -1}, {sipName_QListWidget, &sipType_QListWidget, -1, 68}, {sipName_QUndoView, &sipType_QUndoView, -1, -1}, {sipName_QTableWidget, &sipType_QTableWidget, -1, -1}, {sipName_QTreeWidget, &sipType_QTreeWidget, -1, -1}, {sipName_QTextBrowser, &sipType_QTextBrowser, -1, -1}, {sipName_QDial, &sipType_QDial, -1, 73}, {sipName_QScrollBar, &sipType_QScrollBar, -1, 74}, {sipName_QSlider, &sipType_QSlider, -1, -1}, {sipName_QDateTimeEdit, &sipType_QDateTimeEdit, 78, 76}, {sipName_QDoubleSpinBox, &sipType_QDoubleSpinBox, -1, 77}, {sipName_QSpinBox, &sipType_QSpinBox, -1, -1}, {sipName_QDateEdit, &sipType_QDateEdit, -1, 79}, {sipName_QTimeEdit, &sipType_QTimeEdit, -1, -1}, {sipName_QColorDialog, &sipType_QColorDialog, -1, 81}, {sipName_QErrorMessage, &sipType_QErrorMessage, -1, 82}, {sipName_QFileDialog, &sipType_QFileDialog, -1, 83}, {sipName_QFontDialog, &sipType_QFontDialog, -1, 84}, {sipName_QInputDialog, &sipType_QInputDialog, -1, 85}, {sipName_QMessageBox, &sipType_QMessageBox, -1, 86}, {sipName_QProgressDialog, &sipType_QProgressDialog, -1, 87}, {sipName_QWizard, &sipType_QWizard, -1, -1}, {sipName_QFontComboBox, &sipType_QFontComboBox, -1, -1}, {sipName_QItemDelegate, &sipType_QItemDelegate, -1, 90}, {sipName_QStyledItemDelegate, &sipType_QStyledItemDelegate, -1, -1}, {sipName_QBoxLayout, &sipType_QBoxLayout, 95, 92}, {sipName_QFormLayout, &sipType_QFormLayout, -1, 93}, {sipName_QGridLayout, &sipType_QGridLayout, -1, 94}, {sipName_QStackedLayout, &sipType_QStackedLayout, -1, -1}, {sipName_QHBoxLayout, &sipType_QHBoxLayout, -1, 96}, {sipName_QVBoxLayout, &sipType_QVBoxLayout, -1, -1}, {sipName_QCommonStyle, &sipType_QCommonStyle, 98, -1}, {sipName_QProxyStyle, &sipType_QProxyStyle, -1, -1}, {sipName_QPanGesture, &sipType_QPanGesture, -1, 100}, {sipName_QPinchGesture, &sipType_QPinchGesture, -1, 101}, {sipName_QSwipeGesture, &sipType_QSwipeGesture, -1, 102}, {sipName_QTapAndHoldGesture, &sipType_QTapAndHoldGesture, -1, 103}, {sipName_QTapGesture, &sipType_QTapGesture, -1, -1}, {sipName_QGraphicsBlurEffect, &sipType_QGraphicsBlurEffect, -1, 105}, {sipName_QGraphicsColorizeEffect, &sipType_QGraphicsColorizeEffect, -1, 106}, {sipName_QGraphicsDropShadowEffect, &sipType_QGraphicsDropShadowEffect, -1, 107}, {sipName_QGraphicsOpacityEffect, &sipType_QGraphicsOpacityEffect, -1, -1}, {sipName_QGraphicsWidget, &sipType_QGraphicsWidget, 110, 109}, {sipName_QGraphicsTextItem, &sipType_QGraphicsTextItem, -1, -1}, {sipName_QGraphicsProxyWidget, &sipType_QGraphicsProxyWidget, -1, -1}, {sipName_QGraphicsRotation, &sipType_QGraphicsRotation, -1, 112}, {sipName_QGraphicsScale, &sipType_QGraphicsScale, -1, -1}, }; int i = 0; sipType = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipType = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End public: QApplication(SIP_PYLIST argv /TypeHint="List[str]"/) /PostHook=__pyQtQAppHook__/ [(int &argc, char **argv, int = QCoreApplication::ApplicationFlags)]; %MethodCode // The Python interface is a list of argument strings that is modified. int argc; char **argv; // Convert the list. if ((argv = pyqt6_qtwidgets_from_argv_list(a0, argc)) == NULL) sipIsErr = 1; else { // Create it now the arguments are right. static int nargc; nargc = argc; Py_BEGIN_ALLOW_THREADS sipCpp = new sipQApplication(nargc, argv, QCoreApplication::ApplicationFlags); Py_END_ALLOW_THREADS // Now modify the original list. pyqt6_qtwidgets_update_argv_list(a0, argc, argv); } %End virtual ~QApplication() /ReleaseGIL/; %MethodCode pyqt6_qtwidgets_cleanup_qobjects(); %End static QStyle *style(); static void setStyle(QStyle * /Transfer/); static QStyle *setStyle(const QString &); static QPalette palette(); static QPalette palette(const QWidget *); static QPalette palette(const char *className); static void setPalette(const QPalette &, const char *className = 0); static QFont font(); static QFont font(const QWidget *); static QFont font(const char *className); static void setFont(const QFont &, const char *className = 0); static QWidgetList allWidgets(); static QWidgetList topLevelWidgets(); static QWidget *activePopupWidget(); static QWidget *activeModalWidget(); static QWidget *focusWidget(); static QWidget *activeWindow(); static void setActiveWindow(QWidget *act); static QWidget *widgetAt(const QPoint &p); static QWidget *widgetAt(int x, int y); static QWidget *topLevelAt(const QPoint &p); static QWidget *topLevelAt(int x, int y); static void beep(); static void alert(QWidget *widget, int msecs = 0) /ReleaseGIL/; static void setCursorFlashTime(int); static int cursorFlashTime(); static void setDoubleClickInterval(int); static int doubleClickInterval(); static void setKeyboardInputInterval(int); static int keyboardInputInterval(); static void setWheelScrollLines(int); static int wheelScrollLines(); static void setStartDragTime(int ms); static int startDragTime(); static void setStartDragDistance(int l); static int startDragDistance(); static bool isEffectEnabled(Qt::UIEffect); static void setEffectEnabled(Qt::UIEffect, bool enabled = true); static int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; virtual bool notify(QObject *, QEvent *) /ReleaseGIL/; bool autoSipEnabled() const; QString styleSheet() const; signals: void focusChanged(QWidget *old, QWidget *now); public slots: static void aboutQt(); static void closeAllWindows(); void setAutoSipEnabled(const bool enabled); void setStyleSheet(const QString &sheet); protected: virtual bool event(QEvent *); }; %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt6_qtwidgets_cleanup_qobjects_t)(); extern pyqt6_qtwidgets_cleanup_qobjects_t pyqt6_qtwidgets_cleanup_qobjects; typedef char **(*pyqt6_qtwidgets_from_argv_list_t)(PyObject *, int &); extern pyqt6_qtwidgets_from_argv_list_t pyqt6_qtwidgets_from_argv_list; typedef sipErrorState (*pyqt6_qtwidgets_get_connection_parts_t)(PyObject *, QObject *, const char *, bool, QObject **, QByteArray &); extern pyqt6_qtwidgets_get_connection_parts_t pyqt6_qtwidgets_get_connection_parts; typedef sipErrorState (*pyqt6_qtwidgets_get_signal_signature_t)(PyObject *, QObject *, QByteArray &); extern pyqt6_qtwidgets_get_signal_signature_t pyqt6_qtwidgets_get_signal_signature; typedef void (*pyqt6_qtwidgets_update_argv_list_t)(PyObject *, int, char **); extern pyqt6_qtwidgets_update_argv_list_t pyqt6_qtwidgets_update_argv_list; // This is needed for Qt v5.0.0. #if defined(B0) #undef B0 #endif %End %ModuleCode #include "qpywidgets_api.h" // Imports from QtCore. pyqt6_qtwidgets_cleanup_qobjects_t pyqt6_qtwidgets_cleanup_qobjects; pyqt6_qtwidgets_from_argv_list_t pyqt6_qtwidgets_from_argv_list; pyqt6_qtwidgets_get_connection_parts_t pyqt6_qtwidgets_get_connection_parts; pyqt6_qtwidgets_get_signal_signature_t pyqt6_qtwidgets_get_signal_signature; pyqt6_qtwidgets_update_argv_list_t pyqt6_qtwidgets_update_argv_list; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtwidgets_cleanup_qobjects = (pyqt6_qtwidgets_cleanup_qobjects_t)sipImportSymbol("pyqt6_cleanup_qobjects"); Q_ASSERT(pyqt6_qtwidgets_cleanup_qobjects); pyqt6_qtwidgets_from_argv_list = (pyqt6_qtwidgets_from_argv_list_t)sipImportSymbol("pyqt6_from_argv_list"); Q_ASSERT(pyqt6_qtwidgets_from_argv_list); pyqt6_qtwidgets_get_connection_parts = (pyqt6_qtwidgets_get_connection_parts_t)sipImportSymbol("pyqt6_get_connection_parts"); Q_ASSERT(pyqt6_qtwidgets_get_connection_parts); pyqt6_qtwidgets_get_signal_signature = (pyqt6_qtwidgets_get_signal_signature_t)sipImportSymbol("pyqt6_get_signal_signature"); Q_ASSERT(pyqt6_qtwidgets_get_signal_signature); pyqt6_qtwidgets_update_argv_list = (pyqt6_qtwidgets_update_argv_list_t)sipImportSymbol("pyqt6_update_argv_list"); Q_ASSERT(pyqt6_qtwidgets_update_argv_list); qpywidgets_post_init(); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4829013 PyQt6-6.6.1/sip/QtWidgets/qboxlayout.sip0000644000076500000240000001127314532160401017020 0ustar00philstaff// qboxlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QBoxLayout : QLayout { %TypeHeaderCode #include %End public: enum Direction { LeftToRight, RightToLeft, TopToBottom, BottomToTop, Down, Up, }; QBoxLayout(QBoxLayout::Direction direction, QWidget *parent /TransferThis/ = 0); virtual ~QBoxLayout(); QBoxLayout::Direction direction() const; void setDirection(QBoxLayout::Direction); void addSpacing(int size); void addStretch(int stretch = 0); void addWidget(QWidget * /GetWrapper/, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, *a2); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout *layout /Transfer/, int stretch = 0); void addStrut(int); virtual void addItem(QLayoutItem * /Transfer/); void insertSpacing(int index, int size); void insertStretch(int index, int stretch = 0); void insertWidget(int index, QWidget *widget /GetWrapper/, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->insertWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End void insertLayout(int index, QLayout *layout /Transfer/, int stretch = 0); bool setStretchFactor(QWidget *w, int stretch); bool setStretchFactor(QLayout *l, int stretch); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); virtual int spacing() const; virtual void setSpacing(int spacing); void addSpacerItem(QSpacerItem *spacerItem /Transfer/); void insertSpacerItem(int index, QSpacerItem *spacerItem /Transfer/); void setStretch(int index, int stretch); int stretch(int index) const; void insertItem(int index, QLayoutItem * /Transfer/); }; class QHBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QHBoxLayout(); explicit QHBoxLayout(QWidget *parent /TransferThis/); virtual ~QHBoxLayout(); }; class QVBoxLayout : QBoxLayout { %TypeHeaderCode #include %End public: QVBoxLayout(); explicit QVBoxLayout(QWidget *parent /TransferThis/); virtual ~QVBoxLayout(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4895442 PyQt6-6.6.1/sip/QtWidgets/qbuttongroup.sip0000644000076500000240000000345314532160401017363 0ustar00philstaff// qbuttongroup.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QButtonGroup : QObject { %TypeHeaderCode #include %End public: explicit QButtonGroup(QObject *parent /TransferThis/ = 0); virtual ~QButtonGroup(); void setExclusive(bool); bool exclusive() const; void addButton(QAbstractButton *, int id = -1); void removeButton(QAbstractButton *); QList buttons() const; QAbstractButton *button(int id) const; QAbstractButton *checkedButton() const; void setId(QAbstractButton *button, int id); int id(QAbstractButton *button) const; int checkedId() const; signals: void buttonClicked(QAbstractButton *); void buttonPressed(QAbstractButton *); void buttonReleased(QAbstractButton *); void buttonToggled(QAbstractButton *, bool); void idClicked(int); void idPressed(int); void idReleased(int); void idToggled(int, bool); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5394416 PyQt6-6.6.1/sip/QtWidgets/qcalendarwidget.sip0000644000076500000240000001006114532160402017742 0ustar00philstaff// qcalendarwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCalendarWidget : QWidget { %TypeHeaderCode #include %End public: enum HorizontalHeaderFormat { NoHorizontalHeader, SingleLetterDayNames, ShortDayNames, LongDayNames, }; enum VerticalHeaderFormat { NoVerticalHeader, ISOWeekNumbers, }; enum SelectionMode { NoSelection, SingleSelection, }; explicit QCalendarWidget(QWidget *parent /TransferThis/ = 0); virtual ~QCalendarWidget(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QDate selectedDate() const; int yearShown() const; int monthShown() const; QDate minimumDate() const; void setMinimumDate(QDate date); QDate maximumDate() const; void setMaximumDate(QDate date); Qt::DayOfWeek firstDayOfWeek() const; void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek); bool isGridVisible() const; void setGridVisible(bool show); QCalendarWidget::SelectionMode selectionMode() const; void setSelectionMode(QCalendarWidget::SelectionMode mode); QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat() const; void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format); QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat() const; void setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format); QTextCharFormat headerTextFormat() const; void setHeaderTextFormat(const QTextCharFormat &format); QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const; void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format); QMap dateTextFormat() const; QTextCharFormat dateTextFormat(QDate date) const; void setDateTextFormat(QDate date, const QTextCharFormat &format); protected: void updateCell(QDate date); void updateCells(); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *watched, QEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void paintCell(QPainter *painter, const QRect &rect, QDate date) const; public slots: void setCurrentPage(int year, int month); void setDateRange(QDate min, QDate max); void setSelectedDate(QDate date); void showNextMonth(); void showNextYear(); void showPreviousMonth(); void showPreviousYear(); void showSelectedDate(); void showToday(); signals: void activated(QDate date); void clicked(QDate date); void currentPageChanged(int year, int month); void selectionChanged(); public: bool isNavigationBarVisible() const; bool isDateEditEnabled() const; void setDateEditEnabled(bool enable); int dateEditAcceptDelay() const; void setDateEditAcceptDelay(int delay); public slots: void setNavigationBarVisible(bool visible); public: QCalendar calendar() const; void setCalendar(QCalendar calendar); %If (Qt_6_6_0 -) void clearMinimumDate(); %End %If (Qt_6_6_0 -) void clearMaximumDate(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4937158 PyQt6-6.6.1/sip/QtWidgets/qcheckbox.sip0000644000076500000240000000340714532160401016560 0ustar00philstaff// qcheckbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCheckBox : QAbstractButton { %TypeHeaderCode #include %End public: explicit QCheckBox(QWidget *parent /TransferThis/ = 0); QCheckBox(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QCheckBox(); virtual QSize sizeHint() const; void setTristate(bool on = true); bool isTristate() const; Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QSize minimumSizeHint() const; signals: void stateChanged(int); protected: virtual bool hitButton(const QPoint &pos) const; virtual void checkStateSet(); virtual void nextCheckState(); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void initStyleOption(QStyleOptionButton *option) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5146637 PyQt6-6.6.1/sip/QtWidgets/qcolordialog.sip0000644000076500000240000000566314532160402017277 0ustar00philstaff// qcolordialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColorDialog : QDialog { %TypeHeaderCode #include %End public: enum ColorDialogOption /BaseType=Flag/ { ShowAlphaChannel, NoButtons, DontUseNativeDialog, }; typedef QFlags ColorDialogOptions; explicit QColorDialog(QWidget *parent /TransferThis/ = 0); QColorDialog(const QColor &initial, QWidget *parent /TransferThis/ = 0); virtual ~QColorDialog(); static QColor getColor(const QColor &initial = Qt::white, QWidget *parent = 0, const QString &title = QString(), QColorDialog::ColorDialogOptions options = QColorDialog::ColorDialogOptions()) /ReleaseGIL/; static int customCount(); static QColor customColor(int index); static void setCustomColor(int index, QColor color); static QColor standardColor(int index); static void setStandardColor(int index, QColor color); public slots: virtual void open(); signals: void colorSelected(const QColor &color); void currentColorChanged(const QColor &color); protected: virtual void changeEvent(QEvent *e); virtual void done(int result); public: void setCurrentColor(const QColor &color); QColor currentColor() const; QColor selectedColor() const; void setOption(QColorDialog::ColorDialogOption option, bool on = true); bool testOption(QColorDialog::ColorDialogOption option) const; void setOptions(QColorDialog::ColorDialogOptions options); QColorDialog::ColorDialogOptions options() const; void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4926386 PyQt6-6.6.1/sip/QtWidgets/qcolumnview.sip0000644000076500000240000000547014532160401017164 0ustar00philstaff// qcolumnview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QColumnView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QColumnView(QWidget *parent /TransferThis/ = 0); virtual ~QColumnView(); QList columnWidths() const; QWidget *previewWidget() const; bool resizeGripsVisible() const; void setColumnWidths(const QList &list); void setPreviewWidget(QWidget *widget /Transfer/); void setResizeGripsVisible(bool visible); virtual QModelIndex indexAt(const QPoint &point) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QSize sizeHint() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void selectAll(); signals: void updatePreviewWidget(const QModelIndex &index); protected: virtual QAbstractItemView *createColumn(const QModelIndex &rootIndex); void initializeColumn(QAbstractItemView *column) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void resizeEvent(QResizeEvent *event); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); protected slots: virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5493577 PyQt6-6.6.1/sip/QtWidgets/qcombobox.sip0000644000076500000240000001345714532160402016611 0ustar00philstaff// qcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QComboBox : QWidget { %TypeHeaderCode #include %End public: explicit QComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QComboBox(); int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); int count() const /__len__/; void setMaxCount(int max); int maxCount() const; bool duplicatesEnabled() const; void setDuplicatesEnabled(bool enable); void setFrame(bool); bool hasFrame() const; int findText(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; enum InsertPolicy { NoInsert, InsertAtTop, InsertAtCurrent, InsertAtBottom, InsertAfterCurrent, InsertBeforeCurrent, InsertAlphabetically, }; QComboBox::InsertPolicy insertPolicy() const; void setInsertPolicy(QComboBox::InsertPolicy policy); enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLengthWithIcon, }; QComboBox::SizeAdjustPolicy sizeAdjustPolicy() const; void setSizeAdjustPolicy(QComboBox::SizeAdjustPolicy policy); int minimumContentsLength() const; void setMinimumContentsLength(int characters); QSize iconSize() const; void setIconSize(const QSize &size); bool isEditable() const; void setEditable(bool editable); void setLineEdit(QLineEdit *edit /Transfer/); QLineEdit *lineEdit() const; void setValidator(const QValidator *v /KeepReference/); const QValidator *validator() const; QAbstractItemDelegate *itemDelegate() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemModel *model() const; virtual void setModel(QAbstractItemModel *model /KeepReference/); QModelIndex rootModelIndex() const; void setRootModelIndex(const QModelIndex &index); int modelColumn() const; void setModelColumn(int visibleColumn); int currentIndex() const; void setCurrentIndex(int index); QString currentText() const; QString itemText(int index) const; QIcon itemIcon(int index) const; QVariant itemData(int index, int role = Qt::UserRole) const; void addItems(const QStringList &texts); void addItem(const QString &text, const QVariant &userData = QVariant()); void addItem(const QIcon &icon, const QString &text, const QVariant &userData = QVariant()); void insertItem(int index, const QString &text, const QVariant &userData = QVariant()); void insertItem(int index, const QIcon &icon, const QString &text, const QVariant &userData = QVariant()); void insertItems(int index, const QStringList &texts); void removeItem(int index); void setItemText(int index, const QString &text); void setItemIcon(int index, const QIcon &icon); void setItemData(int index, const QVariant &value, int role = Qt::UserRole); QAbstractItemView *view() const; void setView(QAbstractItemView *itemView /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual void showPopup(); virtual void hidePopup(); virtual bool event(QEvent *event); void setCompleter(QCompleter *c /KeepReference/); QCompleter *completer() const; void insertSeparator(int index); public slots: void clear(); void clearEditText(); void setEditText(const QString &text); void setCurrentText(const QString &text); signals: void editTextChanged(const QString &); void activated(int index); void currentIndexChanged(int index); void currentTextChanged(const QString &); void highlighted(int index); protected: virtual void initStyleOption(QStyleOptionComboBox *option) const; virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void changeEvent(QEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void showEvent(QShowEvent *e); virtual void hideEvent(QHideEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; QVariant currentData(int role = Qt::UserRole) const; QVariant inputMethodQuery(Qt::InputMethodQuery query, const QVariant &argument) const; signals: void textActivated(const QString &); void textHighlighted(const QString &); public: void setPlaceholderText(const QString &placeholderText); QString placeholderText() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5345278 PyQt6-6.6.1/sip/QtWidgets/qcommandlinkbutton.sip0000644000076500000240000000332514532160402020522 0ustar00philstaff// qcommandlinkbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommandLinkButton : QPushButton { %TypeHeaderCode #include %End public: explicit QCommandLinkButton(QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, QWidget *parent /TransferThis/ = 0); QCommandLinkButton(const QString &text, const QString &description, QWidget *parent /TransferThis/ = 0); virtual ~QCommandLinkButton(); QString description() const; void setDescription(const QString &description); virtual QSize sizeHint() const; virtual int heightForWidth(int) const; virtual QSize minimumSizeHint() const; %If (Qt_6_1_0 -) virtual void initStyleOption(QStyleOptionButton *option) const; %End protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5336778 PyQt6-6.6.1/sip/QtWidgets/qcommonstyle.sip0000644000076500000240000000610514532160402017342 0ustar00philstaff// qcommonstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCommonStyle : QStyle { %TypeHeaderCode #include %End public: QCommonStyle(); virtual ~QCommonStyle(); virtual void polish(QWidget *widget); virtual void unpolish(QWidget *widget); virtual void polish(QApplication *app); virtual void unpolish(QApplication *application); virtual void polish(QPalette & /In,Out/); virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const; virtual QRect subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const; virtual int pixelMetric(QStyle::PixelMetric m, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint sh, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap sp, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.486763 PyQt6-6.6.1/sip/QtWidgets/qcompleter.sip0000644000076500000240000000636314532160401016770 0ustar00philstaff// qcompleter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QCompleter : QObject { %TypeHeaderCode #include %End public: enum CompletionMode { PopupCompletion, UnfilteredPopupCompletion, InlineCompletion, }; enum ModelSorting { UnsortedModel, CaseSensitivelySortedModel, CaseInsensitivelySortedModel, }; QCompleter(QAbstractItemModel *model, QObject *parent /TransferThis/ = 0); QCompleter(const QStringList &list, QObject *parent /TransferThis/ = 0); QCompleter(QObject *parent /TransferThis/ = 0); virtual ~QCompleter(); void setWidget(QWidget *widget /Transfer/); QWidget *widget() const; void setModel(QAbstractItemModel *c /KeepReference/); QAbstractItemModel *model() const; void setCompletionMode(QCompleter::CompletionMode mode); QCompleter::CompletionMode completionMode() const; QAbstractItemView *popup() const; void setPopup(QAbstractItemView *popup /Transfer/); void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); Qt::CaseSensitivity caseSensitivity() const; void setModelSorting(QCompleter::ModelSorting sorting); QCompleter::ModelSorting modelSorting() const; void setCompletionColumn(int column); int completionColumn() const; void setCompletionRole(int role); int completionRole() const; int completionCount() const; bool setCurrentRow(int row); int currentRow() const; QModelIndex currentIndex() const; QString currentCompletion() const; QAbstractItemModel *completionModel() const; QString completionPrefix() const; virtual QString pathFromIndex(const QModelIndex &index) const; virtual QStringList splitPath(const QString &path) const; bool wrapAround() const; public slots: void complete(const QRect &rect = QRect()); void setCompletionPrefix(const QString &prefix); void setWrapAround(bool wrap); protected: virtual bool eventFilter(QObject *o, QEvent *e); virtual bool event(QEvent *); signals: void activated(const QString &text); void activated(const QModelIndex &index); void highlighted(const QString &text); void highlighted(const QModelIndex &index); public: int maxVisibleItems() const; void setMaxVisibleItems(int maxItems); void setFilterMode(Qt::MatchFlags filterMode); Qt::MatchFlags filterMode() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5238338 PyQt6-6.6.1/sip/QtWidgets/qdatawidgetmapper.sip0000644000076500000240000000460514532160402020316 0ustar00philstaff// qdatawidgetmapper.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDataWidgetMapper : QObject { %TypeHeaderCode #include %End public: enum SubmitPolicy { AutoSubmit, ManualSubmit, }; explicit QDataWidgetMapper(QObject *parent /TransferThis/ = 0); virtual ~QDataWidgetMapper(); void setModel(QAbstractItemModel *model /KeepReference/); QAbstractItemModel *model() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setRootIndex(const QModelIndex &index); QModelIndex rootIndex() const; void setOrientation(Qt::Orientation aOrientation); Qt::Orientation orientation() const; void setSubmitPolicy(QDataWidgetMapper::SubmitPolicy policy); QDataWidgetMapper::SubmitPolicy submitPolicy() const; void addMapping(QWidget *widget, int section); void addMapping(QWidget *widget, int section, const QByteArray &propertyName); void removeMapping(QWidget *widget); QByteArray mappedPropertyName(QWidget *widget) const; int mappedSection(QWidget *widget) const; QWidget *mappedWidgetAt(int section) const; void clearMapping(); int currentIndex() const; public slots: void revert(); virtual void setCurrentIndex(int index); void setCurrentModelIndex(const QModelIndex &index); bool submit(); void toFirst(); void toLast(); void toNext(); void toPrevious(); signals: void currentIndexChanged(int index); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.535913 PyQt6-6.6.1/sip/QtWidgets/qdatetimeedit.sip0000644000076500000240000001165714532160402017443 0ustar00philstaff// qdatetimeedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDateTimeEdit : QAbstractSpinBox { %TypeHeaderCode #include %End public: enum Section /BaseType=Flag/ { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, HourSection, DaySection, MonthSection, YearSection, TimeSections_Mask, DateSections_Mask, }; typedef QFlags Sections; explicit QDateTimeEdit(QWidget *parent /TransferThis/ = 0); QDateTimeEdit(const QDateTime &datetime, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(QDate d, QWidget *parent /TransferThis/ = 0); QDateTimeEdit(QTime t, QWidget *parent /TransferThis/ = 0); virtual ~QDateTimeEdit(); QDateTime dateTime() const; QDate date() const; QTime time() const; QDate minimumDate() const; void setMinimumDate(QDate min); void clearMinimumDate(); QDate maximumDate() const; void setMaximumDate(QDate max); void clearMaximumDate(); void setDateRange(QDate min, QDate max); QTime minimumTime() const; void setMinimumTime(QTime min); void clearMinimumTime(); QTime maximumTime() const; void setMaximumTime(QTime max); void clearMaximumTime(); void setTimeRange(QTime min, QTime max); QDateTimeEdit::Sections displayedSections() const; QDateTimeEdit::Section currentSection() const; void setCurrentSection(QDateTimeEdit::Section section); QString sectionText(QDateTimeEdit::Section s) const; QString displayFormat() const; void setDisplayFormat(const QString &format); bool calendarPopup() const; void setCalendarPopup(bool enable); void setSelectedSection(QDateTimeEdit::Section section); virtual QSize sizeHint() const; virtual void clear(); virtual void stepBy(int steps); virtual bool event(QEvent *e); QDateTimeEdit::Section sectionAt(int index) const; int currentSectionIndex() const; void setCurrentSectionIndex(int index); int sectionCount() const; signals: void dateTimeChanged(const QDateTime &date); void timeChanged(QTime time); void dateChanged(QDate date); public slots: void setDateTime(const QDateTime &dateTime); void setDate(QDate date); void setTime(QTime time); protected: virtual void initStyleOption(QStyleOptionSpinBox *option) const; virtual void keyPressEvent(QKeyEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual bool focusNextPrevChild(bool next); virtual void mousePressEvent(QMouseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual void fixup(QString &input /In,Out/) const; virtual QDateTime dateTimeFromText(const QString &text) const; virtual QString textFromDateTime(const QDateTime &dt) const; virtual QAbstractSpinBox::StepEnabled stepEnabled() const; public: QDateTime minimumDateTime() const; void clearMinimumDateTime(); void setMinimumDateTime(const QDateTime &dt); QDateTime maximumDateTime() const; void clearMaximumDateTime(); void setMaximumDateTime(const QDateTime &dt); void setDateTimeRange(const QDateTime &min, const QDateTime &max); QCalendarWidget *calendarWidget() const; void setCalendarWidget(QCalendarWidget *calendarWidget /Transfer/); Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); QCalendar calendar() const; void setCalendar(QCalendar calendar); }; class QTimeEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QTimeEdit(QWidget *parent /TransferThis/ = 0); QTimeEdit(QTime time, QWidget *parent /TransferThis/ = 0); virtual ~QTimeEdit(); }; class QDateEdit : QDateTimeEdit { %TypeHeaderCode #include %End public: explicit QDateEdit(QWidget *parent /TransferThis/ = 0); QDateEdit(QDate date, QWidget *parent /TransferThis/ = 0); virtual ~QDateEdit(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4792404 PyQt6-6.6.1/sip/QtWidgets/qdial.sip0000644000076500000240000000351214532160401015700 0ustar00philstaff// qdial.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDial : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QDial(QWidget *parent /TransferThis/ = 0); virtual ~QDial(); bool wrapping() const; int notchSize() const; void setNotchTarget(double target); qreal notchTarget() const; bool notchesVisible() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; public slots: void setNotchesVisible(bool visible); void setWrapping(bool on); protected: virtual void initStyleOption(QStyleOptionSlider *option) const; virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *re); virtual void paintEvent(QPaintEvent *pe); virtual void mousePressEvent(QMouseEvent *me); virtual void mouseReleaseEvent(QMouseEvent *me); virtual void mouseMoveEvent(QMouseEvent *me); virtual void sliderChange(QAbstractSlider::SliderChange change); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4798143 PyQt6-6.6.1/sip/QtWidgets/qdialog.sip0000644000076500000240000000520414532160401016226 0ustar00philstaff// qdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialog : QWidget { %TypeHeaderCode #include %End public: QDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QDialog(); enum DialogCode /BaseType=IntEnum/ { Rejected, Accepted, }; int result() const; virtual void setVisible(bool visible); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; void setModal(bool modal); void setResult(int r); virtual int exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; %MethodCode // Transfer ownership back to Python (a modal dialog will probably have the // main window as it's parent). This means the Qt dialog will be deleted when // the Python wrapper is garbage collected. Although this is a little // inconsistent, it saves having to code it explicitly to avoid the memory // leak. sipTransferBack(sipSelf); Py_BEGIN_ALLOW_THREADS sipRes = sipSelfWasArg ? sipCpp->QDialog::exec() : sipCpp->exec(); Py_END_ALLOW_THREADS %End public slots: virtual void done(int); virtual void accept(); virtual void reject(); virtual void open(); signals: void accepted(); void finished(int result); void rejected(); protected: virtual void keyPressEvent(QKeyEvent *); virtual void closeEvent(QCloseEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual bool eventFilter(QObject *, QEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5253005 PyQt6-6.6.1/sip/QtWidgets/qdialogbuttonbox.sip0000644000076500000240000000650414532160402020200 0ustar00philstaff// qdialogbuttonbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDialogButtonBox : QWidget { %TypeHeaderCode #include %End public: enum ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, AndroidLayout, }; enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum StandardButton /BaseType=Flag/ { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, }; typedef QFlags StandardButtons; QDialogButtonBox(QWidget *parent /TransferThis/ = 0); QDialogButtonBox(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent /TransferThis/ = 0); QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QDialogButtonBox(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addButton(QAbstractButton *button /Transfer/, QDialogButtonBox::ButtonRole role); QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role) /Transfer/; QPushButton *addButton(QDialogButtonBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void clear(); QList buttons() const; QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const; void setStandardButtons(QDialogButtonBox::StandardButtons buttons); QDialogButtonBox::StandardButtons standardButtons() const; QDialogButtonBox::StandardButton standardButton(QAbstractButton *button) const; QPushButton *button(QDialogButtonBox::StandardButton which) const; void setCenterButtons(bool center); bool centerButtons() const; signals: void accepted(); void clicked(QAbstractButton *button); void helpRequested(); void rejected(); protected: virtual void changeEvent(QEvent *event); virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5407867 PyQt6-6.6.1/sip/QtWidgets/qdockwidget.sip0000644000076500000240000000515214532160402017116 0ustar00philstaff// qdockwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDockWidget : QWidget { %TypeHeaderCode #include %End public: QDockWidget(const QString &title, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QDockWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QDockWidget(); QWidget *widget() const; void setWidget(QWidget *widget /Transfer/); enum DockWidgetFeature /BaseType=Flag/ { DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, NoDockWidgetFeatures, }; typedef QFlags DockWidgetFeatures; void setFeatures(QDockWidget::DockWidgetFeatures features); QDockWidget::DockWidgetFeatures features() const; void setFloating(bool floating); bool isFloating() const; void setAllowedAreas(Qt::DockWidgetAreas areas); Qt::DockWidgetAreas allowedAreas() const; bool isAreaAllowed(Qt::DockWidgetArea area) const; QAction *toggleViewAction() const /Transfer/; void setTitleBarWidget(QWidget *widget /Transfer/); QWidget *titleBarWidget() const; signals: void featuresChanged(QDockWidget::DockWidgetFeatures features); void topLevelChanged(bool topLevel); void allowedAreasChanged(Qt::DockWidgetAreas allowedAreas); void dockLocationChanged(Qt::DockWidgetArea area); void visibilityChanged(bool visible); protected: virtual void initStyleOption(QStyleOptionDockWidget *option) const; virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5387135 PyQt6-6.6.1/sip/QtWidgets/qdrawutil.sip0000644000076500000240000000525214532160402016626 0ustar00philstaff// qdrawutil.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %ModuleCode #include %End void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, const QPalette &pal, bool sunken = true, int lineWidth = 1, int midLineWidth = 0); void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadeRect(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawShadePanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, int lineWidth = 1, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinButton(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawWinPanel(QPainter *p, const QRect &r, const QPalette &pal, bool sunken = false, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &, int lineWidth = 1, const QBrush *fill = 0); void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap); ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4910417 PyQt6-6.6.1/sip/QtWidgets/qerrormessage.sip0000644000076500000240000000255514532160401017473 0ustar00philstaff// qerrormessage.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QErrorMessage : QDialog { %TypeHeaderCode #include %End public: explicit QErrorMessage(QWidget *parent /TransferThis/ = 0); virtual ~QErrorMessage(); static QErrorMessage *qtHandler(); public slots: void showMessage(const QString &message); void showMessage(const QString &message, const QString &type); protected: virtual void changeEvent(QEvent *e); virtual void done(int); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5168111 PyQt6-6.6.1/sip/QtWidgets/qfiledialog.sip0000644000076500000240000002762714532160402017104 0ustar00philstaff// qfiledialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileDialog : QDialog { %TypeHeaderCode #include %End public: enum ViewMode { Detail, List, }; enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, }; enum AcceptMode { AcceptOpen, AcceptSave, }; enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, }; enum Option /BaseType=Flag/ { ShowDirsOnly, DontResolveSymlinks, DontConfirmOverwrite, DontUseNativeDialog, ReadOnly, HideNameFilterDetails, DontUseCustomDirectoryIcons, }; typedef QFlags Options; QFileDialog(QWidget *parent /TransferThis/, Qt::WindowFlags f); QFileDialog(QWidget *parent /TransferThis/ = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString()); virtual ~QFileDialog(); void setDirectory(const QString &directory); void setDirectory(const QDir &adirectory); QDir directory() const; void selectFile(const QString &filename); QStringList selectedFiles() const; void setViewMode(QFileDialog::ViewMode mode); QFileDialog::ViewMode viewMode() const; void setFileMode(QFileDialog::FileMode mode); QFileDialog::FileMode fileMode() const; void setAcceptMode(QFileDialog::AcceptMode mode); QFileDialog::AcceptMode acceptMode() const; void setDefaultSuffix(const QString &suffix); QString defaultSuffix() const; void setHistory(const QStringList &paths); QStringList history() const; void setItemDelegate(QAbstractItemDelegate *delegate /KeepReference/); QAbstractItemDelegate *itemDelegate() const; void setIconProvider(QAbstractFileIconProvider *provider /KeepReference/); QAbstractFileIconProvider *iconProvider() const; void setLabelText(QFileDialog::DialogLabel label, const QString &text); QString labelText(QFileDialog::DialogLabel label) const; signals: void currentChanged(const QString &path); void directoryEntered(const QString &directory); void filesSelected(const QStringList &files); void filterSelected(const QString &filter); void fileSelected(const QString &file); public: static QString getExistingDirectory(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly) /ReleaseGIL/; static QUrl getExistingDirectoryUrl(QWidget *parent = 0, const QString &caption = QString(), const QUrl &directory = QUrl(), QFileDialog::Options options = QFileDialog::ShowDirsOnly, const QStringList &supportedSchemes = QStringList()) /ReleaseGIL/; static SIP_PYTUPLE getOpenFileName(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options()) /TypeHint="Tuple[QString, QString]", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getOpenFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getOpenFileNames(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options()) /TypeHint="Tuple[QStringList, QString]", ReleaseGIL/; %MethodCode QStringList *names; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS names = new QStringList(QFileDialog::getOpenFileNames(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *names_obj = sipConvertFromNewType(names, sipType_QStringList, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (names_obj && filter_obj) sipRes = PyTuple_Pack(2, names_obj, filter_obj); Py_XDECREF(names_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getSaveFileName(QWidget *parent = 0, const QString &caption = QString(), const QString &directory = QString(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options()) /TypeHint="Tuple[QString, QString]", ReleaseGIL/; %MethodCode QString *name; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS name = new QString(QFileDialog::getSaveFileName(a0, *a1, *a2, *a3, filter, *a5)); Py_END_ALLOW_THREADS PyObject *name_obj = sipConvertFromNewType(name, sipType_QString, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (name_obj && filter_obj) sipRes = PyTuple_Pack(2, name_obj, filter_obj); Py_XDECREF(name_obj); Py_XDECREF(filter_obj); %End protected: virtual void done(int result); virtual void accept(); virtual void changeEvent(QEvent *e); public: void setSidebarUrls(const QList &urls); QList sidebarUrls() const; QByteArray saveState() const; bool restoreState(const QByteArray &state); void setProxyModel(QAbstractProxyModel *model /Transfer/); QAbstractProxyModel *proxyModel() const; void setNameFilter(const QString &filter); void setNameFilters(const QStringList &filters); QStringList nameFilters() const; void selectNameFilter(const QString &filter); QString selectedNameFilter() const; QDir::Filters filter() const; void setFilter(QDir::Filters filters); void setOption(QFileDialog::Option option, bool on = true); bool testOption(QFileDialog::Option option) const; void setOptions(QFileDialog::Options options); QFileDialog::Options options() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); void setDirectoryUrl(const QUrl &directory); QUrl directoryUrl() const; void selectUrl(const QUrl &url); QList selectedUrls() const; void setMimeTypeFilters(const QStringList &filters); QStringList mimeTypeFilters() const; void selectMimeTypeFilter(const QString &filter); signals: void urlSelected(const QUrl &url); void urlsSelected(const QList &urls); void currentUrlChanged(const QUrl &url); void directoryUrlEntered(const QUrl &directory); public: static SIP_PYTUPLE getOpenFileUrl(QWidget *parent = 0, const QString &caption = QString(), const QUrl &directory = QUrl(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options(), const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[QUrl, QString]", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getOpenFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getOpenFileUrls(QWidget *parent = 0, const QString &caption = QString(), const QUrl &directory = QUrl(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options(), const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[List[QUrl], QString]", ReleaseGIL/; %MethodCode QList url_list; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url_list = QFileDialog::getOpenFileUrls(a0, *a1, *a2, *a3, filter, *a5, *a6); Py_END_ALLOW_THREADS PyObject *url_list_obj = PyList_New(url_list.size()); if (url_list_obj) { for (int i = 0; i < url_list.size(); ++i) { QUrl *url = new QUrl(url_list.at(i)); PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); if (!url_obj) { delete url; Py_DECREF(url_list_obj); url_list_obj = 0; break; } PyList_SetItem(url_list_obj, i, url_obj); } } PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_list_obj && filter_obj) sipRes = PyTuple_Pack(2, url_list_obj, filter_obj); Py_XDECREF(url_list_obj); Py_XDECREF(filter_obj); %End static SIP_PYTUPLE getSaveFileUrl(QWidget *parent = 0, const QString &caption = QString(), const QUrl &directory = QUrl(), const QString &filter = QString(), const QString &initialFilter = QString(), Options options = QFileDialog::Options(), const QStringList &supportedSchemes = QStringList()) /TypeHint="Tuple[QUrl, QString]", ReleaseGIL/; %MethodCode QUrl *url; QString *filter = new QString(*a4); Py_BEGIN_ALLOW_THREADS url = new QUrl(QFileDialog::getSaveFileUrl(a0, *a1, *a2, *a3, filter, *a5, *a6)); Py_END_ALLOW_THREADS PyObject *url_obj = sipConvertFromNewType(url, sipType_QUrl, NULL); PyObject *filter_obj = sipConvertFromNewType(filter, sipType_QString, NULL); if (url_obj && filter_obj) sipRes = PyTuple_Pack(2, url_obj, filter_obj); Py_XDECREF(url_obj); Py_XDECREF(filter_obj); %End void setSupportedSchemes(const QStringList &schemes); QStringList supportedSchemes() const; QString selectedMimeTypeFilter() const; static void saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString()) /ReleaseGIL/; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.488941 PyQt6-6.6.1/sip/QtWidgets/qfileiconprovider.sip0000644000076500000240000000235514532160401020336 0ustar00philstaff// qfileiconprovider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFileIconProvider : QAbstractFileIconProvider { %TypeHeaderCode #include %End public: QFileIconProvider(); virtual ~QFileIconProvider(); virtual QIcon icon(QAbstractFileIconProvider::IconType type) const; virtual QIcon icon(const QFileInfo &info) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.495794 PyQt6-6.6.1/sip/QtWidgets/qfilesystemmodel.sip0000644000076500000240000000167514532160401020204 0ustar00philstaff// qfilesystemmodel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5476182 PyQt6-6.6.1/sip/QtWidgets/qfocusframe.sip0000644000076500000240000000256014532160402017124 0ustar00philstaff// qfocusframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFocusFrame : QWidget { %TypeHeaderCode #include %End public: QFocusFrame(QWidget *parent /TransferThis/ = 0); virtual ~QFocusFrame(); void setWidget(QWidget *widget); QWidget *widget() const; protected: virtual void initStyleOption(QStyleOption *option) const; virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.48184 PyQt6-6.6.1/sip/QtWidgets/qfontcombobox.sip0000644000076500000240000000531414532160401017470 0ustar00philstaff// qfontcombobox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontComboBox : QComboBox { %TypeHeaderCode #include %End public: enum FontFilter /BaseType=Flag/ { AllFonts, ScalableFonts, NonScalableFonts, MonospacedFonts, ProportionalFonts, }; typedef QFlags FontFilters; QFontComboBox::FontFilters fontFilters() const; explicit QFontComboBox(QWidget *parent /TransferThis/ = 0); virtual ~QFontComboBox(); void setWritingSystem(QFontDatabase::WritingSystem); QFontDatabase::WritingSystem writingSystem() const; void setFontFilters(QFontComboBox::FontFilters filters); QFont currentFont() const; virtual QSize sizeHint() const; public slots: void setCurrentFont(const QFont &f); signals: void currentFontChanged(const QFont &f); protected: virtual bool event(QEvent *e); public: %If (Qt_6_3_0 -) void setSampleTextForSystem(QFontDatabase::WritingSystem writingSystem, const QString &sampleText); %End %If (Qt_6_3_0 -) QString sampleTextForSystem(QFontDatabase::WritingSystem writingSystem) const; %End %If (Qt_6_3_0 -) void setSampleTextForFont(const QString &fontFamily, const QString &sampleText); %End %If (Qt_6_3_0 -) QString sampleTextForFont(const QString &fontFamily) const; %End %If (Qt_6_3_0 -) void setDisplayFont(const QString &fontFamily, const QFont &font); %End %If (Qt_6_3_0 -) SIP_PYOBJECT displayFont(const QString &fontFamily) const /TypeHint="Optional[QFont]"/; %MethodCode std::optional f = sipCpp->displayFont(*a0); if (f) { sipRes = sipConvertFromNewType(new QFont(f.value()), sipType_QFont, NULL); } else { sipRes = Py_None; Py_INCREF(sipRes); } %End %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4733906 PyQt6-6.6.1/sip/QtWidgets/qfontdialog.sip0000644000076500000240000000554414532160401017124 0ustar00philstaff// qfontdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFontDialog : QDialog { %TypeHeaderCode #include %End public: enum FontDialogOption /BaseType=Flag/ { NoButtons, DontUseNativeDialog, ScalableFonts, NonScalableFonts, MonospacedFonts, ProportionalFonts, }; typedef QFlags FontDialogOptions; explicit QFontDialog(QWidget *parent /TransferThis/ = 0); QFontDialog(const QFont &initial, QWidget *parent /TransferThis/ = 0); virtual ~QFontDialog(); static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = 0, const QString &caption = QString(), QFontDialog::FontDialogOptions options = QFontDialog::FontDialogOptions()) /ReleaseGIL/; static QFont getFont(bool *ok, QWidget *parent = 0) /ReleaseGIL/; protected: virtual void changeEvent(QEvent *e); virtual void done(int result); virtual bool eventFilter(QObject *object, QEvent *event); public: void setCurrentFont(const QFont &font); QFont currentFont() const; QFont selectedFont() const; void setOption(QFontDialog::FontDialogOption option, bool on = true); bool testOption(QFontDialog::FontDialogOption option) const; void setOptions(QFontDialog::FontDialogOptions options); QFontDialog::FontDialogOptions options() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual void setVisible(bool visible); signals: void currentFontChanged(const QFont &font); void fontSelected(const QFont &font); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4725535 PyQt6-6.6.1/sip/QtWidgets/qformlayout.sip0000644000076500000240000001156514532160401017177 0ustar00philstaff// qformlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFormLayout : QLayout { %TypeHeaderCode #include %End public: enum FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow, }; enum RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows, }; enum ItemRole { LabelRole, FieldRole, SpanningRole, }; explicit QFormLayout(QWidget *parent /TransferThis/ = 0); virtual ~QFormLayout(); void setFieldGrowthPolicy(QFormLayout::FieldGrowthPolicy policy); QFormLayout::FieldGrowthPolicy fieldGrowthPolicy() const; void setRowWrapPolicy(QFormLayout::RowWrapPolicy policy); QFormLayout::RowWrapPolicy rowWrapPolicy() const; void setLabelAlignment(Qt::Alignment alignment); Qt::Alignment labelAlignment() const; void setFormAlignment(Qt::Alignment alignment); Qt::Alignment formAlignment() const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; virtual int spacing() const; virtual void setSpacing(int); void addRow(QWidget *label /Transfer/, QWidget *field /Transfer/); void addRow(QWidget *label /Transfer/, QLayout *field /Transfer/); void addRow(const QString &labelText, QWidget *field /Transfer/); void addRow(const QString &labelText, QLayout *field /Transfer/); void addRow(QWidget *widget /Transfer/); void addRow(QLayout *layout /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QWidget *field /Transfer/); void insertRow(int row, QWidget *label /Transfer/, QLayout *field /Transfer/); void insertRow(int row, const QString &labelText, QWidget *field /Transfer/); void insertRow(int row, const QString &labelText, QLayout *field /Transfer/); void insertRow(int row, QWidget *widget /Transfer/); void insertRow(int row, QLayout *layout /Transfer/); void setItem(int row, QFormLayout::ItemRole role, QLayoutItem *item /Transfer/); void setWidget(int row, QFormLayout::ItemRole role, QWidget *widget /Transfer/); void setLayout(int row, QFormLayout::ItemRole role, QLayout *layout /Transfer/); QLayoutItem *itemAt(int row, QFormLayout::ItemRole role) const; void getItemPosition(int index, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getWidgetPosition(QWidget *widget, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; void getLayoutPosition(QLayout *layout, int *rowPtr, QFormLayout::ItemRole *rolePtr) const; QWidget *labelForField(QWidget *field) const; QWidget *labelForField(QLayout *field) const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QLayoutItem *itemAt(int index) const; virtual QLayoutItem *takeAt(int index) /TransferBack/; virtual void setGeometry(const QRect &rect); virtual QSize minimumSize() const; virtual QSize sizeHint() const; virtual void invalidate(); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; virtual Qt::Orientations expandingDirections() const; virtual int count() const; int rowCount() const; struct TakeRowResult { %TypeHeaderCode #include %End QLayoutItem *labelItem; QLayoutItem *fieldItem; }; void removeRow(int row); void removeRow(QWidget *widget); void removeRow(QLayout *layout); QFormLayout::TakeRowResult takeRow(int row); QFormLayout::TakeRowResult takeRow(QWidget *widget); QFormLayout::TakeRowResult takeRow(QLayout *layout); %If (Qt_6_4_0 -) void setRowVisible(QLayout *layout, bool on); %End %If (Qt_6_4_0 -) void setRowVisible(QWidget *widget, bool on); %End %If (Qt_6_4_0 -) void setRowVisible(int row, bool on); %End %If (Qt_6_4_0 -) bool isRowVisible(QLayout *layout) const; %End %If (Qt_6_4_0 -) bool isRowVisible(QWidget *widget) const; %End %If (Qt_6_4_0 -) bool isRowVisible(int row) const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4639614 PyQt6-6.6.1/sip/QtWidgets/qframe.sip0000644000076500000240000000416414532160401016065 0ustar00philstaff// qframe.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QFrame : QWidget { %TypeHeaderCode #include %End public: enum Shadow /BaseType=IntEnum/ { Plain, Raised, Sunken, }; enum Shape /BaseType=IntEnum/ { NoFrame, Box, Panel, WinPanel, HLine, VLine, StyledPanel, }; enum StyleMask { Shadow_Mask, Shape_Mask, }; QFrame(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QFrame(); int frameStyle() const; void setFrameStyle(int); int frameWidth() const; virtual QSize sizeHint() const; QFrame::Shape frameShape() const; void setFrameShape(QFrame::Shape); QFrame::Shadow frameShadow() const; void setFrameShadow(QFrame::Shadow); int lineWidth() const; void setLineWidth(int); int midLineWidth() const; void setMidLineWidth(int); QRect frameRect() const; void setFrameRect(const QRect &); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); void drawFrame(QPainter *); virtual void initStyleOption(QStyleOptionFrame *option) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.537549 PyQt6-6.6.1/sip/QtWidgets/qgesture.sip0000644000076500000240000001233314532160402016447 0ustar00philstaff// qgesture.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGesture : QObject { %TypeHeaderCode #include %End public: explicit QGesture(QObject *parent /TransferThis/ = 0); virtual ~QGesture(); Qt::GestureType gestureType() const; Qt::GestureState state() const; QPointF hotSpot() const; void setHotSpot(const QPointF &value); bool hasHotSpot() const; void unsetHotSpot(); enum GestureCancelPolicy { CancelNone, CancelAllInContext, }; void setGestureCancelPolicy(QGesture::GestureCancelPolicy policy); QGesture::GestureCancelPolicy gestureCancelPolicy() const; }; class QPanGesture : QGesture { %TypeHeaderCode #include %End public: explicit QPanGesture(QObject *parent /TransferThis/ = 0); virtual ~QPanGesture(); QPointF lastOffset() const; QPointF offset() const; QPointF delta() const; qreal acceleration() const; void setLastOffset(const QPointF &value); void setOffset(const QPointF &value); void setAcceleration(qreal value); }; class QPinchGesture : QGesture { %TypeHeaderCode #include %End public: enum ChangeFlag /BaseType=Flag/ { ScaleFactorChanged, RotationAngleChanged, CenterPointChanged, }; typedef QFlags ChangeFlags; explicit QPinchGesture(QObject *parent /TransferThis/ = 0); virtual ~QPinchGesture(); QPinchGesture::ChangeFlags totalChangeFlags() const; void setTotalChangeFlags(QPinchGesture::ChangeFlags value); QPinchGesture::ChangeFlags changeFlags() const; void setChangeFlags(QPinchGesture::ChangeFlags value); QPointF startCenterPoint() const; QPointF lastCenterPoint() const; QPointF centerPoint() const; void setStartCenterPoint(const QPointF &value); void setLastCenterPoint(const QPointF &value); void setCenterPoint(const QPointF &value); qreal totalScaleFactor() const; qreal lastScaleFactor() const; qreal scaleFactor() const; void setTotalScaleFactor(qreal value); void setLastScaleFactor(qreal value); void setScaleFactor(qreal value); qreal totalRotationAngle() const; qreal lastRotationAngle() const; qreal rotationAngle() const; void setTotalRotationAngle(qreal value); void setLastRotationAngle(qreal value); void setRotationAngle(qreal value); }; class QSwipeGesture : QGesture { %TypeHeaderCode #include %End public: enum SwipeDirection { NoDirection, Left, Right, Up, Down, }; explicit QSwipeGesture(QObject *parent /TransferThis/ = 0); virtual ~QSwipeGesture(); QSwipeGesture::SwipeDirection horizontalDirection() const; QSwipeGesture::SwipeDirection verticalDirection() const; qreal swipeAngle() const; void setSwipeAngle(qreal value); }; class QTapGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapGesture(); QPointF position() const; void setPosition(const QPointF &pos); }; class QTapAndHoldGesture : QGesture { %TypeHeaderCode #include %End public: explicit QTapAndHoldGesture(QObject *parent /TransferThis/ = 0); virtual ~QTapAndHoldGesture(); QPointF position() const; void setPosition(const QPointF &pos); static void setTimeout(int msecs); static int timeout(); }; class QGestureEvent : QEvent { %TypeHeaderCode #include %End %ConvertToSubClassCode sipType = ((sipCpp->type() == QEvent::Gesture) ? sipType_QGestureEvent : 0); %End public: explicit QGestureEvent(const QList &gestures); virtual ~QGestureEvent(); QList gestures() const; QGesture *gesture(Qt::GestureType type) const; QList activeGestures() const; QList canceledGestures() const; void setAccepted(bool accepted); bool isAccepted() const; void accept(); void ignore(); void setAccepted(QGesture *, bool); void accept(QGesture *); void ignore(QGesture *); bool isAccepted(QGesture *) const; void setAccepted(Qt::GestureType, bool); void accept(Qt::GestureType); void ignore(Qt::GestureType); bool isAccepted(Qt::GestureType) const; QWidget *widget() const; QPointF mapToGraphicsScene(const QPointF &gesturePoint) const; }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.53511 PyQt6-6.6.1/sip/QtWidgets/qgesturerecognizer.sip0000644000076500000240000000331214532160402020534 0ustar00philstaff// qgesturerecognizer.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGestureRecognizer /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum ResultFlag /BaseType=Flag/ { Ignore, MayBeGesture, TriggerGesture, FinishGesture, CancelGesture, ConsumeEventHint, }; typedef QFlags Result; QGestureRecognizer(); virtual ~QGestureRecognizer(); virtual QGesture *create(QObject *target) /Factory/; virtual QGestureRecognizer::Result recognize(QGesture *state, QObject *watched, QEvent *event) = 0; virtual void reset(QGesture *state); static Qt::GestureType registerRecognizer(QGestureRecognizer *recognizer /Transfer/); static void unregisterRecognizer(Qt::GestureType type); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4755712 PyQt6-6.6.1/sip/QtWidgets/qgraphicsanchorlayout.sip0000644000076500000240000000526414532160401021226 0ustar00philstaff// qgraphicsanchorlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsAnchor : QObject { %TypeHeaderCode #include %End public: virtual ~QGraphicsAnchor(); void setSpacing(qreal spacing); void unsetSpacing(); qreal spacing() const; void setSizePolicy(QSizePolicy::Policy policy); QSizePolicy::Policy sizePolicy() const; private: QGraphicsAnchor(QGraphicsAnchorLayout *parent); }; class QGraphicsAnchorLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsAnchorLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsAnchorLayout(); QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem /Transfer/, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem /Transfer/, Qt::AnchorPoint secondEdge); QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge); void addCornerAnchors(QGraphicsLayoutItem *firstItem /Transfer/, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Corner secondCorner); void addAnchors(QGraphicsLayoutItem *firstItem /Transfer/, QGraphicsLayoutItem *secondItem /Transfer/, Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical); void setHorizontalSpacing(qreal spacing); void setVerticalSpacing(qreal spacing); void setSpacing(qreal spacing); qreal horizontalSpacing() const; qreal verticalSpacing() const; virtual void removeAt(int index); virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5485415 PyQt6-6.6.1/sip/QtWidgets/qgraphicseffect.sip0000644000076500000240000001162714532160402017753 0ustar00philstaff// qgraphicseffect.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsEffect : QObject { %TypeHeaderCode #include %End public: enum ChangeFlag /BaseType=Flag/ { SourceAttached, SourceDetached, SourceBoundingRectChanged, SourceInvalidated, }; typedef QFlags ChangeFlags; enum PixmapPadMode { NoPad, PadToTransparentBorder, PadToEffectiveBoundingRect, }; QGraphicsEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsEffect(); virtual QRectF boundingRectFor(const QRectF &sourceRect) const; QRectF boundingRect() const; bool isEnabled() const; public slots: void setEnabled(bool enable); void update(); signals: void enabledChanged(bool enabled); protected: virtual void draw(QPainter *painter) = 0; virtual void sourceChanged(QGraphicsEffect::ChangeFlags flags); void updateBoundingRect(); bool sourceIsPixmap() const; QRectF sourceBoundingRect(Qt::CoordinateSystem system = Qt::LogicalCoordinates) const; void drawSource(QPainter *painter); QPixmap sourcePixmap(Qt::CoordinateSystem system = Qt::LogicalCoordinates, QPoint *offset /Out/ = 0, QGraphicsEffect::PixmapPadMode mode = QGraphicsEffect::PadToEffectiveBoundingRect) const; }; class QGraphicsColorizeEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsColorizeEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsColorizeEffect(); QColor color() const; qreal strength() const; public slots: void setColor(const QColor &c); void setStrength(qreal strength); signals: void colorChanged(const QColor &color); void strengthChanged(qreal strength); protected: virtual void draw(QPainter *painter); }; class QGraphicsBlurEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: enum BlurHint /BaseType=Flag/ { PerformanceHint, QualityHint, AnimationHint, }; typedef QFlags BlurHints; QGraphicsBlurEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsBlurEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; qreal blurRadius() const; QGraphicsBlurEffect::BlurHints blurHints() const; public slots: void setBlurRadius(qreal blurRadius); void setBlurHints(QGraphicsBlurEffect::BlurHints hints); signals: void blurRadiusChanged(qreal blurRadius); void blurHintsChanged(QGraphicsBlurEffect::BlurHints hints /ScopesStripped=1/); protected: virtual void draw(QPainter *painter); }; class QGraphicsDropShadowEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsDropShadowEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsDropShadowEffect(); virtual QRectF boundingRectFor(const QRectF &rect) const; QPointF offset() const; qreal xOffset() const; qreal yOffset() const; qreal blurRadius() const; QColor color() const; public slots: void setOffset(const QPointF &ofs); void setOffset(qreal dx, qreal dy); void setOffset(qreal d); void setXOffset(qreal dx); void setYOffset(qreal dy); void setBlurRadius(qreal blurRadius); void setColor(const QColor &color); signals: void offsetChanged(const QPointF &offset); void blurRadiusChanged(qreal blurRadius); void colorChanged(const QColor &color); protected: virtual void draw(QPainter *painter); }; class QGraphicsOpacityEffect : QGraphicsEffect { %TypeHeaderCode #include %End public: QGraphicsOpacityEffect(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsOpacityEffect(); qreal opacity() const; QBrush opacityMask() const; public slots: void setOpacity(qreal opacity); void setOpacityMask(const QBrush &mask); signals: void opacityChanged(qreal opacity); void opacityMaskChanged(const QBrush &mask); protected: virtual void draw(QPainter *painter); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5500412 PyQt6-6.6.1/sip/QtWidgets/qgraphicsgridlayout.sip0000644000076500000240000001015714532160402020677 0ustar00philstaff// qgraphicsgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsGridLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsGridLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsGridLayout(); void addItem(QGraphicsLayoutItem *item /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); void addItem(QGraphicsLayoutItem *item /Transfer/, int row, int column, Qt::Alignment alignment = Qt::Alignment()); void setHorizontalSpacing(qreal spacing); qreal horizontalSpacing() const; void setVerticalSpacing(qreal spacing); qreal verticalSpacing() const; void setSpacing(qreal spacing); void setRowSpacing(int row, qreal spacing); qreal rowSpacing(int row) const; void setColumnSpacing(int column, qreal spacing); qreal columnSpacing(int column) const; void setRowStretchFactor(int row, int stretch); int rowStretchFactor(int row) const; void setColumnStretchFactor(int column, int stretch); int columnStretchFactor(int column) const; void setRowMinimumHeight(int row, qreal height); qreal rowMinimumHeight(int row) const; void setRowPreferredHeight(int row, qreal height); qreal rowPreferredHeight(int row) const; void setRowMaximumHeight(int row, qreal height); qreal rowMaximumHeight(int row) const; void setRowFixedHeight(int row, qreal height); void setColumnMinimumWidth(int column, qreal width); qreal columnMinimumWidth(int column) const; void setColumnPreferredWidth(int column, qreal width); qreal columnPreferredWidth(int column) const; void setColumnMaximumWidth(int column, qreal width); qreal columnMaximumWidth(int column) const; void setColumnFixedWidth(int column, qreal width); void setRowAlignment(int row, Qt::Alignment alignment); Qt::Alignment rowAlignment(int row) const; void setColumnAlignment(int column, Qt::Alignment alignment); Qt::Alignment columnAlignment(int column) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; int rowCount() const; int columnCount() const; QGraphicsLayoutItem *itemAt(int row, int column) const; virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsGridLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS if (itm) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End virtual void invalidate(); virtual void setGeometry(const QRectF &rect); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; void removeItem(QGraphicsLayoutItem *item /TransferBack/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5458958 PyQt6-6.6.1/sip/QtWidgets/qgraphicsitem.sip0000644000076500000240000006426514532160402017463 0ustar00philstaff// qgraphicsitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case 2: sipType = sipType_QGraphicsPathItem; break; case 3: sipType = sipType_QGraphicsRectItem; break; case 4: sipType = sipType_QGraphicsEllipseItem; break; case 5: sipType = sipType_QGraphicsPolygonItem; break; case 6: sipType = sipType_QGraphicsLineItem; break; case 7: sipType = sipType_QGraphicsPixmapItem; break; case 8: // Switch to the QObject convertor. *sipCppRet = static_cast(sipCpp); sipType = sipType_QObject; break; case 9: sipType = sipType_QGraphicsSimpleTextItem; break; case 10: sipType = sipType_QGraphicsItemGroup; break; case 11: // Switch to the QObject convertor. *sipCppRet = static_cast(sipCpp); sipType = sipType_QObject; break; case 12: // Switch to the QObject convertor. *sipCppRet = static_cast(sipCpp); sipType = sipType_QObject; break; default: sipType = 0; } %End public: enum CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache, }; enum GraphicsItemChange { ItemPositionChange, ItemVisibleChange, ItemEnabledChange, ItemSelectedChange, ItemParentChange, ItemChildAddedChange, ItemChildRemovedChange, ItemTransformChange, ItemPositionHasChanged, ItemTransformHasChanged, ItemSceneChange, ItemVisibleHasChanged, ItemEnabledHasChanged, ItemSelectedHasChanged, ItemParentHasChanged, ItemSceneHasChanged, ItemCursorChange, ItemCursorHasChanged, ItemToolTipChange, ItemToolTipHasChanged, ItemFlagsChange, ItemFlagsHaveChanged, ItemZValueChange, ItemZValueHasChanged, ItemOpacityChange, ItemOpacityHasChanged, ItemScenePositionHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange, ItemTransformOriginPointHasChanged, }; enum GraphicsItemFlag /BaseType=Flag/ { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, ItemIgnoresTransformations, ItemIgnoresParentOpacity, ItemDoesntPropagateOpacityToChildren, ItemStacksBehindParent, ItemUsesExtendedStyleOption, ItemHasNoContents, ItemSendsGeometryChanges, ItemAcceptsInputMethod, ItemNegativeZStacksBehindParent, ItemIsPanel, ItemSendsScenePositionChanges, ItemContainsChildrenInShape, }; typedef QFlags GraphicsItemFlags; static const int Type; static const int UserType; explicit QGraphicsItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItem(); QGraphicsScene *scene() const; QGraphicsItem *parentItem() const; QGraphicsItem *topLevelItem() const; void setParentItem(QGraphicsItem *parent /TransferThis/); QGraphicsItemGroup *group() const; void setGroup(QGraphicsItemGroup *group /KeepReference/); QGraphicsItem::GraphicsItemFlags flags() const; void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true); void setFlags(QGraphicsItem::GraphicsItemFlags flags); QString toolTip() const; void setToolTip(const QString &toolTip); QCursor cursor() const; void setCursor(const QCursor &cursor); bool hasCursor() const; void unsetCursor(); bool isVisible() const; void setVisible(bool visible); void hide(); void show(); bool isEnabled() const; void setEnabled(bool enabled); bool isSelected() const; void setSelected(bool selected); bool acceptDrops() const; void setAcceptDrops(bool on); Qt::MouseButtons acceptedMouseButtons() const; void setAcceptedMouseButtons(Qt::MouseButtons buttons); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QPointF pos() const; qreal x() const; qreal y() const; QPointF scenePos() const; void setPos(const QPointF &pos); void moveBy(qreal dx, qreal dy); void ensureVisible(const QRectF &rect = QRectF(), int xMargin = 50, int yMargin = 50); virtual void advance(int phase); qreal zValue() const; void setZValue(qreal z); virtual QRectF boundingRect() const = 0; QRectF childrenBoundingRect() const; QRectF sceneBoundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0) = 0; void update(const QRectF &rect = QRectF()); QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapToParent(const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapToParent(const QRectF &rect) const; QPolygonF mapToScene(const QRectF &rect) const; QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapToParent(const QPolygonF &polygon) const; QPolygonF mapToScene(const QPolygonF &polygon) const; QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapToParent(const QPainterPath &path) const; QPainterPath mapToScene(const QPainterPath &path) const; QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const; QPointF mapFromParent(const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const; QPolygonF mapFromParent(const QRectF &rect) const; QPolygonF mapFromScene(const QRectF &rect) const; QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const; QPolygonF mapFromParent(const QPolygonF &polygon) const; QPolygonF mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const; QPainterPath mapFromParent(const QPainterPath &path) const; QPainterPath mapFromScene(const QPainterPath &path) const; bool isAncestorOf(const QGraphicsItem *child) const; QVariant data(int key) const; void setData(int key, const QVariant &value); virtual int type() const; void installSceneEventFilter(QGraphicsItem *filterItem); void removeSceneEventFilter(QGraphicsItem *filterItem); protected: virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); void prepareGeometryChange(); virtual bool sceneEvent(QEvent *event); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); public: void setPos(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void update(qreal ax, qreal ay, qreal width, qreal height); QPointF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapToParent(qreal ax, qreal ay) const; QPointF mapToScene(qreal ax, qreal ay) const; QPointF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay) const; QPointF mapFromParent(qreal ax, qreal ay) const; QPointF mapFromScene(qreal ax, qreal ay) const; QTransform transform() const; QTransform sceneTransform() const; QTransform deviceTransform(const QTransform &viewportTransform) const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isObscured(const QRectF &rect = QRectF()) const; bool isObscured(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapToScene(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QPolygonF mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; QGraphicsWidget *parentWidget() const; QGraphicsWidget *topLevelWidget() const; QGraphicsWidget *window() const; QList childItems() const; bool isWidget() const; bool isWindow() const; QGraphicsItem::CacheMode cacheMode() const; void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize()); bool isVisibleTo(const QGraphicsItem *parent) const; bool acceptHoverEvents() const; void setAcceptHoverEvents(bool enabled); void grabMouse(); void ungrabMouse(); void grabKeyboard(); void ungrabKeyboard(); QRegion boundingRegion(const QTransform &itemToDeviceTransform) const; qreal boundingRegionGranularity() const; void setBoundingRegionGranularity(qreal granularity); void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()); QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const; bool isUnderMouse() const; qreal opacity() const; qreal effectiveOpacity() const; void setOpacity(qreal opacity); QTransform itemTransform(const QGraphicsItem *other, bool *ok = 0) const; bool isClipped() const; QPainterPath clipPath() const; QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectToParent(const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const; QRectF mapRectFromParent(const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; QRectF mapRectToItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectToScene(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromItem(const QGraphicsItem *item, qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromParent(qreal ax, qreal ay, qreal w, qreal h) const; QRectF mapRectFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum PanelModality { NonModal, PanelModal, SceneModal, }; QGraphicsObject *parentObject() const; QGraphicsItem *panel() const; bool isPanel() const; QGraphicsObject *toGraphicsObject(); QGraphicsItem::PanelModality panelModality() const; void setPanelModality(QGraphicsItem::PanelModality panelModality); bool isBlockedByModalPanel(QGraphicsItem **blockingPanel /Out/ = 0) const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); bool acceptTouchEvents() const; void setAcceptTouchEvents(bool enabled); bool filtersChildEvents() const; void setFiltersChildEvents(bool enabled); bool isActive() const; void setActive(bool active); QGraphicsItem *focusProxy() const; void setFocusProxy(QGraphicsItem *item /KeepReference/); QGraphicsItem *focusItem() const; void setX(qreal x); void setY(qreal y); void setRotation(qreal angle); qreal rotation() const; void setScale(qreal scale); qreal scale() const; QList transformations() const; void setTransformations(const QList &transformations /KeepReference/); QPointF transformOriginPoint() const; void setTransformOriginPoint(const QPointF &origin); void setTransformOriginPoint(qreal ax, qreal ay); void stackBefore(const QGraphicsItem *sibling); Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); protected: void updateMicroFocus(); private: QGraphicsItem(const QGraphicsItem &); }; class QAbstractGraphicsShapeItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QAbstractGraphicsShapeItem(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QAbstractGraphicsShapeItem(); QPen pen() const; void setPen(const QPen &pen); QBrush brush() const; void setBrush(const QBrush &brush); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; }; class QGraphicsPathItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPathItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPathItem(const QPainterPath &path, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPathItem(); QPainterPath path() const; void setPath(const QPainterPath &path); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsRectItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsRectItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsRectItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsRectItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsEllipseItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsEllipseItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(const QRectF &rect, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsEllipseItem(qreal x, qreal y, qreal w, qreal h, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsEllipseItem(); QRectF rect() const; void setRect(const QRectF &rect); void setRect(qreal ax, qreal ay, qreal w, qreal h); int startAngle() const; void setStartAngle(int angle); int spanAngle() const; void setSpanAngle(int angle); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsPolygonItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsPolygonItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPolygonItem(const QPolygonF &polygon, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPolygonItem(); QPolygonF polygon() const; void setPolygon(const QPolygonF &polygon); Qt::FillRule fillRule() const; void setFillRule(Qt::FillRule rule); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsLineItem : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsLineItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(const QLineF &line, QGraphicsItem *parent /TransferThis/ = 0); QGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsLineItem(); QPen pen() const; void setPen(const QPen &pen); QLineF line() const; void setLine(const QLineF &line); void setLine(qreal x1, qreal y1, qreal x2, qreal y2); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsPixmapItem : QGraphicsItem { %TypeHeaderCode #include %End public: enum ShapeMode { MaskShape, BoundingRectShape, HeuristicMaskShape, }; explicit QGraphicsPixmapItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsPixmapItem(); QPixmap pixmap() const; void setPixmap(const QPixmap &pixmap); Qt::TransformationMode transformationMode() const; void setTransformationMode(Qt::TransformationMode mode); QPointF offset() const; void setOffset(const QPointF &offset); void setOffset(qreal ax, qreal ay); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; QGraphicsPixmapItem::ShapeMode shapeMode() const; void setShapeMode(QGraphicsPixmapItem::ShapeMode mode); }; class QGraphicsSimpleTextItem : QAbstractGraphicsShapeItem { %TypeHeaderCode #include %End public: explicit QGraphicsSimpleTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsSimpleTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsSimpleTextItem(); void setText(const QString &text); QString text() const; void setFont(const QFont &font); QFont font() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsItemGroup : QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsItemGroup(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsItemGroup(); void addToGroup(QGraphicsItem *item /Transfer/); void removeFromGroup(QGraphicsItem *item /GetWrapper/); %MethodCode sipCpp->removeFromGroup(a0); // The item will be passed to the group's parent if there is one. If not, // transfer ownership back to Python. if (sipCpp->parentItem()) sipTransferTo(a0Wrapper, sipGetPyObject(sipCpp->parentItem(), sipType_QGraphicsItem)); else sipTransferBack(a0Wrapper); %End virtual QRectF boundingRect() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; }; class QGraphicsObject : QObject, QGraphicsItem { %TypeHeaderCode #include %End public: explicit QGraphicsObject(QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsObject(); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); void ungrabGesture(Qt::GestureType type); signals: void parentChanged(); void opacityChanged(); void visibleChanged(); void enabledChanged(); void xChanged(); void yChanged(); void zChanged(); void rotationChanged(); void scaleChanged(); protected slots: void updateMicroFocus(); protected: virtual bool event(QEvent *ev); }; class QGraphicsTextItem : QGraphicsObject { %TypeHeaderCode #include %End public: explicit QGraphicsTextItem(QGraphicsItem *parent /TransferThis/ = 0); QGraphicsTextItem(const QString &text, QGraphicsItem *parent /TransferThis/ = 0); virtual ~QGraphicsTextItem(); QString toHtml() const; void setHtml(const QString &html); QString toPlainText() const; void setPlainText(const QString &text); QFont font() const; void setFont(const QFont &font); void setDefaultTextColor(const QColor &c); QColor defaultTextColor() const; virtual QRectF boundingRect() const; virtual QPainterPath shape() const; virtual bool contains(const QPointF &point) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual bool isObscuredBy(const QGraphicsItem *item) const; virtual QPainterPath opaqueArea() const; virtual int type() const; void setTextWidth(qreal width); qreal textWidth() const; void adjustSize(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setTabChangesFocus(bool b); bool tabChangesFocus() const; void setOpenExternalLinks(bool open); bool openExternalLinks() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; signals: void linkActivated(const QString &); void linkHovered(const QString &); protected: virtual bool sceneEvent(QEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; }; %ModuleCode // These are needed by the %ConvertToSubClassCode. #include #include %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4681368 PyQt6-6.6.1/sip/QtWidgets/qgraphicslayout.sip0000644000076500000240000000330214532160401020022 0ustar00philstaff// qgraphicslayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayout : QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLayout(); void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void activate(); bool isActivated() const; virtual void invalidate(); virtual void widgetEvent(QEvent *e); virtual int count() const = 0 /__len__/; virtual QGraphicsLayoutItem *itemAt(int i) const = 0; virtual void removeAt(int index) = 0; virtual void updateGeometry(); protected: void addChildLayoutItem(QGraphicsLayoutItem *layoutItem /Transfer/); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.476128 PyQt6-6.6.1/sip/QtWidgets/qgraphicslayoutitem.sip0000644000076500000240000000607014532160401020706 0ustar00philstaff// qgraphicslayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLayoutItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QGraphicsLayoutItem(QGraphicsLayoutItem *parent /TransferThis/ = 0, bool isLayout = false); virtual ~QGraphicsLayoutItem(); void setSizePolicy(const QSizePolicy &policy); void setSizePolicy(QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy, QSizePolicy::ControlType controlType = QSizePolicy::DefaultType); QSizePolicy sizePolicy() const; void setMinimumSize(const QSizeF &size); QSizeF minimumSize() const; void setMinimumWidth(qreal width); void setMinimumHeight(qreal height); void setPreferredSize(const QSizeF &size); QSizeF preferredSize() const; void setPreferredWidth(qreal width); void setPreferredHeight(qreal height); void setMaximumSize(const QSizeF &size); QSizeF maximumSize() const; void setMaximumWidth(qreal width); void setMaximumHeight(qreal height); virtual void setGeometry(const QRectF &rect); QRectF geometry() const; virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; QRectF contentsRect() const; QSizeF effectiveSizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); QGraphicsLayoutItem *parentLayoutItem() const; void setParentLayoutItem(QGraphicsLayoutItem *parent /TransferThis/); bool isLayout() const; void setMinimumSize(qreal aw, qreal ah); void setPreferredSize(qreal aw, qreal ah); void setMaximumSize(qreal aw, qreal ah); qreal minimumWidth() const; qreal minimumHeight() const; qreal preferredWidth() const; qreal preferredHeight() const; qreal maximumWidth() const; qreal maximumHeight() const; QGraphicsItem *graphicsItem() const; bool ownedByLayout() const; virtual bool isEmpty() const; protected: virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const = 0; void setGraphicsItem(QGraphicsItem *item); void setOwnedByLayout(bool ownedByLayout); private: QGraphicsLayoutItem(const QGraphicsLayoutItem &); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5117602 PyQt6-6.6.1/sip/QtWidgets/qgraphicslinearlayout.sip0000644000076500000240000000611614532160402021224 0ustar00philstaff// qgraphicslinearlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsLinearLayout : QGraphicsLayout { %TypeHeaderCode #include %End public: QGraphicsLinearLayout(QGraphicsLayoutItem *parent /TransferThis/ = 0); QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent /TransferThis/ = 0); virtual ~QGraphicsLinearLayout(); void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void addItem(QGraphicsLayoutItem *item /Transfer/); void addStretch(int stretch = 1); void insertItem(int index, QGraphicsLayoutItem *item /Transfer/); void insertStretch(int index, int stretch = 1); void removeItem(QGraphicsLayoutItem *item /TransferBack/); virtual void removeAt(int index); %MethodCode // The ownership of any existing item must be passed back to Python. QGraphicsLayoutItem *itm; if (a0 < sipCpp->count()) itm = sipCpp->itemAt(a0); else itm = 0; Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QGraphicsLinearLayout::removeAt(a0) : sipCpp->removeAt(a0); Py_END_ALLOW_THREADS // The Qt documentation isn't quite correct as ownership isn't always passed // back to the caller. if (itm && !itm->parentLayoutItem()) { PyObject *itmo = sipGetPyObject(itm, sipType_QGraphicsLayoutItem); if (itmo) sipTransferBack(itmo); } %End void setSpacing(qreal spacing); qreal spacing() const; void setItemSpacing(int index, qreal spacing); qreal itemSpacing(int index) const; void setStretchFactor(QGraphicsLayoutItem *item, int stretch); int stretchFactor(QGraphicsLayoutItem *item) const; void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment); Qt::Alignment alignment(QGraphicsLayoutItem *item) const; virtual void setGeometry(const QRectF &rect); virtual int count() const; virtual QGraphicsLayoutItem *itemAt(int index) const; virtual void invalidate(); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4942982 PyQt6-6.6.1/sip/QtWidgets/qgraphicsproxywidget.sip0000644000076500000240000000752014532160401021100 0ustar00philstaff// qgraphicsproxywidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsProxyWidget : QGraphicsWidget { %TypeHeaderCode #include %End public: QGraphicsProxyWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QGraphicsProxyWidget(); void setWidget(QWidget *widget /Transfer/); %MethodCode // The ownership of any existing widget must be passed back to Python. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; QRectF subWidgetRect(const QWidget *widget) const; virtual void setGeometry(const QRectF &rect); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual int type() const; QGraphicsProxyWidget *createProxyForChildWidget(QWidget *child) /Factory/; protected: virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void showEvent(QShowEvent *event); virtual void hideEvent(QHideEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); QGraphicsProxyWidget *newProxyWidget(const QWidget *) /Factory/; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; virtual void inputMethodEvent(QInputMethodEvent *event); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.526282 PyQt6-6.6.1/sip/QtWidgets/qgraphicsscene.sip0000644000076500000240000002110014532160402017577 0ustar00philstaff// qgraphicsscene.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsScene : QObject { %TypeHeaderCode #include %End public: enum ItemIndexMethod { BspTreeIndex, NoIndex, }; QGraphicsScene(QObject *parent /TransferThis/ = 0); QGraphicsScene(const QRectF &sceneRect, QObject *parent /TransferThis/ = 0); QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScene(); QRectF sceneRect() const; qreal width() const; qreal height() const; void setSceneRect(const QRectF &rect); void setSceneRect(qreal x, qreal y, qreal w, qreal h); void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QGraphicsScene::ItemIndexMethod itemIndexMethod() const; void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method); QRectF itemsBoundingRect() const; QList items(Qt::SortOrder order = Qt::DescendingOrder) const; QList items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const; QList items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const; QList collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList selectedItems() const; void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform); void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform()); void clearSelection(); QGraphicsItemGroup *createItemGroup(const QList &items /Transfer/); void destroyItemGroup(QGraphicsItemGroup *group /Transfer/); void addItem(QGraphicsItem *item /Transfer/); QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen()); QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen()); QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap); QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush()); QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont()); QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont()); void removeItem(QGraphicsItem *item /TransferBack/); QGraphicsItem *focusItem() const; void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason); bool hasFocus() const; void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason); void clearFocus(); QGraphicsItem *mouseGrabberItem() const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QList views() const; public slots: void advance(); void update(const QRectF &rect = QRectF()); void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); void clear(); signals: void changed(const QList ®ion); void sceneRectChanged(const QRectF &rect); void selectionChanged(); protected: virtual bool event(QEvent *event); virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event); virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event); virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual void helpEvent(QGraphicsSceneHelpEvent *event); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void wheelEvent(QGraphicsSceneWheelEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: enum SceneLayer /BaseType=Flag/ { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers, }; typedef QFlags SceneLayers; int bspTreeDepth() const; void setBspTreeDepth(int depth); QPainterPath selectionArea() const; void update(qreal x, qreal y, qreal w, qreal h); QGraphicsProxyWidget *addWidget(QWidget *widget /Transfer/, Qt::WindowFlags flags = Qt::WindowFlags()); QStyle *style() const; void setStyle(QStyle *style /Transfer/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); QGraphicsWidget *activeWindow() const; void setActiveWindow(QGraphicsWidget *widget); protected: virtual bool eventFilter(QObject *watched, QEvent *event); virtual bool focusNextPrevChild(bool next); public: void setStickyFocus(bool enabled); bool stickyFocus() const; QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const; QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const; bool isActive() const; QGraphicsItem *activePanel() const; void setActivePanel(QGraphicsItem *item); bool sendEvent(QGraphicsItem *item, QEvent *event); void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); qreal minimumRenderSize() const; void setMinimumRenderSize(qreal minSize); signals: void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason); public: bool focusOnTouch() const; void setFocusOnTouch(bool enabled); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.490621 PyQt6-6.6.1/sip/QtWidgets/qgraphicssceneevent.sip0000644000076500000240000001402614532160401020651 0ustar00philstaff// qgraphicssceneevent.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsSceneEvent : QEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type()) { case QEvent::GraphicsSceneContextMenu: sipType = sipType_QGraphicsSceneContextMenuEvent; break; case QEvent::GraphicsSceneDragEnter: case QEvent::GraphicsSceneDragLeave: case QEvent::GraphicsSceneDragMove: case QEvent::GraphicsSceneDrop: sipType = sipType_QGraphicsSceneDragDropEvent; break; case QEvent::GraphicsSceneHelp: sipType = sipType_QGraphicsSceneHelpEvent; break; case QEvent::GraphicsSceneHoverEnter: case QEvent::GraphicsSceneHoverLeave: case QEvent::GraphicsSceneHoverMove: sipType = sipType_QGraphicsSceneHoverEvent; break; case QEvent::GraphicsSceneMouseDoubleClick: case QEvent::GraphicsSceneMouseMove: case QEvent::GraphicsSceneMousePress: case QEvent::GraphicsSceneMouseRelease: sipType = sipType_QGraphicsSceneMouseEvent; break; case QEvent::GraphicsSceneWheel: sipType = sipType_QGraphicsSceneWheelEvent; break; case QEvent::GraphicsSceneMove: sipType = sipType_QGraphicsSceneMoveEvent; break; case QEvent::GraphicsSceneResize: sipType = sipType_QGraphicsSceneResizeEvent; break; default: sipType = 0; } %End public: virtual ~QGraphicsSceneEvent(); QWidget *widget() const; %If (Qt_6_2_0 -) quint64 timestamp() const; %End private: QGraphicsSceneEvent(const QGraphicsSceneEvent &); }; class QGraphicsSceneMouseEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneMouseEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF buttonDownPos(Qt::MouseButton button) const; QPointF buttonDownScenePos(Qt::MouseButton button) const; QPoint buttonDownScreenPos(Qt::MouseButton button) const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::MouseButtons buttons() const; Qt::MouseButton button() const; Qt::KeyboardModifiers modifiers() const; Qt::MouseEventSource source() const; Qt::MouseEventFlags flags() const; }; class QGraphicsSceneWheelEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneWheelEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; int delta() const; Qt::Orientation orientation() const; %If (Qt_6_2_0 -) Qt::ScrollPhase phase() const; %End %If (Qt_6_2_0 -) QPoint pixelDelta() const; %End %If (Qt_6_2_0 -) bool isInverted() const; %End }; class QGraphicsSceneContextMenuEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: enum Reason { Mouse, Keyboard, Other, }; virtual ~QGraphicsSceneContextMenuEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::KeyboardModifiers modifiers() const; QGraphicsSceneContextMenuEvent::Reason reason() const; }; class QGraphicsSceneHoverEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHoverEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; QPointF lastPos() const; QPointF lastScenePos() const; QPoint lastScreenPos() const; Qt::KeyboardModifiers modifiers() const; }; class QGraphicsSceneHelpEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneHelpEvent(); QPointF scenePos() const; QPoint screenPos() const; }; class QGraphicsSceneDragDropEvent : QGraphicsSceneEvent /NoDefaultCtors/ { %TypeHeaderCode #include %End public: virtual ~QGraphicsSceneDragDropEvent(); QPointF pos() const; QPointF scenePos() const; QPoint screenPos() const; Qt::MouseButtons buttons() const; Qt::KeyboardModifiers modifiers() const; Qt::DropActions possibleActions() const; Qt::DropAction proposedAction() const; void acceptProposedAction(); Qt::DropAction dropAction() const; void setDropAction(Qt::DropAction action); QWidget *source() const; const QMimeData *mimeData() const; }; class QGraphicsSceneResizeEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneResizeEvent(); virtual ~QGraphicsSceneResizeEvent(); QSizeF oldSize() const; QSizeF newSize() const; }; class QGraphicsSceneMoveEvent : QGraphicsSceneEvent { %TypeHeaderCode #include %End public: QGraphicsSceneMoveEvent(); virtual ~QGraphicsSceneMoveEvent(); QPointF oldPos() const; QPointF newPos() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5212977 PyQt6-6.6.1/sip/QtWidgets/qgraphicstransform.sip0000644000076500000240000000461114532160402020525 0ustar00philstaff// qgraphicstransform.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsTransform : QObject { %TypeHeaderCode #include %End public: QGraphicsTransform(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsTransform(); virtual void applyTo(QMatrix4x4 *matrix) const = 0; protected slots: void update(); }; class QGraphicsScale : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsScale(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsScale(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal xScale() const; void setXScale(qreal); qreal yScale() const; void setYScale(qreal); qreal zScale() const; void setZScale(qreal); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void scaleChanged(); void xScaleChanged(); void yScaleChanged(); void zScaleChanged(); }; class QGraphicsRotation : QGraphicsTransform { %TypeHeaderCode #include %End public: QGraphicsRotation(QObject *parent /TransferThis/ = 0); virtual ~QGraphicsRotation(); QVector3D origin() const; void setOrigin(const QVector3D &point); qreal angle() const; void setAngle(qreal); QVector3D axis() const; void setAxis(const QVector3D &axis); void setAxis(Qt::Axis axis); virtual void applyTo(QMatrix4x4 *matrix) const; signals: void originChanged(); void angleChanged(); void axisChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5510814 PyQt6-6.6.1/sip/QtWidgets/qgraphicsview.sip0000644000076500000240000001767514532160402017502 0ustar00philstaff// qgraphicsview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsView : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum CacheModeFlag /BaseType=Flag/ { CacheNone, CacheBackground, }; typedef QFlags CacheMode; enum DragMode { NoDrag, ScrollHandDrag, RubberBandDrag, }; enum ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse, }; QGraphicsView(QWidget *parent /TransferThis/ = 0); QGraphicsView(QGraphicsScene *scene /KeepReference/, QWidget *parent /TransferThis/ = 0); virtual ~QGraphicsView(); virtual QSize sizeHint() const; QPainter::RenderHints renderHints() const; void setRenderHint(QPainter::RenderHint hint, bool on = true); void setRenderHints(QPainter::RenderHints hints); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); QGraphicsView::ViewportAnchor transformationAnchor() const; void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::ViewportAnchor resizeAnchor() const; void setResizeAnchor(QGraphicsView::ViewportAnchor anchor); QGraphicsView::DragMode dragMode() const; void setDragMode(QGraphicsView::DragMode mode); QGraphicsView::CacheMode cacheMode() const; void setCacheMode(QGraphicsView::CacheMode mode); void resetCachedContent(); bool isInteractive() const; void setInteractive(bool allowed); QGraphicsScene *scene() const; void setScene(QGraphicsScene *scene /KeepReference/); QRectF sceneRect() const; void setSceneRect(const QRectF &rect); void rotate(qreal angle); void scale(qreal sx, qreal sy); void shear(qreal sh, qreal sv); void translate(qreal dx, qreal dy); void centerOn(const QPointF &pos); void centerOn(const QGraphicsItem *item); void ensureVisible(const QRectF &rect, int xMargin = 50, int yMargin = 50); void ensureVisible(const QGraphicsItem *item, int xMargin = 50, int yMargin = 50); void fitInView(const QRectF &rect, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void fitInView(const QGraphicsItem *item, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode mode = Qt::KeepAspectRatio); QList items() const; QList items(const QPoint &pos) const; QList items(int x, int y) const; QList items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QList items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const; QGraphicsItem *itemAt(const QPoint &pos) const; QPointF mapToScene(const QPoint &point) const; QPolygonF mapToScene(const QRect &rect) const; QPolygonF mapToScene(const QPolygon &polygon) const; QPainterPath mapToScene(const QPainterPath &path) const; QPoint mapFromScene(const QPointF &point) const; QPolygon mapFromScene(const QRectF &rect) const; QPolygon mapFromScene(const QPolygonF &polygon) const; QPainterPath mapFromScene(const QPainterPath &path) const; virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const; QBrush backgroundBrush() const; void setBackgroundBrush(const QBrush &brush); QBrush foregroundBrush() const; void setForegroundBrush(const QBrush &brush); public slots: void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers); void updateScene(const QList &rects); void updateSceneRect(const QRectF &rect); protected slots: virtual void setupViewport(QWidget *widget); protected: virtual bool event(QEvent *event); virtual bool viewportEvent(QEvent *event); virtual void contextMenuEvent(QContextMenuEvent *event); virtual void dragEnterEvent(QDragEnterEvent *event); virtual void dragLeaveEvent(QDragLeaveEvent *event); virtual void dragMoveEvent(QDragMoveEvent *event); virtual void dropEvent(QDropEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual void focusOutEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void keyPressEvent(QKeyEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void scrollContentsBy(int dx, int dy); virtual void showEvent(QShowEvent *event); virtual void inputMethodEvent(QInputMethodEvent *event); virtual void drawBackground(QPainter *painter, const QRectF &rect); virtual void drawForeground(QPainter *painter, const QRectF &rect); public: void setSceneRect(qreal ax, qreal ay, qreal aw, qreal ah); void centerOn(qreal ax, qreal ay); void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xMargin = 50, int yMargin = 50); void fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio); QGraphicsItem *itemAt(int ax, int ay) const; QPointF mapToScene(int ax, int ay) const; QPolygonF mapToScene(int ax, int ay, int w, int h) const; QPoint mapFromScene(qreal ax, qreal ay) const; QPolygon mapFromScene(qreal ax, qreal ay, qreal w, qreal h) const; enum ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate, }; enum OptimizationFlag /BaseType=Flag/ { DontSavePainterState, DontAdjustForAntialiasing, }; typedef QFlags OptimizationFlags; QGraphicsView::ViewportUpdateMode viewportUpdateMode() const; void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode); QGraphicsView::OptimizationFlags optimizationFlags() const; void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true); void setOptimizationFlags(QGraphicsView::OptimizationFlags flags); Qt::ItemSelectionMode rubberBandSelectionMode() const; void setRubberBandSelectionMode(Qt::ItemSelectionMode mode); QTransform transform() const; QTransform viewportTransform() const; void setTransform(const QTransform &matrix, bool combine = false); void resetTransform(); bool isTransformed() const; QRect rubberBandRect() const; signals: void rubberBandChanged(QRect viewportRect, QPointF fromScenePoint, QPointF toScenePoint); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5110664 PyQt6-6.6.1/sip/QtWidgets/qgraphicswidget.sip0000644000076500000240000001252314532160402017776 0ustar00philstaff// qgraphicswidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGraphicsWidget : QGraphicsObject, QGraphicsLayoutItem { %TypeHeaderCode #include %End public: QGraphicsWidget(QGraphicsItem *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QGraphicsWidget(); QGraphicsLayout *layout() const; void setLayout(QGraphicsLayout *layout /Transfer/); void adjustSize(); Qt::LayoutDirection layoutDirection() const; void setLayoutDirection(Qt::LayoutDirection direction); void unsetLayoutDirection(); QStyle *style() const; void setStyle(QStyle *style /KeepReference/); QFont font() const; void setFont(const QFont &font); QPalette palette() const; void setPalette(const QPalette &palette); void resize(const QSizeF &size); void resize(qreal w, qreal h); QSizeF size() const; virtual void setGeometry(const QRectF &rect); QRectF rect() const; void setContentsMargins(QMarginsF margins); void setContentsMargins(qreal left, qreal top, qreal right, qreal bottom); virtual void getContentsMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void setWindowFrameMargins(QMarginsF margins); void setWindowFrameMargins(qreal left, qreal top, qreal right, qreal bottom); void getWindowFrameMargins(qreal *left, qreal *top, qreal *right, qreal *bottom) const; void unsetWindowFrameMargins(); QRectF windowFrameGeometry() const; QRectF windowFrameRect() const; Qt::WindowFlags windowFlags() const; Qt::WindowType windowType() const; void setWindowFlags(Qt::WindowFlags wFlags); bool isActiveWindow() const; void setWindowTitle(const QString &title); QString windowTitle() const; Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); static void setTabOrder(QGraphicsWidget *first, QGraphicsWidget *second); QGraphicsWidget *focusWidget() const; int grabShortcut(const QKeySequence &sequence, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); void setShortcutAutoRepeat(int id, bool enabled = true); void addAction(QAction *action); void addActions(const QList &actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, const QList &actions); void removeAction(QAction *action); QList actions() const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); bool testAttribute(Qt::WidgetAttribute attribute) const; virtual int type() const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual QRectF boundingRect() const; virtual QPainterPath shape() const; void setGeometry(qreal ax, qreal ay, qreal aw, qreal ah); public slots: bool close(); protected: virtual void initStyleOption(QStyleOption *option) const; virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void updateGeometry(); virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value); virtual bool sceneEvent(QEvent *event); virtual bool windowFrameEvent(QEvent *e); virtual Qt::WindowFrameSection windowFrameSectionAt(const QPointF &pos) const; virtual bool event(QEvent *event); virtual void changeEvent(QEvent *event); virtual void closeEvent(QCloseEvent *event); virtual void focusInEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual void focusOutEvent(QFocusEvent *event); virtual void hideEvent(QHideEvent *event); virtual void moveEvent(QGraphicsSceneMoveEvent *event); virtual void polishEvent(); virtual void resizeEvent(QGraphicsSceneResizeEvent *event); virtual void showEvent(QShowEvent *event); virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void grabMouseEvent(QEvent *event); virtual void ungrabMouseEvent(QEvent *event); virtual void grabKeyboardEvent(QEvent *event); virtual void ungrabKeyboardEvent(QEvent *event); public: bool autoFillBackground() const; void setAutoFillBackground(bool enabled); signals: void geometryChanged(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4861708 PyQt6-6.6.1/sip/QtWidgets/qgridlayout.sip0000644000076500000240000001264114532160401017155 0ustar00philstaff// qgridlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGridLayout : QLayout { %TypeHeaderCode #include %End public: explicit QGridLayout(QWidget *parent /TransferThis/ = 0); virtual ~QGridLayout(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; void setRowStretch(int row, int stretch); void setColumnStretch(int column, int stretch); int rowStretch(int row) const; int columnStretch(int column) const; void setRowMinimumHeight(int row, int minSize); void setColumnMinimumWidth(int column, int minSize); int rowMinimumHeight(int row) const; int columnMinimumWidth(int column) const; int columnCount() const; int rowCount() const; QRect cellRect(int row, int column) const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual Qt::Orientations expandingDirections() const; virtual void invalidate(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, Qt::Alignment alignment = Qt::Alignment()); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, *a3); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addWidget(QWidget * /GetWrapper/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0, a1, a2, a3, a4, *a5); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End void addLayout(QLayout * /Transfer/, int row, int column, Qt::Alignment alignment = Qt::Alignment()); void addLayout(QLayout * /Transfer/, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); void setOriginCorner(Qt::Corner); Qt::Corner originCorner() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual int count() const; virtual void setGeometry(const QRect &); void addItem(QLayoutItem *item /Transfer/, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()); void setDefaultPositioning(int n, Qt::Orientation orient); void getItemPosition(int idx, int *row, int *column, int *rowSpan, int *columnSpan) const; void setHorizontalSpacing(int spacing); int horizontalSpacing() const; void setVerticalSpacing(int spacing); int verticalSpacing() const; virtual void setSpacing(int spacing); virtual int spacing() const; QLayoutItem *itemAtPosition(int row, int column) const; protected: virtual void addItem(QLayoutItem * /Transfer/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5177884 PyQt6-6.6.1/sip/QtWidgets/qgroupbox.sip0000644000076500000240000000411214532160402016632 0ustar00philstaff// qgroupbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QGroupBox : QWidget { %TypeHeaderCode #include %End public: explicit QGroupBox(QWidget *parent /TransferThis/ = 0); QGroupBox(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QGroupBox(); QString title() const; void setTitle(const QString &); Qt::Alignment alignment() const; void setAlignment(int); virtual QSize minimumSizeHint() const; bool isFlat() const; void setFlat(bool b); bool isCheckable() const; void setCheckable(bool b); bool isChecked() const; public slots: void setChecked(bool b); signals: void clicked(bool checked = false); void toggled(bool); protected: virtual void initStyleOption(QStyleOptionGroupBox *option) const; virtual bool event(QEvent *); virtual void childEvent(QChildEvent *); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *); virtual void focusInEvent(QFocusEvent *); virtual void changeEvent(QEvent *); virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.49687 PyQt6-6.6.1/sip/QtWidgets/qheaderview.sip0000644000076500000240000001600214532160401017110 0ustar00philstaff// qheaderview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QHeaderView : QAbstractItemView { %TypeHeaderCode #include %End public: enum ResizeMode { Interactive, Fixed, Stretch, ResizeToContents, Custom, }; QHeaderView(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QHeaderView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); Qt::Orientation orientation() const; int offset() const; int length() const; virtual QSize sizeHint() const; int sectionSizeHint(int logicalIndex) const; int visualIndexAt(int position) const; int logicalIndexAt(int position) const; int sectionSize(int logicalIndex) const; int sectionPosition(int logicalIndex) const; int sectionViewportPosition(int logicalIndex) const; void moveSection(int from, int to); void resizeSection(int logicalIndex, int size); bool isSectionHidden(int logicalIndex) const; void setSectionHidden(int logicalIndex, bool hide); int count() const /__len__/; int visualIndex(int logicalIndex) const; int logicalIndex(int visualIndex) const; void setHighlightSections(bool highlight); bool highlightSections() const; int stretchSectionCount() const; void setSortIndicatorShown(bool show); bool isSortIndicatorShown() const; void setSortIndicator(int logicalIndex, Qt::SortOrder order); int sortIndicatorSection() const; Qt::SortOrder sortIndicatorOrder() const; bool stretchLastSection() const; void setStretchLastSection(bool stretch); bool sectionsMoved() const; public slots: void setOffset(int offset); void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast); void setOffsetToSectionPosition(int visualIndex); signals: void geometriesChanged(); void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex); void sectionResized(int logicalIndex, int oldSize, int newSize); void sectionPressed(int logicalIndex); void sectionClicked(int logicalIndex); void sectionDoubleClicked(int logicalIndex); void sectionCountChanged(int oldCount, int newCount); void sectionHandleDoubleClicked(int logicalIndex); protected slots: void updateSection(int logicalIndex); void resizeSections(); void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast); void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast); protected: void initialize(); void initializeSections(); void initializeSections(int start, int end); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &old); virtual bool event(QEvent *e); virtual bool viewportEvent(QEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const; virtual QSize sectionSizeFromContents(int logicalIndex) const; virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void updateGeometries(); virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList &roles = QList()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint); virtual QModelIndex indexAt(const QPoint &p) const; virtual bool isIndexHidden(const QModelIndex &index) const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction, Qt::KeyboardModifiers); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; public: int logicalIndexAt(int ax, int ay) const; int logicalIndexAt(const QPoint &apos) const; void hideSection(int alogicalIndex); void showSection(int alogicalIndex); void resizeSections(QHeaderView::ResizeMode mode); int hiddenSectionCount() const; int defaultSectionSize() const; void setDefaultSectionSize(int size); Qt::Alignment defaultAlignment() const; void setDefaultAlignment(Qt::Alignment alignment); bool sectionsHidden() const; void swapSections(int first, int second); bool cascadingSectionResizes() const; void setCascadingSectionResizes(bool enable); int minimumSectionSize() const; void setMinimumSectionSize(int size); QByteArray saveState() const; bool restoreState(const QByteArray &state); virtual void reset(); public slots: void setOffsetToLastSection(); signals: void sectionEntered(int logicalIndex); void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order); protected: virtual void initStyleOption(QStyleOptionHeader *option) const; virtual void initStyleOptionForIndex(QStyleOptionHeader *option, int logicalIndex) const; public: void setSectionsMovable(bool movable); bool sectionsMovable() const; void setSectionsClickable(bool clickable); bool sectionsClickable() const; QHeaderView::ResizeMode sectionResizeMode(int logicalIndex) const; void setSectionResizeMode(int logicalIndex, QHeaderView::ResizeMode mode); void setSectionResizeMode(QHeaderView::ResizeMode mode); virtual void setVisible(bool v); void setResizeContentsPrecision(int precision); int resizeContentsPrecision() const; int maximumSectionSize() const; void setMaximumSectionSize(int size); void resetDefaultSectionSize(); void setFirstSectionMovable(bool movable); bool isFirstSectionMovable() const; %If (Qt_6_1_0 -) void setSortIndicatorClearable(bool clearable); %End %If (Qt_6_1_0 -) bool isSortIndicatorClearable() const; %End signals: %If (Qt_6_1_0 -) void sortIndicatorClearableChanged(bool clearable); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.465267 PyQt6-6.6.1/sip/QtWidgets/qinputdialog.sip0000644000076500000240000001236014532160401017307 0ustar00philstaff// qinputdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QInputDialog : QDialog { %TypeHeaderCode #include %End public: enum InputDialogOption /BaseType=Flag/ { NoButtons, UseListViewForComboBoxItems, UsePlainTextEditForTextInput, }; typedef QFlags InputDialogOptions; enum InputMode { TextInput, IntInput, DoubleInput, }; static QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode echo = QLineEdit::Normal, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags()) /ReleaseGIL/; static double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), double step = 1); static QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; static QString getMultiLineText(QWidget *parent, const QString &title, const QString &label, const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) /ReleaseGIL/; QInputDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QInputDialog(); void setInputMode(QInputDialog::InputMode mode); QInputDialog::InputMode inputMode() const; void setLabelText(const QString &text); QString labelText() const; void setOption(QInputDialog::InputDialogOption option, bool on = true); bool testOption(QInputDialog::InputDialogOption option) const; void setOptions(QInputDialog::InputDialogOptions options); QInputDialog::InputDialogOptions options() const; void setTextValue(const QString &text); QString textValue() const; void setTextEchoMode(QLineEdit::EchoMode mode); QLineEdit::EchoMode textEchoMode() const; void setComboBoxEditable(bool editable); bool isComboBoxEditable() const; void setComboBoxItems(const QStringList &items); QStringList comboBoxItems() const; void setIntValue(int value); int intValue() const; void setIntMinimum(int min); int intMinimum() const; void setIntMaximum(int max); int intMaximum() const; void setIntRange(int min, int max); void setIntStep(int step); int intStep() const; void setDoubleValue(double value); double doubleValue() const; void setDoubleMinimum(double min); double doubleMinimum() const; void setDoubleMaximum(double max); double doubleMaximum() const; void setDoubleRange(double min, double max); void setDoubleDecimals(int decimals); int doubleDecimals() const; void setOkButtonText(const QString &text); QString okButtonText() const; void setCancelButtonText(const QString &text); QString cancelButtonText() const; virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End virtual QSize minimumSizeHint() const; virtual QSize sizeHint() const; virtual void setVisible(bool visible); virtual void done(int result); signals: void textValueChanged(const QString &text); void textValueSelected(const QString &text); void intValueChanged(int value); void intValueSelected(int value); void doubleValueChanged(double value); void doubleValueSelected(double value); public: void setDoubleStep(double step); double doubleStep() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5417626 PyQt6-6.6.1/sip/QtWidgets/qitemdelegate.sip0000644000076500000240000000556314532160402017431 0ustar00philstaff// qitemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); bool hasClipping() const; void setClipping(bool clip); protected: void drawBackground(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual void drawCheck(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, Qt::CheckState state) const; virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QPixmap &pixmap) const; virtual void drawDisplay(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect, const QString &text) const; virtual void drawFocus(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QRect &rect) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5060565 PyQt6-6.6.1/sip/QtWidgets/qitemeditorfactory.sip0000644000076500000240000000342414532160402020527 0ustar00philstaff// qitemeditorfactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QItemEditorCreatorBase /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: virtual ~QItemEditorCreatorBase(); virtual QWidget *createWidget(QWidget *parent /TransferThis/) const = 0 /Factory/; virtual QByteArray valuePropertyName() const = 0; }; class QItemEditorFactory /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: QItemEditorFactory(); virtual ~QItemEditorFactory(); virtual QWidget *createEditor(int userType, QWidget *parent /TransferThis/) const; virtual QByteArray valuePropertyName(int userType) const; void registerEditor(int userType, QItemEditorCreatorBase *creator /Transfer/); static const QItemEditorFactory *defaultFactory(); static void setDefaultFactory(QItemEditorFactory *factory /Transfer/); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.464476 PyQt6-6.6.1/sip/QtWidgets/qkeysequenceedit.sip0000644000076500000240000000425314532160401020161 0ustar00philstaff// qkeysequenceedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QKeySequenceEdit : QWidget { %TypeHeaderCode #include %End public: explicit QKeySequenceEdit(QWidget *parent /TransferThis/ = 0); QKeySequenceEdit(const QKeySequence &keySequence, QWidget *parent /TransferThis/ = 0); virtual ~QKeySequenceEdit(); QKeySequence keySequence() const; public slots: void setKeySequence(const QKeySequence &keySequence); void clear(); signals: void editingFinished(); void keySequenceChanged(const QKeySequence &keySequence); protected: virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void timerEvent(QTimerEvent *); %If (Qt_6_4_0 -) virtual void focusOutEvent(QFocusEvent *); %End public: %If (Qt_6_4_0 -) void setClearButtonEnabled(bool enable); %End %If (Qt_6_4_0 -) bool isClearButtonEnabled() const; %End %If (Qt_6_5_0 -) qsizetype maximumSequenceLength() const; %End %If (Qt_6_5_0 -) void setFinishingKeyCombinations(const QList &finishingKeyCombinations); %End %If (Qt_6_5_0 -) QList finishingKeyCombinations() const; %End public slots: %If (Qt_6_5_0 -) void setMaximumSequenceLength(qsizetype count); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5187385 PyQt6-6.6.1/sip/QtWidgets/qlabel.sip0000644000076500000240000001365714532160402016062 0ustar00philstaff// qlabel.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLabel : QFrame { %TypeHeaderCode #include %End public: QLabel(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QLabel(const QString &text, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QLabel(); QString text() const; QPixmap pixmap() const; QPicture picture() const; QMovie *movie() const; Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); void setWordWrap(bool on); bool wordWrap() const; int indent() const; void setIndent(int); int margin() const; void setMargin(int); bool hasScaledContents() const; void setScaledContents(bool); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setBuddy(QWidget * /KeepReference/); QWidget *buddy() const; virtual int heightForWidth(int) const; bool openExternalLinks() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setOpenExternalLinks(bool open); public slots: void clear(); void setMovie(QMovie *movie /KeepReference/); void setNum(double /Constrained/); void setNum(int); void setPicture(const QPicture &); void setPixmap(const QPixmap &); void setText(const QString &); signals: void linkActivated(const QString &link); void linkHovered(const QString &link); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void contextMenuEvent(QContextMenuEvent *ev); virtual void focusInEvent(QFocusEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); public: void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; %If (Qt_6_1_0 -) SIP_PYCALLABLE resourceProvider() const /TypeHint="Callable[[QUrl], QVariant]"/; %MethodCode if (sipCpp->resourceProvider()) sipRes = sipGetUserObject((sipSimpleWrapper *)sipSelf); else sipRes = SIP_NULLPTR; if (!sipRes) sipRes = Py_None; Py_INCREF(sipRes); %End %End %If (Qt_6_1_0 -) void setResourceProvider(SIP_PYCALLABLE provider /TypeHint="Callable[[QUrl], QVariant]"/); %MethodCode // Remove any existing callable. Py_XDECREF(sipGetUserObject((sipSimpleWrapper *)sipSelf)); if (a0 == Py_None) { sipSetUserObject((sipSimpleWrapper *)sipSelf, SIP_NULLPTR); sipCpp->setResourceProvider(SIP_NULLPTR); } else { // Save the callable so that resourceProvider() can return it. Py_INCREF(a0); sipSetUserObject((sipSimpleWrapper *)sipSelf, a0); Py_BEGIN_ALLOW_THREADS sipCpp->setResourceProvider([a0] (const QUrl &arg) { QUrl *arg_heap = new QUrl(arg); QVariant qv; int is_err = 1; SIP_BLOCK_THREADS PyObject *arg_obj = sipConvertFromNewType(arg_heap, sipType_QUrl, NULL); if (arg_obj) { PyObject *res_obj = PyObject_CallFunctionObjArgs(a0, arg_obj, NULL); Py_DECREF(arg_obj); if (res_obj) { is_err = 0; QVariant *res = reinterpret_cast( sipConvertToType(res_obj, sipType_QVariant, NULL, 0, NULL, &is_err)); if (!is_err) { qv = *res; delete res; } } } else { delete arg_heap; } if (is_err) { pyqt6_qtwidgets_err_print(); } SIP_UNBLOCK_THREADS return qv; }); Py_END_ALLOW_THREADS } %End %End }; %ModuleHeaderCode // Imports from QtCore. typedef void (*pyqt6_qtwidgets_err_print_t)(); extern pyqt6_qtwidgets_err_print_t pyqt6_qtwidgets_err_print; %End %ModuleCode // Imports from QtCore. pyqt6_qtwidgets_err_print_t pyqt6_qtwidgets_err_print; %End %PostInitialisationCode // Imports from QtCore. pyqt6_qtwidgets_err_print = (pyqt6_qtwidgets_err_print_t)sipImportSymbol("pyqt6_err_print"); Q_ASSERT(pyqt6_qtwidgets_err_print); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4743154 PyQt6-6.6.1/sip/QtWidgets/qlayout.sip0000644000076500000240000001340614532160401016307 0ustar00philstaff// qlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayout : QObject, QLayoutItem { %TypeHeaderCode #include %End public: enum SizeConstraint { SetDefaultConstraint, SetNoConstraint, SetMinimumSize, SetFixedSize, SetMaximumSize, SetMinAndMaxSize, }; explicit QLayout(QWidget *parent /TransferThis/ = 0); virtual ~QLayout(); virtual int spacing() const; virtual void setSpacing(int); bool setAlignment(QWidget *w, Qt::Alignment alignment); bool setAlignment(QLayout *l, Qt::Alignment alignment); void setAlignment(Qt::Alignment); void setSizeConstraint(QLayout::SizeConstraint); QLayout::SizeConstraint sizeConstraint() const; void setMenuBar(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setMenuBar(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (a0 && parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows setMenuBar(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QWidget *menuBar() const; QWidget *parentWidget() const; virtual void invalidate(); virtual QRect geometry() const; bool activate(); void update(); void addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End virtual void addItem(QLayoutItem * /Transfer/) = 0; void removeWidget(QWidget *w /TransferBack/); void removeItem(QLayoutItem * /TransferBack/); virtual Qt::Orientations expandingDirections() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual void setGeometry(const QRect &); virtual QLayoutItem *itemAt(int index) const = 0; virtual QLayoutItem *takeAt(int index) = 0 /TransferBack/; virtual int indexOf(const QWidget *) const; virtual int indexOf(const QLayoutItem *) const; virtual int count() const = 0 /__len__/; virtual bool isEmpty() const; int totalHeightForWidth(int w) const; QSize totalMinimumSize() const; QSize totalMaximumSize() const; QSize totalSizeHint() const; virtual QLayout *layout(); void setEnabled(bool); bool isEnabled() const; static QSize closestAcceptableSize(const QWidget *w, const QSize &s); protected: void widgetEvent(QEvent *); virtual void childEvent(QChildEvent *e); void addChildLayout(QLayout *l /Transfer/); void addChildWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->addChildWidget(a0); #else sipCpp->sipProtect_addChildWidget(a0); #endif Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows // addChildWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End QRect alignmentRect(const QRect &) const; public: void setContentsMargins(int left, int top, int right, int bottom); void getContentsMargins(int *left, int *top, int *right, int *bottom) const; QRect contentsRect() const; void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; virtual QSizePolicy::ControlTypes controlTypes() const; virtual QLayoutItem *replaceWidget(QWidget *from, QWidget *to /Transfer/, Qt::FindChildOptions options = Qt::FindChildrenRecursively); %If (Qt_6_1_0 -) void unsetContentsMargins(); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.513122 PyQt6-6.6.1/sip/QtWidgets/qlayoutitem.sip0000644000076500000240000000722414532160402017170 0ustar00philstaff// qlayoutitem.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLayoutItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End %ConvertToSubClassCode if (sipCpp->widget()) { sipType = sipType_QWidgetItem; } else if (sipCpp->spacerItem()) { sipType = sipType_QSpacerItem; } else { // Switch to the QObject convertor. *sipCppRet = sipCpp->layout(); sipType = sipType_QObject; } %End public: explicit QLayoutItem(Qt::Alignment alignment = Qt::Alignment()); virtual ~QLayoutItem(); virtual QSize sizeHint() const = 0; virtual QSize minimumSize() const = 0; virtual QSize maximumSize() const = 0; virtual Qt::Orientations expandingDirections() const = 0; virtual void setGeometry(const QRect &) = 0; virtual QRect geometry() const = 0; virtual bool isEmpty() const = 0; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual int minimumHeightForWidth(int) const; virtual void invalidate(); virtual QWidget *widget() const; virtual QLayout *layout(); virtual QSpacerItem *spacerItem(); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment a); virtual QSizePolicy::ControlTypes controlTypes() const; }; class QSpacerItem : QLayoutItem { %TypeHeaderCode #include %End public: QSpacerItem(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual ~QSpacerItem(); void changeSize(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QSpacerItem *spacerItem(); QSizePolicy sizePolicy() const; }; class QWidgetItem : QLayoutItem { %TypeHeaderCode #include %End public: explicit QWidgetItem(QWidget *w); virtual ~QWidgetItem(); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QSize maximumSize() const; virtual Qt::Orientations expandingDirections() const; virtual bool isEmpty() const; virtual void setGeometry(const QRect &); virtual QRect geometry() const; virtual QWidget *widget() const; virtual bool hasHeightForWidth() const; virtual int heightForWidth(int) const; virtual QSizePolicy::ControlTypes controlTypes() const; private: QWidgetItem(const QWidgetItem &); public: %If (Qt_6_2_0 -) virtual int minimumHeightForWidth(int) const; %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.462619 PyQt6-6.6.1/sip/QtWidgets/qlcdnumber.sip0000644000076500000240000000451214532160401016743 0ustar00philstaff// qlcdnumber.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLCDNumber : QFrame { %TypeHeaderCode #include %End public: explicit QLCDNumber(QWidget *parent /TransferThis/ = 0); QLCDNumber(uint numDigits, QWidget *parent /TransferThis/ = 0); virtual ~QLCDNumber(); enum Mode { Hex, Dec, Oct, Bin, }; enum SegmentStyle { Outline, Filled, Flat, }; bool smallDecimalPoint() const; int digitCount() const; void setDigitCount(int nDigits); void setNumDigits(int nDigits); %MethodCode // This is implemented for Qt v5 so that .ui files created with Designer for Qt v4 will continue to work. sipCpp->setDigitCount(a0); %End bool checkOverflow(double num /Constrained/) const; bool checkOverflow(int num) const; QLCDNumber::Mode mode() const; void setMode(QLCDNumber::Mode); QLCDNumber::SegmentStyle segmentStyle() const; void setSegmentStyle(QLCDNumber::SegmentStyle); double value() const; int intValue() const; virtual QSize sizeHint() const; void display(const QString &str); void display(double num /Constrained/); void display(int num); void setHexMode(); void setDecMode(); void setOctMode(); void setBinMode(); void setSmallDecimalPoint(bool); signals: void overflow(); protected: virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.507608 PyQt6-6.6.1/sip/QtWidgets/qlineedit.sip0000644000076500000240000001213214532160402016563 0ustar00philstaff// qlineedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QLineEdit : QWidget { %TypeHeaderCode #include %End public: explicit QLineEdit(QWidget *parent /TransferThis/ = 0); QLineEdit(const QString &contents, QWidget *parent /TransferThis/ = 0); virtual ~QLineEdit(); QString text() const; QString displayText() const; int maxLength() const; void setMaxLength(int); void setFrame(bool); bool hasFrame() const; enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit, }; QLineEdit::EchoMode echoMode() const; void setEchoMode(QLineEdit::EchoMode); bool isReadOnly() const; void setReadOnly(bool); void setValidator(const QValidator * /KeepReference/); const QValidator *validator() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; int cursorPosition() const; void setCursorPosition(int); int cursorPositionAt(const QPoint &pos); void setAlignment(Qt::Alignment flag); Qt::Alignment alignment() const; void cursorForward(bool mark, int steps = 1); void cursorBackward(bool mark, int steps = 1); void cursorWordForward(bool mark); void cursorWordBackward(bool mark); void backspace(); void del(); void home(bool mark); void end(bool mark); bool isModified() const; void setModified(bool); void setSelection(int, int); bool hasSelectedText() const; QString selectedText() const; int selectionStart() const; bool isUndoAvailable() const; bool isRedoAvailable() const; void setDragEnabled(bool b); bool dragEnabled() const; QString inputMask() const; void setInputMask(const QString &inputMask); bool hasAcceptableInput() const; void setText(const QString &); void clear(); void selectAll(); void undo(); void redo(); void cut(); void copy() const; void paste(); void deselect(); void insert(const QString &); QMenu *createStandardContextMenu() /Factory/; signals: void textChanged(const QString &); void textEdited(const QString &); void cursorPositionChanged(int, int); void returnPressed(); void editingFinished(); void selectionChanged(); protected: virtual void initStyleOption(QStyleOptionFrame *option) const; virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void paintEvent(QPaintEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *); virtual void changeEvent(QEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void inputMethodEvent(QInputMethodEvent *); virtual void keyReleaseEvent(QKeyEvent *); QRect cursorRect() const; public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; virtual bool event(QEvent *); virtual void timerEvent(QTimerEvent *); void setCompleter(QCompleter *completer /KeepReference/); QCompleter *completer() const; void setTextMargins(int left, int top, int right, int bottom); void setTextMargins(const QMargins &margins); QMargins textMargins() const; QString placeholderText() const; void setPlaceholderText(const QString &); void setCursorMoveStyle(Qt::CursorMoveStyle style); Qt::CursorMoveStyle cursorMoveStyle() const; enum ActionPosition { LeadingPosition, TrailingPosition, }; void setClearButtonEnabled(bool enable); bool isClearButtonEnabled() const; void addAction(QAction *); void addAction(QAction *action, QLineEdit::ActionPosition position); QAction *addAction(const QIcon &icon, QLineEdit::ActionPosition position) /Transfer/; QVariant inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const; int selectionEnd() const; int selectionLength() const; signals: void inputRejected(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4885614 PyQt6-6.6.1/sip/QtWidgets/qlistview.sip0000644000076500000240000001154114532160401016636 0ustar00philstaff// qlistview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListView : QAbstractItemView { %TypeHeaderCode #include %End public: enum Movement { Static, Free, Snap, }; enum Flow { LeftToRight, TopToBottom, }; enum ResizeMode { Fixed, Adjust, }; enum LayoutMode { SinglePass, Batched, }; enum ViewMode { ListMode, IconMode, }; explicit QListView(QWidget *parent /TransferThis/ = 0); virtual ~QListView(); void setMovement(QListView::Movement movement); QListView::Movement movement() const; void setFlow(QListView::Flow flow); QListView::Flow flow() const; void setWrapping(bool enable); bool isWrapping() const; void setResizeMode(QListView::ResizeMode mode); QListView::ResizeMode resizeMode() const; void setLayoutMode(QListView::LayoutMode mode); QListView::LayoutMode layoutMode() const; void setSpacing(int space); int spacing() const; void setGridSize(const QSize &size); QSize gridSize() const; void setViewMode(QListView::ViewMode mode); QListView::ViewMode viewMode() const; void clearPropertyFlags(); bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); void setModelColumn(int column); int modelColumn() const; void setUniformItemSizes(bool enable); bool uniformItemSizes() const; virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; virtual void reset(); virtual void setRootIndex(const QModelIndex &index); signals: void indexesMoved(const QModelIndexList &indexes); protected: virtual void scrollContentsBy(int dx, int dy); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList &roles = QList()); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual bool event(QEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void startDrag(Qt::DropActions supportedActions); virtual void paintEvent(QPaintEvent *e); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); QRect rectForIndex(const QModelIndex &index) const; void setPositionForIndex(const QPoint &position, const QModelIndex &index); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual bool isIndexHidden(const QModelIndex &index) const; virtual QSize viewportSizeHint() const; public: void setBatchSize(int batchSize); int batchSize() const; void setWordWrap(bool on); bool wordWrap() const; void setSelectionRectVisible(bool show); bool isSelectionRectVisible() const; protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void initViewItemOption(QStyleOptionViewItem *option) const; public: void setItemAlignment(Qt::Alignment alignment); Qt::Alignment itemAlignment() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5326822 PyQt6-6.6.1/sip/QtWidgets/qlistwidget.sip0000644000076500000240000001627614532160402017162 0ustar00philstaff// qlistwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QListWidgetItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType /BaseType=IntEnum/ { Type, UserType, }; QListWidgetItem(QListWidget *parent /TransferThis/ = 0, int type = QListWidgetItem::Type); QListWidgetItem(const QString &text, QListWidget *parent /TransferThis/ = 0, int type = QListWidgetItem::Type); QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent /TransferThis/ = 0, int type = QListWidgetItem::Type); QListWidgetItem(const QListWidgetItem &other); virtual ~QListWidgetItem(); virtual QListWidgetItem *clone() const /Factory/; QListWidget *listWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; %If (Qt_6_4_0 -) void setTextAlignment(Qt::Alignment alignment); %End void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); QSize sizeHint() const; void setSizeHint(const QSize &size); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QListWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; private: QListWidgetItem &operator=(const QListWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QListWidgetItem &item) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QListWidgetItem &item /Constrained/) /ReleaseGIL/; class QListWidget : QListView { %TypeHeaderCode #include %End public: explicit QListWidget(QWidget *parent /TransferThis/ = 0); virtual ~QListWidget(); QListWidgetItem *item(int row) const; int row(const QListWidgetItem *item) const; void insertItem(int row, QListWidgetItem *item /Transfer/); void insertItem(int row, const QString &label); void insertItems(int row, const QStringList &labels); void addItem(QListWidgetItem *aitem /Transfer/); void addItem(const QString &label); void addItems(const QStringList &labels); QListWidgetItem *takeItem(int row) /TransferBack/; int count() const /__len__/; QListWidgetItem *currentItem() const; void setCurrentItem(QListWidgetItem *item); void setCurrentItem(QListWidgetItem *item, QItemSelectionModel::SelectionFlags command); int currentRow() const; void setCurrentRow(int row); void setCurrentRow(int row, QItemSelectionModel::SelectionFlags command); QListWidgetItem *itemAt(const QPoint &p) const; QListWidgetItem *itemAt(int ax, int ay) const; QWidget *itemWidget(QListWidgetItem *item) const; void setItemWidget(QListWidgetItem *item, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1); Py_END_ALLOW_THREADS %End QRect visualItemRect(const QListWidgetItem *item) const; void sortItems(Qt::SortOrder order = Qt::AscendingOrder); void editItem(QListWidgetItem *item); void openPersistentEditor(QListWidgetItem *item); void closePersistentEditor(QListWidgetItem *item); QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; public slots: void clear(); void scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); signals: void itemPressed(QListWidgetItem *item); void itemClicked(QListWidgetItem *item); void itemDoubleClicked(QListWidgetItem *item); void itemActivated(QListWidgetItem *item); void itemEntered(QListWidgetItem *item); void itemChanged(QListWidgetItem *item); void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous); void currentTextChanged(const QString ¤tText); void currentRowChanged(int currentRow); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList &items) const /TransferBack/; virtual bool dropMimeData(int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: QList items(const QMimeData *data) const; QModelIndex indexFromItem(const QListWidgetItem *item) const; QListWidgetItem *itemFromIndex(const QModelIndex &index) const; void setSortingEnabled(bool enable); bool isSortingEnabled() const; void removeItemWidget(QListWidgetItem *aItem); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0); Py_END_ALLOW_THREADS %End virtual void setSelectionModel(QItemSelectionModel *selectionModel); bool isPersistentEditorOpen(QListWidgetItem *item) const; private: virtual void setModel(QAbstractItemModel *model /KeepReference/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5086906 PyQt6-6.6.1/sip/QtWidgets/qmainwindow.sip0000644000076500000240000001112314532160402017141 0ustar00philstaff// qmainwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMainWindow : QWidget { %TypeHeaderCode #include %End public: QMainWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QMainWindow(); QSize iconSize() const; void setIconSize(const QSize &iconSize); Qt::ToolButtonStyle toolButtonStyle() const; void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); QMenuBar *menuBar() const /Transfer/; void setMenuBar(QMenuBar *menubar /Transfer/); QStatusBar *statusBar() const /Transfer/; void setStatusBar(QStatusBar *statusbar /Transfer/); QWidget *centralWidget() const; void setCentralWidget(QWidget *widget /Transfer/); void setCorner(Qt::Corner corner, Qt::DockWidgetArea area); Qt::DockWidgetArea corner(Qt::Corner corner) const; void addToolBarBreak(Qt::ToolBarArea area = Qt::TopToolBarArea); void insertToolBarBreak(QToolBar *before); void addToolBar(Qt::ToolBarArea area, QToolBar *toolbar /Transfer/); void addToolBar(QToolBar *toolbar /Transfer/); QToolBar *addToolBar(const QString &title) /Transfer/; void insertToolBar(QToolBar *before, QToolBar *toolbar /Transfer/); void removeToolBar(QToolBar *toolbar); Qt::ToolBarArea toolBarArea(const QToolBar *toolbar) const; void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/); void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void splitDockWidget(QDockWidget *after, QDockWidget *dockwidget /Transfer/, Qt::Orientation orientation); void removeDockWidget(QDockWidget *dockwidget /TransferBack/); Qt::DockWidgetArea dockWidgetArea(QDockWidget *dockwidget) const; QByteArray saveState(int version = 0) const; bool restoreState(const QByteArray &state, int version = 0); virtual QMenu *createPopupMenu(); public slots: void setAnimated(bool enabled); void setDockNestingEnabled(bool enabled); signals: void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); void tabifiedDockWidgetActivated(QDockWidget *dockWidget); protected: virtual void contextMenuEvent(QContextMenuEvent *event); virtual bool event(QEvent *event); public: bool isAnimated() const; bool isDockNestingEnabled() const; bool isSeparator(const QPoint &pos) const; QWidget *menuWidget() const; void setMenuWidget(QWidget *menubar /Transfer/); void tabifyDockWidget(QDockWidget *first, QDockWidget *second); enum DockOption /BaseType=Flag/ { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, GroupedDragging, }; typedef QFlags DockOptions; void setDockOptions(QMainWindow::DockOptions options); QMainWindow::DockOptions dockOptions() const; void removeToolBarBreak(QToolBar *before); bool toolBarBreak(QToolBar *toolbar) const; void setUnifiedTitleAndToolBarOnMac(bool set); bool unifiedTitleAndToolBarOnMac() const; bool restoreDockWidget(QDockWidget *dockwidget); bool documentMode() const; void setDocumentMode(bool enabled); QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape tabShape); QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const; void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition); QList tabifiedDockWidgets(QDockWidget *dockwidget) const; QWidget *takeCentralWidget() /TransferBack/; void resizeDocks(const QList &docks, const QList &sizes, Qt::Orientation orientation); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4659636 PyQt6-6.6.1/sip/QtWidgets/qmdiarea.sip0000644000076500000240000001011614532160401016367 0ustar00philstaff// qmdiarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum AreaOption /BaseType=Flag/ { DontMaximizeSubWindowOnActivation, }; typedef QFlags AreaOptions; enum ViewMode { SubWindowView, TabbedView, }; enum WindowOrder { CreationOrder, StackingOrder, ActivationHistoryOrder, }; QMdiArea(QWidget *parent /TransferThis/ = 0); virtual ~QMdiArea(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QMdiSubWindow *activeSubWindow() const; QMdiSubWindow *addSubWindow(QWidget *widget /Transfer/, Qt::WindowFlags flags = Qt::WindowFlags()); QList subWindowList(QMdiArea::WindowOrder order = QMdiArea::CreationOrder) const; QMdiSubWindow *currentSubWindow() const; void removeSubWindow(QWidget *widget /GetWrapper/); %MethodCode // We need to implement /TransferBack/ on the argument, but it might be the // QMdiSubWindow that wraps the widget we are really after. QMdiSubWindow *swin = qobject_cast(a0); if (swin) { QWidget *w = swin->widget(); a0Wrapper = (w ? sipGetPyObject(w, sipType_QWidget) : 0); } else a0Wrapper = 0; Py_BEGIN_ALLOW_THREADS sipCpp->removeSubWindow(a0); Py_END_ALLOW_THREADS if (a0Wrapper) sipTransferBack(a0Wrapper); %End QBrush background() const; void setBackground(const QBrush &background); void setOption(QMdiArea::AreaOption option, bool on = true); bool testOption(QMdiArea::AreaOption opton) const; signals: void subWindowActivated(QMdiSubWindow *); public slots: void setActiveSubWindow(QMdiSubWindow *window); void tileSubWindows(); void cascadeSubWindows(); void closeActiveSubWindow(); void closeAllSubWindows(); void activateNextSubWindow(); void activatePreviousSubWindow(); protected: virtual void setupViewport(QWidget *viewport); virtual bool event(QEvent *event); virtual bool eventFilter(QObject *object, QEvent *event); virtual void paintEvent(QPaintEvent *paintEvent); virtual void childEvent(QChildEvent *childEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void showEvent(QShowEvent *showEvent); virtual bool viewportEvent(QEvent *event); virtual void scrollContentsBy(int dx, int dy); public: QMdiArea::WindowOrder activationOrder() const; void setActivationOrder(QMdiArea::WindowOrder order); void setViewMode(QMdiArea::ViewMode mode); QMdiArea::ViewMode viewMode() const; void setTabShape(QTabWidget::TabShape shape); QTabWidget::TabShape tabShape() const; void setTabPosition(QTabWidget::TabPosition position); QTabWidget::TabPosition tabPosition() const; bool documentMode() const; void setDocumentMode(bool enabled); void setTabsClosable(bool closable); bool tabsClosable() const; void setTabsMovable(bool movable); bool tabsMovable() const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.540253 PyQt6-6.6.1/sip/QtWidgets/qmdisubwindow.sip0000644000076500000240000000772614532160402017516 0ustar00philstaff// qmdisubwindow.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMdiSubWindow : QWidget { %TypeHeaderCode #include %End public: enum SubWindowOption /BaseType=Flag/ { RubberBandResize, RubberBandMove, }; typedef QFlags SubWindowOptions; QMdiSubWindow(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QMdiSubWindow(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setWidget(QWidget *widget /Transfer/); %MethodCode // We have to implement /TransferBack/ on any existing widget. QWidget *w = sipCpp->widget(); Py_BEGIN_ALLOW_THREADS sipCpp->setWidget(a0); Py_END_ALLOW_THREADS if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferBack(wo); } %End QWidget *widget() const; bool isShaded() const; void setOption(QMdiSubWindow::SubWindowOption option, bool on = true); bool testOption(QMdiSubWindow::SubWindowOption) const; void setKeyboardSingleStep(int step); int keyboardSingleStep() const; void setKeyboardPageStep(int step); int keyboardPageStep() const; void setSystemMenu(QMenu *systemMenu /Transfer/); %MethodCode // We have to break the parent association on any existing menu. QMenu *w = sipCpp->systemMenu(); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QMenu); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setSystemMenu(a0); Py_END_ALLOW_THREADS %End QMenu *systemMenu() const; QMdiArea *mdiArea() const; signals: void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState); void aboutToActivate(); public slots: void showSystemMenu(); void showShaded(); protected: virtual bool eventFilter(QObject *object, QEvent *event); virtual bool event(QEvent *event); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); virtual void changeEvent(QEvent *changeEvent); virtual void closeEvent(QCloseEvent *closeEvent); virtual void leaveEvent(QEvent *leaveEvent); virtual void resizeEvent(QResizeEvent *resizeEvent); virtual void timerEvent(QTimerEvent *timerEvent); virtual void moveEvent(QMoveEvent *moveEvent); virtual void paintEvent(QPaintEvent *paintEvent); virtual void mousePressEvent(QMouseEvent *mouseEvent); virtual void mouseDoubleClickEvent(QMouseEvent *mouseEvent); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *mouseEvent); virtual void keyPressEvent(QKeyEvent *keyEvent); virtual void contextMenuEvent(QContextMenuEvent *contextMenuEvent); virtual void focusInEvent(QFocusEvent *focusInEvent); virtual void focusOutEvent(QFocusEvent *focusOutEvent); virtual void childEvent(QChildEvent *childEvent); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4785438 PyQt6-6.6.1/sip/QtWidgets/qmenu.sip0000644000076500000240000001302414532160401015732 0ustar00philstaff// qmenu.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenu : QWidget { %TypeHeaderCode #include %End public: explicit QMenu(QWidget *parent /TransferThis/ = 0); QMenu(const QString &title, QWidget *parent /TransferThis/ = 0); virtual ~QMenu(); %If (- Qt_6_3_0) void addAction(QAction *); %End %If (- Qt_6_3_0) QAction *addAction(const QString &text) /Transfer/; %End %If (- Qt_6_3_0) QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData(), *a2); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End %End %If (- Qt_6_3_0) QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; %End %If (- Qt_6_3_0) QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, const QKeySequence &shortcut = 0) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData(), *a3); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); void setTearOffEnabled(bool); bool isTearOffEnabled() const; bool isTearOffMenuVisible() const; void hideTearOffMenu(); void setDefaultAction(QAction * /KeepReference/); QAction *defaultAction() const; void setActiveAction(QAction *act); QAction *activeAction() const; void popup(const QPoint &p, QAction *action = 0); QAction *exec() /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; QAction *exec(const QPoint &p, QAction *action = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; static QAction *exec(const QList &actions, const QPoint &pos, QAction *at = 0, QWidget *parent = 0) /PostHook=__pyQtPostEventLoopHook__,PreHook=__pyQtPreEventLoopHook__,ReleaseGIL/; virtual QSize sizeHint() const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; QAction *menuAction() const; QString title() const; void setTitle(const QString &title); QIcon icon() const; void setIcon(const QIcon &icon); void setNoReplayFor(QWidget *widget); signals: void aboutToHide(); void aboutToShow(); void hovered(QAction *action); void triggered(QAction *action); protected: int columnCount() const; virtual void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void enterEvent(QEnterEvent *); virtual void leaveEvent(QEvent *); virtual void hideEvent(QHideEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void timerEvent(QTimerEvent *); virtual bool event(QEvent *); virtual bool focusNextPrevChild(bool next); public: bool isEmpty() const; bool separatorsCollapsible() const; void setSeparatorsCollapsible(bool collapse); QAction *addSection(const QString &text) /Transfer/; QAction *addSection(const QIcon &icon, const QString &text) /Transfer/; QAction *insertSection(QAction *before, const QString &text) /Transfer/; QAction *insertSection(QAction *before, const QIcon &icon, const QString &text) /Transfer/; bool toolTipsVisible() const; void setToolTipsVisible(bool visible); %If (macOS) void setAsDockMenu(); %End void showTearOffMenu(); void showTearOffMenu(const QPoint &pos); %If (Qt_6_3_0 -) static QMenu *menuInAction(const QAction *action); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.531722 PyQt6-6.6.1/sip/QtWidgets/qmenubar.sip0000644000076500000240000000702114532160402016420 0ustar00philstaff// qmenubar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMenuBar : QWidget { %TypeHeaderCode #include %End public: explicit QMenuBar(QWidget *parent /TransferThis/ = 0); virtual ~QMenuBar(); %If (- Qt_6_3_0) void addAction(QAction *); %End %If (- Qt_6_3_0) QAction *addAction(const QString &text) /Transfer/; %End %If (- Qt_6_3_0) QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End %End QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title) /Transfer/; QMenu *addMenu(const QIcon &icon, const QString &title) /Transfer/; QAction *addSeparator() /Transfer/; QAction *insertMenu(QAction *before, QMenu *menu); QAction *insertSeparator(QAction *before) /Transfer/; void clear(); QAction *activeAction() const; void setActiveAction(QAction *action); void setDefaultUp(bool); bool isDefaultUp() const; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; virtual int heightForWidth(int) const; QRect actionGeometry(QAction *) const; QAction *actionAt(const QPoint &) const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; virtual void setVisible(bool visible); signals: void triggered(QAction *action); void hovered(QAction *action); protected: virtual void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const; virtual void changeEvent(QEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); virtual void actionEvent(QActionEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void focusInEvent(QFocusEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void timerEvent(QTimerEvent *); public: bool isNativeMenuBar() const; void setNativeMenuBar(bool nativeMenuBar); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5140634 PyQt6-6.6.1/sip/QtWidgets/qmessagebox.sip0000644000076500000240000001515614532160402017134 0ustar00philstaff// qmessagebox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QMessageBox : QDialog { %TypeHeaderCode #include %End public: enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, HelpRole, YesRole, NoRole, ResetRole, ApplyRole, }; enum Icon { NoIcon, Information, Warning, Critical, Question, }; enum StandardButton /BaseType=IntFlag/ { NoButton, Ok, Save, SaveAll, Open, Yes, YesToAll, No, NoToAll, Abort, Retry, Ignore, Close, Cancel, Discard, Help, Apply, Reset, RestoreDefaults, FirstButton, LastButton, YesAll, NoAll, Default, Escape, FlagMask, ButtonMask, }; typedef QFlags StandardButtons; typedef QMessageBox::StandardButton Button; explicit QMessageBox(QWidget *parent /TransferThis/ = 0); QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::NoButton, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint); virtual ~QMessageBox(); QString text() const; void setText(const QString &); QMessageBox::Icon icon() const; void setIcon(QMessageBox::Icon); QPixmap iconPixmap() const; void setIconPixmap(const QPixmap &); Qt::TextFormat textFormat() const; void setTextFormat(Qt::TextFormat); static QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::StandardButtons(QMessageBox::Yes | QMessageBox::No), QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton) /ReleaseGIL/; static void about(QWidget *parent, const QString &caption, const QString &text) /ReleaseGIL/; static void aboutQt(QWidget *parent, const QString &title = QString()) /ReleaseGIL/; static QPixmap standardIcon(QMessageBox::Icon icon); protected: virtual bool event(QEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void closeEvent(QCloseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: void addButton(QAbstractButton *button /Transfer/, QMessageBox::ButtonRole role); QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role) /Transfer/; QPushButton *addButton(QMessageBox::StandardButton button) /Transfer/; void removeButton(QAbstractButton *button /TransferBack/); void setStandardButtons(QMessageBox::StandardButtons buttons); QMessageBox::StandardButtons standardButtons() const; QMessageBox::StandardButton standardButton(QAbstractButton *button) const; QAbstractButton *button(QMessageBox::StandardButton which) const; QPushButton *defaultButton() const; void setDefaultButton(QPushButton *button /KeepReference/); void setDefaultButton(QMessageBox::StandardButton button); QAbstractButton *escapeButton() const; void setEscapeButton(QAbstractButton *button /KeepReference/); void setEscapeButton(QMessageBox::StandardButton button); QAbstractButton *clickedButton() const; QString informativeText() const; void setInformativeText(const QString &text); QString detailedText() const; void setDetailedText(const QString &text); void setWindowTitle(const QString &title); void setWindowModality(Qt::WindowModality windowModality); virtual void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End QList buttons() const; QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const; signals: void buttonClicked(QAbstractButton *button); public: void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setCheckBox(QCheckBox *cb); QCheckBox *checkBox() const; %If (Qt_6_6_0 -) enum class Option { DontUseNativeDialog, }; %End %If (Qt_6_6_0 -) typedef QFlags Options; %End %If (Qt_6_6_0 -) void setOption(QMessageBox::Option option, bool on = true); %End %If (Qt_6_6_0 -) bool testOption(QMessageBox::Option option) const; %End %If (Qt_6_6_0 -) void setOptions(QMessageBox::Options options); %End %If (Qt_6_6_0 -) QMessageBox::Options options() const; %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5283163 PyQt6-6.6.1/sip/QtWidgets/qplaintextedit.sip0000644000076500000240000001612114532160402017646 0ustar00philstaff// qplaintextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPlainTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: enum LineWrapMode { NoWrap, WidgetWidth, }; explicit QPlainTextEdit(QWidget *parent /TransferThis/ = 0); QPlainTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPlainTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); void setMaximumBlockCount(int maximum); int maximumBlockCount() const; QPlainTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QPlainTextEdit::LineWrapMode mode); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); void setBackgroundVisible(bool visible); bool backgroundVisible() const; void setCenterOnScroll(bool enabled); bool centerOnScroll() const; bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QString toPlainText() const; void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; QMenu *createStandardContextMenu(const QPoint &position) /Factory/; QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); int cursorWidth() const; void setCursorWidth(int width); void setExtraSelections(const QList &selections); QList extraSelections() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); bool canPaste() const; %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End int blockCount() const; public slots: void setPlainText(const QString &text); void cut(); void copy(); void paste(); void undo(); void redo(); void clear(); void selectAll(); void insertPlainText(const QString &text); void appendPlainText(const QString &text); void appendHtml(const QString &html); void centerCursor(); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); void updateRequest(const QRect &rect, int dy); void blockCountChanged(int newBlockCount); void modificationChanged(bool); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *e); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void scrollContentsBy(int dx, int dy); QTextBlock firstVisibleBlock() const; QPointF contentOffset() const; QRectF blockBoundingRect(const QTextBlock &block) const; QRectF blockBoundingGeometry(const QTextBlock &block) const; QAbstractTextDocumentLayout::PaintContext getPaintContext() const; public: QString anchorAt(const QPoint &pos) const; public slots: void zoomIn(int range = 1); void zoomOut(int range = 1); public: void setPlaceholderText(const QString &placeholderText); QString placeholderText() const; bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; qreal tabStopDistance() const; void setTabStopDistance(qreal distance); }; class QPlainTextDocumentLayout : QAbstractTextDocumentLayout { %TypeHeaderCode #include %End public: QPlainTextDocumentLayout(QTextDocument *document); virtual ~QPlainTextDocumentLayout(); virtual void draw(QPainter *, const QAbstractTextDocumentLayout::PaintContext &); virtual int hitTest(const QPointF &, Qt::HitTestAccuracy) const; virtual int pageCount() const; virtual QSizeF documentSize() const; virtual QRectF frameBoundingRect(QTextFrame *) const; virtual QRectF blockBoundingRect(const QTextBlock &block) const; void ensureBlockLayout(const QTextBlock &block) const; void setCursorWidth(int width); int cursorWidth() const; void requestUpdate(); protected: virtual void documentChanged(int from, int, int charsAdded); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4750347 PyQt6-6.6.1/sip/QtWidgets/qprogressbar.sip0000644000076500000240000000426214532160401017323 0ustar00philstaff// qprogressbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressBar : QWidget { %TypeHeaderCode #include %End public: enum Direction { TopToBottom, BottomToTop, }; explicit QProgressBar(QWidget *parent /TransferThis/ = 0); virtual ~QProgressBar(); int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QString text() const; void setTextVisible(bool visible); bool isTextVisible() const; Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::Orientation orientation() const; void setInvertedAppearance(bool invert); void setTextDirection(QProgressBar::Direction textDirection); void setFormat(const QString &format); QString format() const; void resetFormat(); public slots: void reset(); void setMinimum(int minimum); void setMaximum(int maximum); void setValue(int value); void setOrientation(Qt::Orientation); signals: void valueChanged(int value); protected: virtual void initStyleOption(QStyleOptionProgressBar *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4677253 PyQt6-6.6.1/sip/QtWidgets/qprogressdialog.sip0000644000076500000240000000552714532160401020023 0ustar00philstaff// qprogressdialog.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProgressDialog : QDialog { %TypeHeaderCode #include %End public: QProgressDialog(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); QProgressDialog(const QString &labelText, const QString &cancelButtonText, int minimum, int maximum, QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QProgressDialog(); void setLabel(QLabel *label /Transfer/); void setCancelButton(QPushButton *button /Transfer/); void setBar(QProgressBar *bar /Transfer/); bool wasCanceled() const; int minimum() const; int maximum() const; void setRange(int minimum, int maximum); int value() const; virtual QSize sizeHint() const; QString labelText() const; int minimumDuration() const; void setAutoReset(bool b); bool autoReset() const; void setAutoClose(bool b); bool autoClose() const; public slots: void cancel(); void reset(); void setMaximum(int maximum); void setMinimum(int minimum); void setValue(int progress); void setLabelText(const QString &); void setCancelButtonText(const QString &); void setMinimumDuration(int ms); signals: void canceled(); protected: virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *e); void forceShow(); public: void open(); void open(SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/); %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a0, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipCpp->open(receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(0, a0); } %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4671745 PyQt6-6.6.1/sip/QtWidgets/qproxystyle.sip0000644000076500000240000000755314532160401017242 0ustar00philstaff// qproxystyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QProxyStyle : QCommonStyle { %TypeHeaderCode #include %End public: QProxyStyle(QStyle *style /Transfer/ = 0); QProxyStyle(const QString &key); virtual ~QProxyStyle(); QStyle *baseStyle() const; void setBaseStyle(QStyle *style /Transfer/); virtual void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const; virtual void drawItemText(QPainter *painter, const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QSize sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const; virtual QRect subElementRect(QStyle::SubElement element, const QStyleOption *option, const QWidget *widget) const; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const; virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl control, const QStyleOptionComplex *option, const QPoint &pos, const QWidget *widget = 0) const; virtual int styleHint(QStyle::StyleHint hint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget = 0) const; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const; virtual QPalette standardPalette() const; virtual void polish(QWidget *widget); virtual void polish(QPalette &pal /In,Out/); virtual void polish(QApplication *app); virtual void unpolish(QWidget *widget); virtual void unpolish(QApplication *app); protected: virtual bool event(QEvent *e); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5172884 PyQt6-6.6.1/sip/QtWidgets/qpushbutton.sip0000644000076500000240000000402514532160402017203 0ustar00philstaff// qpushbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QPushButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QPushButton(QWidget *parent /TransferThis/ = 0); QPushButton(const QString &text, QWidget *parent /TransferThis/ = 0); QPushButton(const QIcon &icon, const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QPushButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; bool autoDefault() const; void setAutoDefault(bool); bool isDefault() const; void setDefault(bool); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setFlat(bool); bool isFlat() const; public slots: void showMenu(); protected: virtual void initStyleOption(QStyleOptionButton *option) const; virtual bool event(QEvent *e) /ReleaseGIL/; virtual void paintEvent(QPaintEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual bool hitButton(const QPoint &pos) const; virtual void mouseMoveEvent(QMouseEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5202794 PyQt6-6.6.1/sip/QtWidgets/qpywidgets_qlist.sip0000644000076500000240000000553114532160402020226 0ustar00philstaff// This is the SIP interface definition for the QList based mapped types // specific to the QtWidgets module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %MappedType QList /TypeHintIn="Iterable[QWizard.WizardButton]", TypeHintOut="List[QWizard.WizardButton]", TypeHintValue="[]"/ { %TypeHeaderCode #include %End %ConvertFromTypeCode PyObject *l = PyList_New(sipCpp->size()); if (!l) return 0; for (int i = 0; i < sipCpp->size(); ++i) { PyObject *eobj = sipConvertFromEnum(sipCpp->at(i), sipType_QWizard_WizardButton); if (!eobj) { Py_DECREF(l); return 0; } PyList_SetItem(l, i, eobj); } return l; %End %ConvertToTypeCode PyObject *iter = PyObject_GetIter(sipPy); if (!sipIsErr) { PyErr_Clear(); Py_XDECREF(iter); return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); } if (!iter) { *sipIsErr = 1; return 0; } QList *ql = new QList; for (Py_ssize_t i = 0; ; ++i) { PyErr_Clear(); PyObject *itm = PyIter_Next(iter); if (!itm) { if (PyErr_Occurred()) { delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } break; } int v = sipConvertToEnum(itm, sipType_QWizard_WizardButton); if (PyErr_Occurred()) { PyErr_Format(PyExc_TypeError, "index %zd has type '%s' but 'QWizard.WizardButton' is expected", i, sipPyTypeName(Py_TYPE(itm))); Py_DECREF(itm); delete ql; Py_DECREF(iter); *sipIsErr = 1; return 0; } ql->append(static_cast(v)); Py_DECREF(itm); } Py_DECREF(iter); *sipCppPtr = ql; return sipGetState(sipTransferObj); %End }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.534095 PyQt6-6.6.1/sip/QtWidgets/qradiobutton.sip0000644000076500000240000000302314532160402017317 0ustar00philstaff// qradiobutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRadioButton : QAbstractButton { %TypeHeaderCode #include %End public: explicit QRadioButton(QWidget *parent /TransferThis/ = 0); QRadioButton(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QRadioButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; protected: virtual void initStyleOption(QStyleOptionButton *button) const; virtual bool hitButton(const QPoint &) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5124133 PyQt6-6.6.1/sip/QtWidgets/qrubberband.sip0000644000076500000240000000340214532160402017074 0ustar00philstaff// qrubberband.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QRubberBand : QWidget { %TypeHeaderCode #include %End public: enum Shape { Line, Rectangle, }; QRubberBand(QRubberBand::Shape, QWidget *parent /TransferThis/ = 0); virtual ~QRubberBand(); QRubberBand::Shape shape() const; void setGeometry(const QRect &r); void setGeometry(int ax, int ay, int aw, int ah); void move(const QPoint &p); void move(int ax, int ay); void resize(int w, int h); void resize(const QSize &s); protected: virtual void initStyleOption(QStyleOptionRubberBand *option) const; virtual bool event(QEvent *e); virtual void paintEvent(QPaintEvent *); virtual void changeEvent(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void moveEvent(QMoveEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5273676 PyQt6-6.6.1/sip/QtWidgets/qscrollarea.sip0000644000076500000240000000354714532160402017127 0ustar00philstaff// qscrollarea.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollArea : QAbstractScrollArea { %TypeHeaderCode #include %End public: explicit QScrollArea(QWidget *parent /TransferThis/ = 0); virtual ~QScrollArea(); QWidget *widget() const; void setWidget(QWidget *w /Transfer/); QWidget *takeWidget() /TransferBack/; bool widgetResizable() const; void setWidgetResizable(bool resizable); Qt::Alignment alignment() const; void setAlignment(Qt::Alignment); virtual QSize sizeHint() const; virtual bool focusNextPrevChild(bool next); void ensureVisible(int x, int y, int xMargin = 50, int yMargin = 50); void ensureWidgetVisible(QWidget *childWidget, int xMargin = 50, int yMargin = 50); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void scrollContentsBy(int dx, int dy); virtual QSize viewportSizeHint() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4685524 PyQt6-6.6.1/sip/QtWidgets/qscrollbar.sip0000644000076500000240000000335514532160401016757 0ustar00philstaff// qscrollbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollBar : QAbstractSlider { %TypeHeaderCode #include %End public: explicit QScrollBar(QWidget *parent /TransferThis/ = 0); QScrollBar(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QScrollBar(); virtual QSize sizeHint() const; virtual bool event(QEvent *event); protected: virtual void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void hideEvent(QHideEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void wheelEvent(QWheelEvent *); virtual void sliderChange(QAbstractSlider::SliderChange change); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4975579 PyQt6-6.6.1/sip/QtWidgets/qscroller.sip0000644000076500000240000000552014532160401016615 0ustar00philstaff// qscroller.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScroller : QObject { %TypeHeaderCode #include %End public: enum State { Inactive, Pressed, Dragging, Scrolling, }; enum ScrollerGestureType { TouchGesture, LeftMouseButtonGesture, RightMouseButtonGesture, MiddleMouseButtonGesture, }; enum Input { InputPress, InputMove, InputRelease, }; static bool hasScroller(QObject *target); static QScroller *scroller(QObject *target); static Qt::GestureType grabGesture(QObject *target, QScroller::ScrollerGestureType scrollGestureType = QScroller::TouchGesture); static Qt::GestureType grabbedGesture(QObject *target); static void ungrabGesture(QObject *target); static QList activeScrollers(); QObject *target() const; QScroller::State state() const; bool handleInput(QScroller::Input input, const QPointF &position, qint64 timestamp = 0); void stop(); QPointF velocity() const; QPointF finalPosition() const; QPointF pixelPerMeter() const; QScrollerProperties scrollerProperties() const; void setSnapPositionsX(const QList &positions); void setSnapPositionsX(qreal first, qreal interval); void setSnapPositionsY(const QList &positions); void setSnapPositionsY(qreal first, qreal interval); public slots: void setScrollerProperties(const QScrollerProperties &prop); void scrollTo(const QPointF &pos); void scrollTo(const QPointF &pos, int scrollTime); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin); void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime); void resendPrepareEvent(); signals: void stateChanged(QScroller::State newstate); void scrollerPropertiesChanged(const QScrollerProperties &); private: QScroller(QObject *target); virtual ~QScroller(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5067475 PyQt6-6.6.1/sip/QtWidgets/qscrollerproperties.sip0000644000076500000240000000466514532160402020744 0ustar00philstaff// qscrollerproperties.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QScrollerProperties { %TypeHeaderCode #include %End public: QScrollerProperties(); QScrollerProperties(const QScrollerProperties &sp); virtual ~QScrollerProperties(); bool operator==(const QScrollerProperties &sp) const; bool operator!=(const QScrollerProperties &sp) const; static void setDefaultScrollerProperties(const QScrollerProperties &sp); static void unsetDefaultScrollerProperties(); enum OvershootPolicy { OvershootWhenScrollable, OvershootAlwaysOff, OvershootAlwaysOn, }; enum FrameRates { Standard, Fps60, Fps30, Fps20, }; enum ScrollMetric { MousePressEventDelay, DragStartDistance, DragVelocitySmoothingFactor, AxisLockThreshold, ScrollingCurve, DecelerationFactor, MinimumVelocity, MaximumVelocity, MaximumClickThroughVelocity, AcceleratingFlickMaximumTime, AcceleratingFlickSpeedupFactor, SnapPositionRatio, SnapTime, OvershootDragResistanceFactor, OvershootDragDistanceFactor, OvershootScrollDistanceFactor, OvershootScrollTime, HorizontalOvershootPolicy, VerticalOvershootPolicy, FrameRate, ScrollMetricCount, }; QVariant scrollMetric(QScrollerProperties::ScrollMetric metric) const; void setScrollMetric(QScrollerProperties::ScrollMetric metric, const QVariant &value); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.487821 PyQt6-6.6.1/sip/QtWidgets/qsizegrip.sip0000644000076500000240000000315014532160401016621 0ustar00philstaff// qsizegrip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizeGrip : QWidget { %TypeHeaderCode #include %End public: explicit QSizeGrip(QWidget *parent /TransferThis/); virtual ~QSizeGrip(); virtual QSize sizeHint() const; virtual void setVisible(bool); protected: virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *mouseEvent); virtual void mouseMoveEvent(QMouseEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual bool event(QEvent *); virtual void moveEvent(QMoveEvent *moveEvent); virtual void showEvent(QShowEvent *showEvent); virtual void hideEvent(QHideEvent *hideEvent); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4932816 PyQt6-6.6.1/sip/QtWidgets/qsizepolicy.sip0000644000076500000240000000631014532160401017160 0ustar00philstaff// qsizepolicy.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSizePolicy { %TypeHeaderCode #include %End public: enum PolicyFlag /BaseType=IntFlag/ { GrowFlag, ExpandFlag, ShrinkFlag, IgnoreFlag, }; enum Policy { Fixed, Minimum, Maximum, Preferred, MinimumExpanding, Expanding, Ignored, }; QSizePolicy(); QSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical, QSizePolicy::ControlType type = QSizePolicy::DefaultType); QSizePolicy(const QVariant &variant /GetWrapper/) /NoDerived/; %MethodCode if (a0->canConvert()) sipCpp = new QSizePolicy(a0->value()); else sipError = sipBadCallableArg(0, a0Wrapper); %End QSizePolicy::Policy horizontalPolicy() const; QSizePolicy::Policy verticalPolicy() const; void setHorizontalPolicy(QSizePolicy::Policy d); void setVerticalPolicy(QSizePolicy::Policy d); Qt::Orientations expandingDirections() const; void setHeightForWidth(bool b); bool hasHeightForWidth() const; bool operator==(const QSizePolicy &s) const; bool operator!=(const QSizePolicy &s) const; int horizontalStretch() const; int verticalStretch() const; void setHorizontalStretch(int stretchFactor); void setVerticalStretch(int stretchFactor); void transpose(); QSizePolicy transposed() const; enum ControlType /BaseType=Flag/ { DefaultType, ButtonBox, CheckBox, ComboBox, Frame, GroupBox, Label, Line, LineEdit, PushButton, RadioButton, Slider, SpinBox, TabWidget, ToolButton, }; typedef QFlags ControlTypes; QSizePolicy::ControlType controlType() const; void setControlType(QSizePolicy::ControlType type); void setWidthForHeight(bool b); bool hasWidthForHeight() const; bool retainSizeWhenHidden() const; void setRetainSizeWhenHidden(bool retainSize); Py_hash_t __hash__() const; %MethodCode sipRes = qHash(*sipCpp); %End }; QDataStream &operator<<(QDataStream &, const QSizePolicy &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QSizePolicy & /Constrained/) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5310993 PyQt6-6.6.1/sip/QtWidgets/qslider.sip0000644000076500000240000000360114532160402016251 0ustar00philstaff// qslider.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSlider : QAbstractSlider { %TypeHeaderCode #include %End public: enum TickPosition { NoTicks, TicksAbove, TicksLeft, TicksBelow, TicksRight, TicksBothSides, }; explicit QSlider(QWidget *parent /TransferThis/ = 0); QSlider(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSlider(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setTickPosition(QSlider::TickPosition position); QSlider::TickPosition tickPosition() const; void setTickInterval(int ti); int tickInterval() const; virtual bool event(QEvent *event); protected: virtual void initStyleOption(QStyleOptionSlider *option) const; virtual void paintEvent(QPaintEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.515405 PyQt6-6.6.1/sip/QtWidgets/qspinbox.sip0000644000076500000240000000634514532160402016461 0ustar00philstaff// qspinbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QSpinBox(); int value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; int singleStep() const; void setSingleStep(int val); int minimum() const; void setMinimum(int min); int maximum() const; void setMaximum(int max); void setRange(int min, int max); protected: virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual int valueFromText(const QString &text) const; virtual QString textFromValue(int v) const; virtual void fixup(QString &str /In,Out/) const; virtual bool event(QEvent *e); public slots: void setValue(int val); signals: void valueChanged(int); void textChanged(const QString &); public: int displayIntegerBase() const; void setDisplayIntegerBase(int base); QAbstractSpinBox::StepType stepType() const; void setStepType(QAbstractSpinBox::StepType stepType); }; class QDoubleSpinBox : QAbstractSpinBox { %TypeHeaderCode #include %End public: explicit QDoubleSpinBox(QWidget *parent /TransferThis/ = 0); virtual ~QDoubleSpinBox(); double value() const; QString prefix() const; void setPrefix(const QString &p); QString suffix() const; void setSuffix(const QString &s); QString cleanText() const; double singleStep() const; void setSingleStep(double val); double minimum() const; void setMinimum(double min); double maximum() const; void setMaximum(double max); void setRange(double min, double max); int decimals() const; void setDecimals(int prec); virtual QValidator::State validate(QString &input /In,Out/, int &pos /In,Out/) const; virtual double valueFromText(const QString &text) const; virtual QString textFromValue(double v) const; virtual void fixup(QString &str /In,Out/) const; public slots: void setValue(double val); signals: void valueChanged(double); void textChanged(const QString &); public: QAbstractSpinBox::StepType stepType() const; void setStepType(QAbstractSpinBox::StepType stepType); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4840128 PyQt6-6.6.1/sip/QtWidgets/qsplashscreen.sip0000644000076500000240000000340614532160401017463 0ustar00philstaff// qsplashscreen.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplashScreen : QWidget { %TypeHeaderCode #include %End public: QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = Qt::WindowFlags()); QSplashScreen(QScreen *screen, const QPixmap &pixmap = QPixmap(), Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QSplashScreen(); void setPixmap(const QPixmap &pixmap); const QPixmap pixmap() const; void finish(QWidget *w); void repaint(); QString message() const; public slots: void showMessage(const QString &message, int alignment = Qt::AlignLeft, const QColor &color = Qt::black); void clearMessage(); signals: void messageChanged(const QString &message); protected: virtual void drawContents(QPainter *painter); virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5269115 PyQt6-6.6.1/sip/QtWidgets/qsplitter.sip0000644000076500000240000000654514532160402016647 0ustar00philstaff// qsplitter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSplitter : QFrame { %TypeHeaderCode #include %End public: explicit QSplitter(QWidget *parent /TransferThis/ = 0); QSplitter(Qt::Orientation orientation, QWidget *parent /TransferThis/ = 0); virtual ~QSplitter(); void addWidget(QWidget *widget /Transfer/); void insertWidget(int index, QWidget *widget /Transfer/); void setOrientation(Qt::Orientation); Qt::Orientation orientation() const; void setChildrenCollapsible(bool); bool childrenCollapsible() const; void setCollapsible(int index, bool); bool isCollapsible(int index) const; void setOpaqueResize(bool opaque = true); bool opaqueResize() const; void refresh(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QList sizes() const; void setSizes(const QList &list); QByteArray saveState() const; bool restoreState(const QByteArray &state); int handleWidth() const; void setHandleWidth(int); int indexOf(QWidget *w) const; QWidget *widget(int index) const; int count() const /__len__/; void getRange(int index, int *, int *) const; QSplitterHandle *handle(int index) const /Transfer/; void setStretchFactor(int index, int stretch); QWidget *replaceWidget(int index, QWidget *widget /Transfer/) /TransferBack/; signals: void splitterMoved(int pos, int index); protected: virtual QSplitterHandle *createHandle() /Transfer/; virtual void childEvent(QChildEvent *); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void changeEvent(QEvent *); void moveSplitter(int pos, int index); void setRubberBand(int position); int closestLegalPosition(int, int); }; class QSplitterHandle : QWidget { %TypeHeaderCode #include %End public: QSplitterHandle(Qt::Orientation o, QSplitter *parent /TransferThis/); virtual ~QSplitterHandle(); void setOrientation(Qt::Orientation o); Qt::Orientation orientation() const; bool opaqueResize() const; QSplitter *splitter() const; virtual QSize sizeHint() const; protected: virtual void paintEvent(QPaintEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual bool event(QEvent *); void moveSplitter(int p); int closestLegalPosition(int p); virtual void resizeEvent(QResizeEvent *); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.519518 PyQt6-6.6.1/sip/QtWidgets/qstackedlayout.sip0000644000076500000240000000710314532160402017644 0ustar00philstaff// qstackedlayout.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedLayout : QLayout { %TypeHeaderCode #include %End public: enum StackingMode { StackOne, StackAll, }; QStackedLayout(); explicit QStackedLayout(QWidget *parent /TransferThis/); explicit QStackedLayout(QLayout *parentLayout /TransferThis/); virtual ~QStackedLayout(); int addWidget(QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->addWidget(a0); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a0Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows addWidget(QWidget()). sipTransferTo(a0Wrapper, sipSelf); } %End int insertWidget(int index, QWidget *w /GetWrapper/); %MethodCode Py_BEGIN_ALLOW_THREADS sipRes = sipCpp->insertWidget(a0, a1); Py_END_ALLOW_THREADS // The layout's parent widget (if there is one) will now have ownership. QWidget *parent = sipCpp->parentWidget(); if (parent) { PyObject *py_parent = sipGetPyObject(parent, sipType_QWidget); if (py_parent) sipTransferTo(a1Wrapper, py_parent); } else { // For now give the Python ownership to the layout. This maintains // compatibility with previous versions and allows insertWidget(QWidget()). sipTransferTo(a1Wrapper, sipSelf); } %End QWidget *currentWidget() const; int currentIndex() const; QWidget *widget(int) const; virtual int count() const; virtual void addItem(QLayoutItem *item /Transfer/); virtual QSize sizeHint() const; virtual QSize minimumSize() const; virtual QLayoutItem *itemAt(int) const; virtual QLayoutItem *takeAt(int) /TransferBack/; virtual void setGeometry(const QRect &rect); signals: void widgetRemoved(int index); void currentChanged(int index); public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); public: QStackedLayout::StackingMode stackingMode() const; void setStackingMode(QStackedLayout::StackingMode stackingMode); virtual bool hasHeightForWidth() const; virtual int heightForWidth(int width) const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5381913 PyQt6-6.6.1/sip/QtWidgets/qstackedwidget.sip0000644000076500000240000000317614532160402017620 0ustar00philstaff// qstackedwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStackedWidget : QFrame { %TypeHeaderCode #include %End public: explicit QStackedWidget(QWidget *parent /TransferThis/ = 0); virtual ~QStackedWidget(); int addWidget(QWidget *w /Transfer/); int insertWidget(int index, QWidget *w /Transfer/); void removeWidget(QWidget *w); QWidget *currentWidget() const; int currentIndex() const; int indexOf(const QWidget *) const; QWidget *widget(int) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *w); signals: void currentChanged(int); void widgetRemoved(int index); protected: virtual bool event(QEvent *e); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.485409 PyQt6-6.6.1/sip/QtWidgets/qstatusbar.sip0000644000076500000240000000364414532160401017005 0ustar00philstaff// qstatusbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStatusBar : QWidget { %TypeHeaderCode #include %End public: explicit QStatusBar(QWidget *parent /TransferThis/ = 0); virtual ~QStatusBar(); void addWidget(QWidget *widget /Transfer/, int stretch = 0); void addPermanentWidget(QWidget *widget /Transfer/, int stretch = 0); void removeWidget(QWidget *widget); void setSizeGripEnabled(bool); bool isSizeGripEnabled() const; QString currentMessage() const; int insertWidget(int index, QWidget *widget /Transfer/, int stretch = 0); int insertPermanentWidget(int index, QWidget *widget /Transfer/, int stretch = 0); public slots: void showMessage(const QString &message, int msecs = 0); void clearMessage(); signals: void messageChanged(const QString &text); protected: virtual void paintEvent(QPaintEvent *); virtual void resizeEvent(QResizeEvent *); void reformat(); void hideOrShow(); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.471593 PyQt6-6.6.1/sip/QtWidgets/qstyle.sip0000644000076500000240000005405714532160401016141 0ustar00philstaff// qstyle.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyle : QObject { %TypeHeaderCode #include %End public: QStyle(); virtual ~QStyle(); virtual void polish(QWidget *); virtual void unpolish(QWidget *); virtual void polish(QApplication *); virtual void unpolish(QApplication *); virtual void polish(QPalette & /In,Out/); virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; virtual void drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; virtual QPalette standardPalette() const; enum StateFlag /BaseType=Flag/ { State_None, State_Enabled, State_Raised, State_Sunken, State_Off, State_NoChange, State_On, State_DownArrow, State_Horizontal, State_HasFocus, State_Top, State_Bottom, State_FocusAtBorder, State_AutoRaise, State_MouseOver, State_UpArrow, State_Selected, State_Active, State_Open, State_Children, State_Item, State_Sibling, State_Editing, State_KeyboardFocusChange, State_ReadOnly, State_Window, State_Small, State_Mini, }; typedef QFlags State; enum PrimitiveElement /BaseType=UIntEnum/ { PE_Frame, PE_FrameDefaultButton, PE_FrameDockWidget, PE_FrameFocusRect, PE_FrameGroupBox, PE_FrameLineEdit, PE_FrameMenu, PE_FrameTabWidget, PE_FrameWindow, PE_FrameButtonBevel, PE_FrameButtonTool, PE_FrameTabBarBase, PE_PanelButtonCommand, PE_PanelButtonBevel, PE_PanelButtonTool, PE_PanelMenuBar, PE_PanelToolBar, PE_PanelLineEdit, PE_IndicatorArrowDown, PE_IndicatorArrowLeft, PE_IndicatorArrowRight, PE_IndicatorArrowUp, PE_IndicatorBranch, PE_IndicatorButtonDropDown, PE_IndicatorCheckBox, PE_IndicatorDockWidgetResizeHandle, PE_IndicatorHeaderArrow, PE_IndicatorMenuCheckMark, PE_IndicatorProgressChunk, PE_IndicatorRadioButton, PE_IndicatorSpinDown, PE_IndicatorSpinMinus, PE_IndicatorSpinPlus, PE_IndicatorSpinUp, PE_IndicatorToolBarHandle, PE_IndicatorToolBarSeparator, PE_PanelTipLabel, PE_IndicatorTabTear, PE_PanelScrollAreaCorner, PE_Widget, PE_IndicatorColumnViewArrow, PE_FrameStatusBarItem, PE_IndicatorItemViewItemCheck, PE_IndicatorItemViewItemDrop, PE_PanelItemViewItem, PE_PanelItemViewRow, PE_PanelStatusBar, PE_IndicatorTabClose, PE_PanelMenu, PE_IndicatorTabTearLeft, PE_IndicatorTabTearRight, PE_CustomBase, }; virtual void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum ControlElement /BaseType=UIntEnum/ { CE_PushButton, CE_PushButtonBevel, CE_PushButtonLabel, CE_CheckBox, CE_CheckBoxLabel, CE_RadioButton, CE_RadioButtonLabel, CE_TabBarTab, CE_TabBarTabShape, CE_TabBarTabLabel, CE_ProgressBar, CE_ProgressBarGroove, CE_ProgressBarContents, CE_ProgressBarLabel, CE_MenuItem, CE_MenuScroller, CE_MenuVMargin, CE_MenuHMargin, CE_MenuTearoff, CE_MenuEmptyArea, CE_MenuBarItem, CE_MenuBarEmptyArea, CE_ToolButtonLabel, CE_Header, CE_HeaderSection, CE_HeaderLabel, CE_ToolBoxTab, CE_SizeGrip, CE_Splitter, CE_RubberBand, CE_DockWidgetTitle, CE_ScrollBarAddLine, CE_ScrollBarSubLine, CE_ScrollBarAddPage, CE_ScrollBarSubPage, CE_ScrollBarSlider, CE_ScrollBarFirst, CE_ScrollBarLast, CE_FocusFrame, CE_ComboBoxLabel, CE_ToolBar, CE_ToolBoxTabShape, CE_ToolBoxTabLabel, CE_HeaderEmptyArea, CE_ColumnViewGrip, CE_ItemViewItem, CE_ShapedFrame, CE_CustomBase, }; virtual void drawControl(QStyle::ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *widget = 0) const = 0; enum SubElement /BaseType=UIntEnum/ { SE_PushButtonContents, SE_PushButtonFocusRect, SE_CheckBoxIndicator, SE_CheckBoxContents, SE_CheckBoxFocusRect, SE_CheckBoxClickRect, SE_RadioButtonIndicator, SE_RadioButtonContents, SE_RadioButtonFocusRect, SE_RadioButtonClickRect, SE_ComboBoxFocusRect, SE_SliderFocusRect, SE_ProgressBarGroove, SE_ProgressBarContents, SE_ProgressBarLabel, SE_ToolBoxTabContents, SE_HeaderLabel, SE_HeaderArrow, SE_TabWidgetTabBar, SE_TabWidgetTabPane, SE_TabWidgetTabContents, SE_TabWidgetLeftCorner, SE_TabWidgetRightCorner, SE_TabBarTearIndicator, SE_TreeViewDisclosureItem, SE_LineEditContents, SE_FrameContents, SE_DockWidgetCloseButton, SE_DockWidgetFloatButton, SE_DockWidgetTitleBarText, SE_DockWidgetIcon, SE_CheckBoxLayoutItem, SE_ComboBoxLayoutItem, SE_DateTimeEditLayoutItem, SE_LabelLayoutItem, SE_ProgressBarLayoutItem, SE_PushButtonLayoutItem, SE_RadioButtonLayoutItem, SE_SliderLayoutItem, SE_SpinBoxLayoutItem, SE_ToolButtonLayoutItem, SE_FrameLayoutItem, SE_GroupBoxLayoutItem, SE_TabWidgetLayoutItem, SE_ItemViewItemCheckIndicator, SE_ItemViewItemDecoration, SE_ItemViewItemText, SE_ItemViewItemFocusRect, SE_TabBarTabLeftButton, SE_TabBarTabRightButton, SE_TabBarTabText, SE_ShapedFrameContents, SE_ToolBarHandle, SE_TabBarTearIndicatorLeft, SE_TabBarScrollLeftButton, SE_TabBarScrollRightButton, SE_TabBarTearIndicatorRight, SE_PushButtonBevel, SE_CustomBase, }; virtual QRect subElementRect(QStyle::SubElement subElement, const QStyleOption *option, const QWidget *widget = 0) const = 0; enum ComplexControl /BaseType=UIntEnum/ { CC_SpinBox, CC_ComboBox, CC_ScrollBar, CC_Slider, CC_ToolButton, CC_TitleBar, CC_Dial, CC_GroupBox, CC_MdiControls, CC_CustomBase, }; enum SubControl /BaseType=Flag/ { SC_None, SC_ScrollBarAddLine, SC_ScrollBarSubLine, SC_ScrollBarAddPage, SC_ScrollBarSubPage, SC_ScrollBarFirst, SC_ScrollBarLast, SC_ScrollBarSlider, SC_ScrollBarGroove, SC_SpinBoxUp, SC_SpinBoxDown, SC_SpinBoxFrame, SC_SpinBoxEditField, SC_ComboBoxFrame, SC_ComboBoxEditField, SC_ComboBoxArrow, SC_ComboBoxListBoxPopup, SC_SliderGroove, SC_SliderHandle, SC_SliderTickmarks, SC_ToolButton, SC_ToolButtonMenu, SC_TitleBarSysMenu, SC_TitleBarMinButton, SC_TitleBarMaxButton, SC_TitleBarCloseButton, SC_TitleBarNormalButton, SC_TitleBarShadeButton, SC_TitleBarUnshadeButton, SC_TitleBarContextHelpButton, SC_TitleBarLabel, SC_DialGroove, SC_DialHandle, SC_DialTickmarks, SC_GroupBoxCheckBox, SC_GroupBoxLabel, SC_GroupBoxContents, SC_GroupBoxFrame, SC_MdiMinButton, SC_MdiNormalButton, SC_MdiCloseButton, SC_CustomBase, SC_All, }; typedef QFlags SubControls; virtual void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget = 0) const = 0; virtual QStyle::SubControl hitTestComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget = 0) const = 0; virtual QRect subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget = 0) const = 0; enum PixelMetric /BaseType=UIntEnum/ { PM_ButtonMargin, PM_ButtonDefaultIndicator, PM_MenuButtonIndicator, PM_ButtonShiftHorizontal, PM_ButtonShiftVertical, PM_DefaultFrameWidth, PM_SpinBoxFrameWidth, PM_ComboBoxFrameWidth, PM_MaximumDragDistance, PM_ScrollBarExtent, PM_ScrollBarSliderMin, PM_SliderThickness, PM_SliderControlThickness, PM_SliderLength, PM_SliderTickmarkOffset, PM_SliderSpaceAvailable, PM_DockWidgetSeparatorExtent, PM_DockWidgetHandleExtent, PM_DockWidgetFrameWidth, PM_TabBarTabOverlap, PM_TabBarTabHSpace, PM_TabBarTabVSpace, PM_TabBarBaseHeight, PM_TabBarBaseOverlap, PM_ProgressBarChunkWidth, PM_SplitterWidth, PM_TitleBarHeight, PM_MenuScrollerHeight, PM_MenuHMargin, PM_MenuVMargin, PM_MenuPanelWidth, PM_MenuTearoffHeight, PM_MenuDesktopFrameWidth, PM_MenuBarPanelWidth, PM_MenuBarItemSpacing, PM_MenuBarVMargin, PM_MenuBarHMargin, PM_IndicatorWidth, PM_IndicatorHeight, PM_ExclusiveIndicatorWidth, PM_ExclusiveIndicatorHeight, PM_DialogButtonsSeparator, PM_DialogButtonsButtonWidth, PM_DialogButtonsButtonHeight, PM_MdiSubWindowFrameWidth, PM_MdiSubWindowMinimizedWidth, PM_HeaderMargin, PM_HeaderMarkSize, PM_HeaderGripMargin, PM_TabBarTabShiftHorizontal, PM_TabBarTabShiftVertical, PM_TabBarScrollButtonWidth, PM_ToolBarFrameWidth, PM_ToolBarHandleExtent, PM_ToolBarItemSpacing, PM_ToolBarItemMargin, PM_ToolBarSeparatorExtent, PM_ToolBarExtensionExtent, PM_SpinBoxSliderHeight, PM_ToolBarIconSize, PM_ListViewIconSize, PM_IconViewIconSize, PM_SmallIconSize, PM_LargeIconSize, PM_FocusFrameVMargin, PM_FocusFrameHMargin, PM_ToolTipLabelFrameWidth, PM_CheckBoxLabelSpacing, PM_TabBarIconSize, PM_SizeGripSize, PM_DockWidgetTitleMargin, PM_MessageBoxIconSize, PM_ButtonIconSize, PM_DockWidgetTitleBarButtonMargin, PM_RadioButtonLabelSpacing, PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin, PM_LayoutBottomMargin, PM_LayoutHorizontalSpacing, PM_LayoutVerticalSpacing, PM_TabBar_ScrollButtonOverlap, PM_TextCursorWidth, PM_TabCloseIndicatorWidth, PM_TabCloseIndicatorHeight, PM_ScrollView_ScrollBarSpacing, PM_SubMenuOverlap, PM_ScrollView_ScrollBarOverlap, PM_TreeViewIndentation, PM_HeaderDefaultSectionSizeHorizontal, PM_HeaderDefaultSectionSizeVertical, PM_TitleBarButtonIconSize, PM_TitleBarButtonSize, %If (Qt_6_2_0 -) PM_LineEditIconSize, %End %If (Qt_6_3_0 -) PM_LineEditIconMargin, %End PM_CustomBase, }; virtual int pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; enum ContentsType /BaseType=UIntEnum/ { CT_PushButton, CT_CheckBox, CT_RadioButton, CT_ToolButton, CT_ComboBox, CT_Splitter, CT_ProgressBar, CT_MenuItem, CT_MenuBarItem, CT_MenuBar, CT_Menu, CT_TabBarTab, CT_Slider, CT_ScrollBar, CT_LineEdit, CT_SpinBox, CT_SizeGrip, CT_TabWidget, CT_DialogButtons, CT_HeaderSection, CT_GroupBox, CT_MdiControls, CT_ItemViewItem, CT_CustomBase, }; virtual QSize sizeFromContents(QStyle::ContentsType ct, const QStyleOption *opt, const QSize &contentsSize, const QWidget *widget = 0) const = 0; enum StyleHint /BaseType=UIntEnum/ { SH_EtchDisabledText, SH_DitherDisabledText, SH_ScrollBar_MiddleClickAbsolutePosition, SH_ScrollBar_ScrollWhenPointerLeavesControl, SH_TabBar_SelectMouseType, SH_TabBar_Alignment, SH_Header_ArrowAlignment, SH_Slider_SnapToValue, SH_Slider_SloppyKeyEvents, SH_ProgressDialog_CenterCancelButton, SH_ProgressDialog_TextLabelAlignment, SH_PrintDialog_RightAlignButtons, SH_MainWindow_SpaceBelowMenuBar, SH_FontDialog_SelectAssociatedText, SH_Menu_AllowActiveAndDisabled, SH_Menu_SpaceActivatesItem, SH_Menu_SubMenuPopupDelay, SH_ScrollView_FrameOnlyAroundContents, SH_MenuBar_AltKeyNavigation, SH_ComboBox_ListMouseTracking, SH_Menu_MouseTracking, SH_MenuBar_MouseTracking, SH_ItemView_ChangeHighlightOnFocus, SH_Widget_ShareActivation, SH_Workspace_FillSpaceOnMaximize, SH_ComboBox_Popup, SH_TitleBar_NoBorder, SH_BlinkCursorWhenTextSelected, SH_RichText_FullWidthSelection, SH_Menu_Scrollable, SH_GroupBox_TextLabelVerticalAlignment, SH_GroupBox_TextLabelColor, SH_Menu_SloppySubMenus, SH_Table_GridLineColor, SH_LineEdit_PasswordCharacter, SH_DialogButtons_DefaultButton, SH_ToolBox_SelectedPageTitleBold, SH_TabBar_PreferNoArrows, SH_ScrollBar_LeftClickAbsolutePosition, SH_UnderlineShortcut, SH_SpinBox_AnimateButton, SH_SpinBox_KeyPressAutoRepeatRate, SH_SpinBox_ClickAutoRepeatRate, SH_Menu_FillScreenWithScroll, SH_ToolTipLabel_Opacity, SH_DrawMenuBarSeparator, SH_TitleBar_ModifyNotification, SH_Button_FocusPolicy, SH_MessageBox_UseBorderForButtonSpacing, SH_TitleBar_AutoRaise, SH_ToolButton_PopupDelay, SH_FocusFrame_Mask, SH_RubberBand_Mask, SH_WindowFrame_Mask, SH_SpinControls_DisableOnBounds, SH_Dial_BackgroundRole, SH_ComboBox_LayoutDirection, SH_ItemView_EllipsisLocation, SH_ItemView_ShowDecorationSelected, SH_ItemView_ActivateItemOnSingleClick, SH_ScrollBar_ContextMenu, SH_ScrollBar_RollBetweenButtons, SH_Slider_StopMouseOverSlider, SH_Slider_AbsoluteSetButtons, SH_Slider_PageSetButtons, SH_Menu_KeyboardSearch, SH_TabBar_ElideMode, SH_DialogButtonLayout, SH_ComboBox_PopupFrameStyle, SH_MessageBox_TextInteractionFlags, SH_DialogButtonBox_ButtonsHaveIcons, SH_MessageBox_CenterButtons, SH_Menu_SelectionWrap, SH_ItemView_MovementWithoutUpdatingSelection, SH_ToolTip_Mask, SH_FocusFrame_AboveWidget, SH_TextControl_FocusIndicatorTextCharFormat, SH_WizardStyle, SH_ItemView_ArrowKeysNavigateIntoChildren, SH_Menu_Mask, SH_Menu_FlashTriggeredItem, SH_Menu_FadeOutOnHide, SH_SpinBox_ClickAutoRepeatThreshold, SH_ItemView_PaintAlternatingRowColorsForEmptyArea, SH_FormLayoutWrapPolicy, SH_TabWidget_DefaultTabPosition, SH_ToolBar_Movable, SH_FormLayoutFieldGrowthPolicy, SH_FormLayoutFormAlignment, SH_FormLayoutLabelAlignment, SH_ItemView_DrawDelegateFrame, SH_TabBar_CloseButtonPosition, SH_DockWidget_ButtonsHaveFrame, SH_ToolButtonStyle, SH_RequestSoftwareInputPanel, SH_ListViewExpand_SelectMouseType, SH_ScrollBar_Transient, SH_Menu_SupportsSections, SH_ToolTip_WakeUpDelay, SH_ToolTip_FallAsleepDelay, SH_Widget_Animate, SH_Splitter_OpaqueResize, SH_LineEdit_PasswordMaskDelay, SH_TabBar_ChangeCurrentDelay, SH_Menu_SubMenuUniDirection, SH_Menu_SubMenuUniDirectionFailCount, SH_Menu_SubMenuSloppySelectOtherActions, SH_Menu_SubMenuSloppyCloseTimeout, SH_Menu_SubMenuResetWhenReenteringParent, SH_Menu_SubMenuDontStartSloppyOnLeave, SH_ItemView_ScrollMode, SH_TitleBar_ShowToolTipsOnButtons, SH_Widget_Animation_Duration, SH_ComboBox_AllowWheelScrolling, SH_SpinBox_ButtonsInsideFrame, SH_SpinBox_StepModifier, %If (Qt_6_1_0 -) SH_TabBar_AllowWheelScrolling, %End %If (Qt_6_3_0 -) SH_Table_AlwaysDrawLeftTopGridLines, %End %If (Qt_6_3_0 -) SH_SpinBox_SelectOnStep, %End SH_CustomBase, }; virtual int styleHint(QStyle::StyleHint stylehint, const QStyleOption *option = 0, const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const = 0; enum StandardPixmap /BaseType=UIntEnum/ { SP_TitleBarMenuButton, SP_TitleBarMinButton, SP_TitleBarMaxButton, SP_TitleBarCloseButton, SP_TitleBarNormalButton, SP_TitleBarShadeButton, SP_TitleBarUnshadeButton, SP_TitleBarContextHelpButton, SP_DockWidgetCloseButton, SP_MessageBoxInformation, SP_MessageBoxWarning, SP_MessageBoxCritical, SP_MessageBoxQuestion, SP_DesktopIcon, SP_TrashIcon, SP_ComputerIcon, SP_DriveFDIcon, SP_DriveHDIcon, SP_DriveCDIcon, SP_DriveDVDIcon, SP_DriveNetIcon, SP_DirOpenIcon, SP_DirClosedIcon, SP_DirLinkIcon, SP_FileIcon, SP_FileLinkIcon, SP_ToolBarHorizontalExtensionButton, SP_ToolBarVerticalExtensionButton, SP_FileDialogStart, SP_FileDialogEnd, SP_FileDialogToParent, SP_FileDialogNewFolder, SP_FileDialogDetailedView, SP_FileDialogInfoView, SP_FileDialogContentsView, SP_FileDialogListView, SP_FileDialogBack, SP_DirIcon, SP_DialogOkButton, SP_DialogCancelButton, SP_DialogHelpButton, SP_DialogOpenButton, SP_DialogSaveButton, SP_DialogCloseButton, SP_DialogApplyButton, SP_DialogResetButton, SP_DialogDiscardButton, SP_DialogYesButton, SP_DialogNoButton, SP_ArrowUp, SP_ArrowDown, SP_ArrowLeft, SP_ArrowRight, SP_ArrowBack, SP_ArrowForward, SP_DirHomeIcon, SP_CommandLink, SP_VistaShield, SP_BrowserReload, SP_BrowserStop, SP_MediaPlay, SP_MediaStop, SP_MediaPause, SP_MediaSkipForward, SP_MediaSkipBackward, SP_MediaSeekForward, SP_MediaSeekBackward, SP_MediaVolume, SP_MediaVolumeMuted, SP_DirLinkOpenIcon, SP_LineEditClearButton, SP_DialogYesToAllButton, SP_DialogNoToAllButton, SP_DialogSaveAllButton, SP_DialogAbortButton, SP_DialogRetryButton, SP_DialogIgnoreButton, SP_RestoreDefaultsButton, %If (Qt_6_3_0 -) SP_TabCloseButton, %End SP_CustomBase, }; virtual QPixmap standardPixmap(QStyle::StandardPixmap standardPixmap, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QIcon standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0; static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect); static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos); static int sliderPositionFromValue(int min, int max, int logicalValue, int span, bool upsideDown = false); static int sliderValueFromPosition(int min, int max, int position, int span, bool upsideDown = false); static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment); static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle); virtual int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option = 0, const QWidget *widget = 0) const = 0; int combinedLayoutSpacing(QSizePolicy::ControlTypes controls1, QSizePolicy::ControlTypes controls2, Qt::Orientation orientation, QStyleOption *option = 0, QWidget *widget = 0) const; enum RequestSoftwareInputPanel { RSIP_OnMouseClickAndAlreadyFocused, RSIP_OnMouseClick, }; const QStyle *proxy() const; %If (Qt_6_1_0 -) QString name() const; %End }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.52072 PyQt6-6.6.1/sip/QtWidgets/qstyleditemdelegate.sip0000644000076500000240000000457214532160402020655 0ustar00philstaff// qstyleditemdelegate.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyledItemDelegate : QAbstractItemDelegate { %TypeHeaderCode #include %End public: explicit QStyledItemDelegate(QObject *parent /TransferThis/ = 0); virtual ~QStyledItemDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; virtual QWidget *createEditor(QWidget *parent /TransferThis/, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const /Factory/; virtual void setEditorData(QWidget *editor, const QModelIndex &index) const; virtual void setModelData(QWidget *editor, QAbstractItemModel *model /KeepReference/, const QModelIndex &index) const; virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index) const; QItemEditorFactory *itemEditorFactory() const; void setItemEditorFactory(QItemEditorFactory *factory /KeepReference/); virtual QString displayText(const QVariant &value, const QLocale &locale) const; protected: virtual void initStyleOption(QStyleOptionViewItem *option, const QModelIndex &index) const; virtual bool eventFilter(QObject *object, QEvent *event); virtual bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option /NoCopy/, const QModelIndex &index); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4849415 PyQt6-6.6.1/sip/QtWidgets/qstylefactory.sip0000644000076500000240000000214214532160401017515 0ustar00philstaff// qstylefactory.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleFactory { %TypeHeaderCode #include %End public: static QStringList keys(); static QStyle *create(const QString &) /Factory/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5016973 PyQt6-6.6.1/sip/QtWidgets/qstyleoption.sip0000644000076500000240000004723514532160402017373 0ustar00philstaff// qstyleoption.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStyleOption { %TypeHeaderCode #include %End %ConvertToSubClassCode switch (sipCpp->type) { case QStyleOption::SO_Button: sipType = sipType_QStyleOptionButton; break; case QStyleOption::SO_ComboBox: sipType = sipType_QStyleOptionComboBox; break; case QStyleOption::SO_DockWidget: sipType = sipType_QStyleOptionDockWidget; break; case QStyleOption::SO_FocusRect: sipType = sipType_QStyleOptionFocusRect; break; case QStyleOption::SO_Frame: sipType = sipType_QStyleOptionFrame; break; case QStyleOption::SO_GraphicsItem: sipType = sipType_QStyleOptionGraphicsItem; break; case QStyleOption::SO_GroupBox: sipType = sipType_QStyleOptionGroupBox; break; case QStyleOption::SO_Header: sipType = sipType_QStyleOptionHeader; break; case QStyleOption::SO_MenuItem: sipType = sipType_QStyleOptionMenuItem; break; case QStyleOption::SO_ProgressBar: sipType = sipType_QStyleOptionProgressBar; break; case QStyleOption::SO_RubberBand: sipType = sipType_QStyleOptionRubberBand; break; case QStyleOption::SO_SizeGrip: sipType = sipType_QStyleOptionSizeGrip; break; case QStyleOption::SO_Slider: sipType = sipType_QStyleOptionSlider; break; case QStyleOption::SO_SpinBox: sipType = sipType_QStyleOptionSpinBox; break; case QStyleOption::SO_Tab: sipType = sipType_QStyleOptionTab; break; case QStyleOption::SO_TabBarBase: sipType = sipType_QStyleOptionTabBarBase; break; case QStyleOption::SO_TabWidgetFrame: sipType = sipType_QStyleOptionTabWidgetFrame; break; case QStyleOption::SO_TitleBar: sipType = sipType_QStyleOptionTitleBar; break; case QStyleOption::SO_ToolBar: sipType = sipType_QStyleOptionToolBar; break; case QStyleOption::SO_ToolBox: sipType = sipType_QStyleOptionToolBox; break; case QStyleOption::SO_ToolButton: sipType = sipType_QStyleOptionToolButton; break; case QStyleOption::SO_ViewItem: sipType = sipType_QStyleOptionViewItem; break; default: if ((sipCpp->type & QStyleOption::SO_ComplexCustomBase) == QStyleOption::SO_ComplexCustomBase) sipType = sipType_QStyleOptionComplex; else sipType = 0; } %End public: enum OptionType { SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem, SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame, SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_Complex, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox, SO_TitleBar, SO_GroupBox, SO_ComplexCustomBase, SO_GraphicsItem, SO_SizeGrip, SO_CustomBase, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int version; int type; QStyle::State state; Qt::LayoutDirection direction; QRect rect; QFontMetrics fontMetrics; QPalette palette; QObject *styleObject; QStyleOption(int version = QStyleOption::Version, int type = QStyleOption::SO_Default); QStyleOption(const QStyleOption &other); ~QStyleOption(); void initFrom(const QWidget *w); }; class QStyleOptionFocusRect : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QColor backgroundColor; QStyleOptionFocusRect(); QStyleOptionFocusRect(const QStyleOptionFocusRect &other); }; class QStyleOptionFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum FrameFeature /BaseType=Flag/ { None, Flat, Rounded, }; typedef QFlags FrameFeatures; QStyleOptionFrame::FrameFeatures features; QFrame::Shape frameShape; int lineWidth; int midLineWidth; QStyleOptionFrame(); QStyleOptionFrame(const QStyleOptionFrame &other); }; class QStyleOptionTabWidgetFrame : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int lineWidth; int midLineWidth; QTabBar::Shape shape; QSize tabBarSize; QSize rightCornerWidgetSize; QSize leftCornerWidgetSize; QRect tabBarRect; QRect selectedTabRect; QStyleOptionTabWidgetFrame(); QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other); }; class QStyleOptionTabBarBase : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QTabBar::Shape shape; QRect tabBarRect; QRect selectedTabRect; bool documentMode; QStyleOptionTabBarBase(); QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other); }; class QStyleOptionHeader : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum SectionPosition { Beginning, Middle, End, OnlyOneSection, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, NextAndPreviousAreSelected, }; enum SortIndicator { None, SortUp, SortDown, }; int section; QString text; Qt::Alignment textAlignment; QIcon icon; Qt::Alignment iconAlignment; QStyleOptionHeader::SectionPosition position; QStyleOptionHeader::SelectedPosition selectedPosition; QStyleOptionHeader::SortIndicator sortIndicator; Qt::Orientation orientation; QStyleOptionHeader(); QStyleOptionHeader(const QStyleOptionHeader &other); }; %If (Qt_6_1_0 -) class QStyleOptionHeaderV2 : QStyleOptionHeader { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleOptionHeaderV2(); QStyleOptionHeaderV2(const QStyleOptionHeaderV2 &other); Qt::TextElideMode textElideMode; bool isSectionDragTarget; }; %End class QStyleOptionButton : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ButtonFeature /BaseType=Flag/ { None, Flat, HasMenu, DefaultButton, AutoDefaultButton, CommandLinkButton, }; typedef QFlags ButtonFeatures; QStyleOptionButton::ButtonFeatures features; QString text; QIcon icon; QSize iconSize; QStyleOptionButton(); QStyleOptionButton(const QStyleOptionButton &other); }; class QStyleOptionTab : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum TabPosition { Beginning, Middle, End, OnlyOneTab, %If (Qt_6_6_0 -) Moving, %End }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; enum CornerWidget /BaseType=Flag/ { NoCornerWidgets, LeftCornerWidget, RightCornerWidget, }; typedef QFlags CornerWidgets; QTabBar::Shape shape; QString text; QIcon icon; int row; QStyleOptionTab::TabPosition position; QStyleOptionTab::SelectedPosition selectedPosition; QStyleOptionTab::CornerWidgets cornerWidgets; QSize iconSize; bool documentMode; QSize leftButtonSize; QSize rightButtonSize; enum TabFeature /BaseType=Flag/ { None, HasFrame, }; typedef QFlags TabFeatures; QStyleOptionTab::TabFeatures features; int tabIndex; QStyleOptionTab(); QStyleOptionTab(const QStyleOptionTab &other); }; class QStyleOptionProgressBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; int minimum; int maximum; int progress; QString text; Qt::Alignment textAlignment; bool textVisible; bool invertedAppearance; bool bottomToTop; QStyleOptionProgressBar(); QStyleOptionProgressBar(const QStyleOptionProgressBar &other); }; class QStyleOptionMenuItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin, EmptyArea, }; enum CheckType { NotCheckable, Exclusive, NonExclusive, }; QStyleOptionMenuItem::MenuItemType menuItemType; QStyleOptionMenuItem::CheckType checkType; bool checked; bool menuHasCheckableItems; QRect menuRect; QString text; QIcon icon; int maxIconWidth; QFont font; int reservedShortcutWidth; QStyleOptionMenuItem(); QStyleOptionMenuItem(const QStyleOptionMenuItem &other); }; class QStyleOptionDockWidget : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString title; bool closable; bool movable; bool floatable; bool verticalTitleBar; QStyleOptionDockWidget(); QStyleOptionDockWidget(const QStyleOptionDockWidget &other); }; class QStyleOptionViewItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum Position { Left, Right, Top, Bottom, }; Qt::Alignment displayAlignment; Qt::Alignment decorationAlignment; Qt::TextElideMode textElideMode; QStyleOptionViewItem::Position decorationPosition; QSize decorationSize; QFont font; bool showDecorationSelected; enum ViewItemFeature /BaseType=Flag/ { None, WrapText, Alternate, HasCheckIndicator, HasDisplay, HasDecoration, }; typedef QFlags ViewItemFeatures; QStyleOptionViewItem::ViewItemFeatures features; QLocale locale; const QWidget *widget; enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne, }; QModelIndex index; Qt::CheckState checkState; QIcon icon; QString text; QStyleOptionViewItem::ViewItemPosition viewItemPosition; QBrush backgroundBrush; QStyleOptionViewItem(); QStyleOptionViewItem(const QStyleOptionViewItem &other); }; class QStyleOptionToolBox : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; enum TabPosition { Beginning, Middle, End, OnlyOneTab, }; enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, }; QStyleOptionToolBox::TabPosition position; QStyleOptionToolBox::SelectedPosition selectedPosition; QStyleOptionToolBox(); QStyleOptionToolBox(const QStyleOptionToolBox &other); }; class QStyleOptionRubberBand : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRubberBand::Shape shape; bool opaque; QStyleOptionRubberBand(); QStyleOptionRubberBand(const QStyleOptionRubberBand &other); }; class QStyleOptionComplex : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyle::SubControls subControls; QStyle::SubControls activeSubControls; QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = QStyleOption::SO_Complex); QStyleOptionComplex(const QStyleOptionComplex &other); }; class QStyleOptionSlider : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Orientation orientation; int minimum; int maximum; QSlider::TickPosition tickPosition; int tickInterval; bool upsideDown; int sliderPosition; int sliderValue; int singleStep; int pageStep; qreal notchTarget; bool dialWrapping; Qt::KeyboardModifiers keyboardModifiers; QStyleOptionSlider(); QStyleOptionSlider(const QStyleOptionSlider &other); }; class QStyleOptionSpinBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QAbstractSpinBox::ButtonSymbols buttonSymbols; QAbstractSpinBox::StepEnabled stepEnabled; bool frame; QStyleOptionSpinBox(); QStyleOptionSpinBox(const QStyleOptionSpinBox &other); }; class QStyleOptionToolButton : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolButtonFeature /BaseType=Flag/ { None, Arrow, Menu, PopupDelay, MenuButtonPopup, HasMenu, }; typedef QFlags ToolButtonFeatures; QStyleOptionToolButton::ToolButtonFeatures features; QIcon icon; QSize iconSize; QString text; Qt::ArrowType arrowType; Qt::ToolButtonStyle toolButtonStyle; QPoint pos; QFont font; QStyleOptionToolButton(); QStyleOptionToolButton(const QStyleOptionToolButton &other); }; class QStyleOptionComboBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; bool editable; QRect popupRect; bool frame; QString currentText; QIcon currentIcon; QSize iconSize; Qt::Alignment textAlignment; QStyleOptionComboBox(); QStyleOptionComboBox(const QStyleOptionComboBox &other); }; class QStyleOptionTitleBar : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QString text; QIcon icon; int titleBarState; Qt::WindowFlags titleBarFlags; QStyleOptionTitleBar(); QStyleOptionTitleBar(const QStyleOptionTitleBar &other); }; class QStyleHintReturn { %TypeHeaderCode #include %End public: enum HintReturnType { SH_Default, SH_Mask, SH_Variant, }; enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturn(int version = QStyleOption::Version, int type = QStyleHintReturn::SH_Default); ~QStyleHintReturn(); int version; int type; }; class QStyleHintReturnMask : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnMask(); ~QStyleHintReturnMask(); QRegion region; }; class QStyleOptionToolBar : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; enum ToolBarPosition { Beginning, Middle, End, OnlyOne, }; enum ToolBarFeature /BaseType=Flag/ { None, Movable, }; typedef QFlags ToolBarFeatures; QStyleOptionToolBar::ToolBarPosition positionOfLine; QStyleOptionToolBar::ToolBarPosition positionWithinLine; Qt::ToolBarArea toolBarArea; QStyleOptionToolBar::ToolBarFeatures features; int lineWidth; int midLineWidth; QStyleOptionToolBar(); QStyleOptionToolBar(const QStyleOptionToolBar &other); }; class QStyleOptionGroupBox : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleOptionFrame::FrameFeatures features; QString text; Qt::Alignment textAlignment; QColor textColor; int lineWidth; int midLineWidth; QStyleOptionGroupBox(); QStyleOptionGroupBox(const QStyleOptionGroupBox &other); }; class QStyleOptionSizeGrip : QStyleOptionComplex { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; Qt::Corner corner; QStyleOptionSizeGrip(); QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other); }; class QStyleOptionGraphicsItem : QStyleOption { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QRectF exposedRect; static qreal levelOfDetailFromTransform(const QTransform &worldTransform); QStyleOptionGraphicsItem(); QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other); }; class QStyleHintReturnVariant : QStyleHintReturn { %TypeHeaderCode #include %End public: enum StyleOptionType { Type, }; enum StyleOptionVersion { Version, }; QStyleHintReturnVariant(); ~QStyleHintReturnVariant(); QVariant variant; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5412796 PyQt6-6.6.1/sip/QtWidgets/qstylepainter.sip0000644000076500000240000000330414532160402017512 0ustar00philstaff// qstylepainter.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QStylePainter : QPainter { %TypeHeaderCode #include %End public: QStylePainter(); explicit QStylePainter(QWidget *w); QStylePainter(QPaintDevice *pd, QWidget *w); bool begin(QWidget *w); bool begin(QPaintDevice *pd, QWidget *w); QStyle *style() const; void drawPrimitive(QStyle::PrimitiveElement pe, const QStyleOption &opt); void drawControl(QStyle::ControlElement ce, const QStyleOption &opt); void drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex &opt); void drawItemText(const QRect &rect, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole); void drawItemPixmap(const QRect &r, int flags, const QPixmap &pixmap); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4949903 PyQt6-6.6.1/sip/QtWidgets/qsystemtrayicon.sip0000644000076500000240000000441514532160401020067 0ustar00philstaff// qsystemtrayicon.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QSystemTrayIcon : QObject { %TypeHeaderCode #include %End public: enum ActivationReason { Unknown, Context, DoubleClick, Trigger, MiddleClick, }; enum MessageIcon { NoIcon, Information, Warning, Critical, }; QSystemTrayIcon(QObject *parent /TransferThis/ = 0); QSystemTrayIcon(const QIcon &icon, QObject *parent /TransferThis/ = 0); virtual ~QSystemTrayIcon(); void setContextMenu(QMenu *menu /KeepReference/); QMenu *contextMenu() const; QRect geometry() const; QIcon icon() const; void setIcon(const QIcon &icon); QString toolTip() const; void setToolTip(const QString &tip); static bool isSystemTrayAvailable(); static bool supportsMessages(); public slots: void showMessage(const QString &title, const QString &msg, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information, int msecs = 10000); void showMessage(const QString &title, const QString &msg, const QIcon &icon, int msecs = 10000); public: bool isVisible() const; public slots: void hide(); void setVisible(bool visible); void show(); signals: void activated(QSystemTrayIcon::ActivationReason reason); void messageClicked(); protected: virtual bool event(QEvent *event); }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372161.50261 PyQt6-6.6.1/sip/QtWidgets/qtabbar.sip0000644000076500000240000001220314532160402016220 0ustar00philstaff// qtabbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabBar : QWidget { %TypeHeaderCode #include %End public: explicit QTabBar(QWidget *parent /TransferThis/ = 0); virtual ~QTabBar(); enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, TriangularNorth, TriangularSouth, TriangularWest, TriangularEast, }; QTabBar::Shape shape() const; void setShape(QTabBar::Shape shape); int addTab(const QString &text); int addTab(const QIcon &icon, const QString &text); int insertTab(int index, const QString &text); int insertTab(int index, const QIcon &icon, const QString &text); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &text); QColor tabTextColor(int index) const; void setTabTextColor(int index, const QColor &color); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; void setTabData(int index, const QVariant &data); QVariant tabData(int index) const; int tabAt(const QPoint &pos) const; QRect tabRect(int index) const; int currentIndex() const; int count() const /__len__/; virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setDrawBase(bool drawTheBase); bool drawBase() const; QSize iconSize() const; void setIconSize(const QSize &size); Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); void setUsesScrollButtons(bool useButtons); bool usesScrollButtons() const; public slots: void setCurrentIndex(int index); signals: void currentChanged(int index); protected: virtual void initStyleOption(QStyleOptionTab *option, int tabIndex) const; virtual QSize tabSizeHint(int index) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual void tabLayoutChange(); virtual bool event(QEvent *); virtual void resizeEvent(QResizeEvent *); virtual void showEvent(QShowEvent *); virtual void paintEvent(QPaintEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void changeEvent(QEvent *); public: enum ButtonPosition { LeftSide, RightSide, }; enum SelectionBehavior { SelectLeftTab, SelectRightTab, SelectPreviousTab, }; void moveTab(int from, int to); bool tabsClosable() const; void setTabsClosable(bool closable); void setTabButton(int index, QTabBar::ButtonPosition position, QWidget *widget /Transfer/); QWidget *tabButton(int index, QTabBar::ButtonPosition position) const; QTabBar::SelectionBehavior selectionBehaviorOnRemove() const; void setSelectionBehaviorOnRemove(QTabBar::SelectionBehavior behavior); bool expanding() const; void setExpanding(bool enabled); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); void tabMoved(int from, int to); protected: virtual void hideEvent(QHideEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *event); virtual QSize minimumTabSizeHint(int index) const; signals: void tabBarClicked(int index); void tabBarDoubleClicked(int index); public: bool autoHide() const; void setAutoHide(bool hide); bool changeCurrentOnDrag() const; void setChangeCurrentOnDrag(bool change); protected: virtual void timerEvent(QTimerEvent *event); public: %If (PyQt_Accessibility) QString accessibleTabName(int index) const; %End %If (PyQt_Accessibility) void setAccessibleTabName(int index, const QString &name); %End bool isTabVisible(int index) const; void setTabVisible(int index, bool visible); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5366051 PyQt6-6.6.1/sip/QtWidgets/qtableview.sip0000644000076500000240000001134514532160402016755 0ustar00philstaff// qtableview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTableView(QWidget *parent /TransferThis/ = 0); virtual ~QTableView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *horizontalHeader() const; QHeaderView *verticalHeader() const; void setHorizontalHeader(QHeaderView *header /Transfer/); void setVerticalHeader(QHeaderView *header /Transfer/); int rowViewportPosition(int row) const; void setRowHeight(int row, int height); int rowHeight(int row) const; int rowAt(int y) const; int columnViewportPosition(int column) const; void setColumnWidth(int column, int width); int columnWidth(int column) const; int columnAt(int x) const; bool isRowHidden(int row) const; void setRowHidden(int row, bool hide); bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool showGrid() const; void setShowGrid(bool show); Qt::PenStyle gridStyle() const; void setGridStyle(Qt::PenStyle style); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; public slots: void selectRow(int row); void selectColumn(int column); void hideRow(int row); void hideColumn(int column); void showRow(int row); void showColumn(int column); void resizeRowToContents(int row); void resizeRowsToContents(); void resizeColumnToContents(int column); void resizeColumnsToContents(); protected slots: void rowMoved(int row, int oldIndex, int newIndex); void columnMoved(int column, int oldIndex, int newIndex); void rowResized(int row, int oldHeight, int newHeight); void columnResized(int column, int oldWidth, int newWidth); void rowCountChanged(int oldCount, int newCount); void columnCountChanged(int oldCount, int newCount); protected: virtual void scrollContentsBy(int dx, int dy); virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void updateGeometries(); virtual int sizeHintForRow(int row) const; virtual int sizeHintForColumn(int column) const; virtual void verticalScrollbarAction(int action); virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; virtual QSize viewportSizeHint() const; public: void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setSpan(int row, int column, int rowSpan, int columnSpan); int rowSpan(int row, int column) const; int columnSpan(int row, int column) const; void sortByColumn(int column, Qt::SortOrder order); void setWordWrap(bool on); bool wordWrap() const; void setCornerButtonEnabled(bool enable); bool isCornerButtonEnabled() const; void clearSpans(); protected: virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void initViewItemOption(QStyleOptionViewItem *option) const; }; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.477307 PyQt6-6.6.1/sip/QtWidgets/qtablewidget.sip0000644000076500000240000002203614532160401017264 0ustar00philstaff// qtablewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTableWidgetSelectionRange { %TypeHeaderCode #include %End public: QTableWidgetSelectionRange(); QTableWidgetSelectionRange(int top, int left, int bottom, int right); int topRow() const; int bottomRow() const; int leftColumn() const; int rightColumn() const; int rowCount() const; int columnCount() const; }; class QTableWidgetItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType /BaseType=IntEnum/ { Type, UserType, }; explicit QTableWidgetItem(int type = QTableWidgetItem::Type); QTableWidgetItem(const QString &text, int type = QTableWidgetItem::Type); QTableWidgetItem(const QIcon &icon, const QString &text, int type = QTableWidgetItem::Type); QTableWidgetItem(const QTableWidgetItem &other); virtual ~QTableWidgetItem(); virtual QTableWidgetItem *clone() const /Factory/; QTableWidget *tableWidget() const; Qt::ItemFlags flags() const; QString text() const; QIcon icon() const; QString statusTip() const; QString toolTip() const; QString whatsThis() const; QFont font() const; int textAlignment() const; %If (Qt_6_4_0 -) void setTextAlignment(Qt::Alignment alignment); %End void setTextAlignment(int alignment); Qt::CheckState checkState() const; void setCheckState(Qt::CheckState state); virtual QVariant data(int role) const; virtual void setData(int role, const QVariant &value); virtual bool operator<(const QTableWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(const QString &atext); void setIcon(const QIcon &aicon); void setStatusTip(const QString &astatusTip); void setToolTip(const QString &atoolTip); void setWhatsThis(const QString &awhatsThis); void setFont(const QFont &afont); QSize sizeHint() const; void setSizeHint(const QSize &size); QBrush background() const; void setBackground(const QBrush &brush); QBrush foreground() const; void setForeground(const QBrush &brush); int row() const; int column() const; void setSelected(bool aselect); bool isSelected() const; private: QTableWidgetItem &operator=(const QTableWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QTableWidgetItem &item) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QTableWidgetItem &item /Constrained/) /ReleaseGIL/; class QTableWidget : QTableView { %TypeHeaderCode #include %End public: explicit QTableWidget(QWidget *parent /TransferThis/ = 0); QTableWidget(int rows, int columns, QWidget *parent /TransferThis/ = 0); virtual ~QTableWidget(); void setRowCount(int rows); int rowCount() const; void setColumnCount(int columns); int columnCount() const; int row(const QTableWidgetItem *item) const; int column(const QTableWidgetItem *item) const; QTableWidgetItem *item(int row, int column) const; void setItem(int row, int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeItem(int row, int column) /TransferBack/; QTableWidgetItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeVerticalHeaderItem(int row) /TransferBack/; QTableWidgetItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QTableWidgetItem *item /Transfer/); QTableWidgetItem *takeHorizontalHeaderItem(int column) /TransferBack/; void setVerticalHeaderLabels(const QStringList &labels); void setHorizontalHeaderLabels(const QStringList &labels); int currentRow() const; int currentColumn() const; QTableWidgetItem *currentItem() const; void setCurrentItem(QTableWidgetItem *item); void setCurrentItem(QTableWidgetItem *item, QItemSelectionModel::SelectionFlags command); void setCurrentCell(int row, int column); void setCurrentCell(int row, int column, QItemSelectionModel::SelectionFlags command); void sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void editItem(QTableWidgetItem *item); void openPersistentEditor(QTableWidgetItem *item); void closePersistentEditor(QTableWidgetItem *item); QWidget *cellWidget(int row, int column) const; void setCellWidget(int row, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setCellWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End void removeCellWidget(int arow, int acolumn); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->cellWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeCellWidget(a0, a1); Py_END_ALLOW_THREADS %End void setRangeSelected(const QTableWidgetSelectionRange &range, bool select); QList selectedRanges() const; QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags) const; int visualRow(int logicalRow) const; int visualColumn(int logicalColumn) const; QTableWidgetItem *itemAt(const QPoint &p) const; QTableWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTableWidgetItem *item) const; const QTableWidgetItem *itemPrototype() const; void setItemPrototype(const QTableWidgetItem *item /Transfer/); public slots: void scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void insertRow(int row); void insertColumn(int column); void removeRow(int row); void removeColumn(int column); void clear(); void clearContents(); signals: void itemPressed(QTableWidgetItem *item); void itemClicked(QTableWidgetItem *item); void itemDoubleClicked(QTableWidgetItem *item); void itemActivated(QTableWidgetItem *item); void itemEntered(QTableWidgetItem *item); void itemChanged(QTableWidgetItem *item); void currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous); void itemSelectionChanged(); void cellPressed(int row, int column); void cellClicked(int row, int column); void cellDoubleClicked(int row, int column); void cellActivated(int row, int column); void cellEntered(int row, int column); void cellChanged(int row, int column); void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList &items) const /TransferBack/; virtual bool dropMimeData(int row, int column, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; public: QList items(const QMimeData *data) const; QModelIndex indexFromItem(const QTableWidgetItem *item) const; QTableWidgetItem *itemFromIndex(const QModelIndex &index) const; protected: virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: bool isPersistentEditorOpen(QTableWidgetItem *item) const; private: virtual void setModel(QAbstractItemModel *model /KeepReference/); }; %If (Qt_6_3_0 -) bool operator==(const QTableWidgetSelectionRange &lhs, const QTableWidgetSelectionRange &rhs); %End %If (Qt_6_3_0 -) bool operator!=(const QTableWidgetSelectionRange &lhs, const QTableWidgetSelectionRange &rhs); %End ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5033445 PyQt6-6.6.1/sip/QtWidgets/qtabwidget.sip0000644000076500000240000001022014532160402016734 0ustar00philstaff// qtabwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTabWidget : QWidget { %TypeHeaderCode #include %End public: explicit QTabWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTabWidget(); void clear(); int addTab(QWidget *widget /Transfer/, const QString &); int addTab(QWidget *widget /Transfer/, const QIcon &icon, const QString &label); int insertTab(int index, QWidget *widget /Transfer/, const QString &); int insertTab(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &label); void removeTab(int index); bool isTabEnabled(int index) const; void setTabEnabled(int index, bool); QString tabText(int index) const; void setTabText(int index, const QString &); QIcon tabIcon(int index) const; void setTabIcon(int index, const QIcon &icon); void setTabToolTip(int index, const QString &tip); QString tabToolTip(int index) const; void setTabWhatsThis(int index, const QString &text); QString tabWhatsThis(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(const QWidget *widget) const; int count() const /__len__/; enum TabPosition { North, South, West, East, }; QTabWidget::TabPosition tabPosition() const; void setTabPosition(QTabWidget::TabPosition); enum TabShape { Rounded, Triangular, }; QTabWidget::TabShape tabShape() const; void setTabShape(QTabWidget::TabShape s); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; void setCornerWidget(QWidget *widget /Transfer/, Qt::Corner corner = Qt::TopRightCorner); QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: virtual void initStyleOption(QStyleOptionTabWidgetFrame *option) const; virtual void tabInserted(int index); virtual void tabRemoved(int index); virtual bool event(QEvent *); virtual void showEvent(QShowEvent *); virtual void resizeEvent(QResizeEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void paintEvent(QPaintEvent *); void setTabBar(QTabBar * /Transfer/); public: QTabBar *tabBar() const; protected: virtual void changeEvent(QEvent *); public: Qt::TextElideMode elideMode() const; void setElideMode(Qt::TextElideMode); QSize iconSize() const; void setIconSize(const QSize &size); bool usesScrollButtons() const; void setUsesScrollButtons(bool useButtons); bool tabsClosable() const; void setTabsClosable(bool closeable); bool isMovable() const; void setMovable(bool movable); bool documentMode() const; void setDocumentMode(bool set); signals: void tabCloseRequested(int index); public: virtual int heightForWidth(int width) const; virtual bool hasHeightForWidth() const; signals: void tabBarClicked(int index); void tabBarDoubleClicked(int index); public: bool tabBarAutoHide() const; void setTabBarAutoHide(bool enabled); bool isTabVisible(int index) const; void setTabVisible(int index, bool visible); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4920104 PyQt6-6.6.1/sip/QtWidgets/qtextbrowser.sip0000644000076500000240000000526414532160401017365 0ustar00philstaff// qtextbrowser.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextBrowser : QTextEdit { %TypeHeaderCode #include %End public: explicit QTextBrowser(QWidget *parent /TransferThis/ = 0); virtual ~QTextBrowser(); QUrl source() const; QStringList searchPaths() const; void setSearchPaths(const QStringList &paths); virtual QVariant loadResource(int type, const QUrl &name); public slots: void setSource(const QUrl &name, QTextDocument::ResourceType type = QTextDocument::UnknownResource); virtual void backward(); virtual void forward(); virtual void home(); virtual void reload(); signals: void backwardAvailable(bool); void forwardAvailable(bool); void sourceChanged(const QUrl &); void highlighted(const QUrl &); void anchorClicked(const QUrl &); protected: virtual bool event(QEvent *e); virtual void keyPressEvent(QKeyEvent *ev); virtual void mouseMoveEvent(QMouseEvent *ev); virtual void mousePressEvent(QMouseEvent *ev); virtual void mouseReleaseEvent(QMouseEvent *ev); virtual void focusOutEvent(QFocusEvent *ev); virtual bool focusNextPrevChild(bool next); virtual void paintEvent(QPaintEvent *e); public: bool isBackwardAvailable() const; bool isForwardAvailable() const; void clearHistory(); bool openExternalLinks() const; void setOpenExternalLinks(bool open); bool openLinks() const; void setOpenLinks(bool open); QString historyTitle(int) const; QUrl historyUrl(int) const; int backwardHistoryCount() const; int forwardHistoryCount() const; signals: void historyChanged(); public: QTextDocument::ResourceType sourceType() const; protected: virtual void doSetSource(const QUrl &name, QTextDocument::ResourceType type = QTextDocument::UnknownResource); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5306308 PyQt6-6.6.1/sip/QtWidgets/qtextedit.sip0000644000076500000240000001633414532160402016630 0ustar00philstaff// qtextedit.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTextEdit : QAbstractScrollArea { %TypeHeaderCode #include %End public: struct ExtraSelection { %TypeHeaderCode #include %End QTextCursor cursor; QTextCharFormat format; }; enum LineWrapMode { NoWrap, WidgetWidth, FixedPixelWidth, FixedColumnWidth, }; enum AutoFormattingFlag /BaseType=Flag/ { AutoNone, AutoBulletList, AutoAll, }; typedef QFlags AutoFormatting; explicit QTextEdit(QWidget *parent /TransferThis/ = 0); QTextEdit(const QString &text, QWidget *parent /TransferThis/ = 0); virtual ~QTextEdit(); void setDocument(QTextDocument *document /KeepReference/); QTextDocument *document() const; void setTextCursor(const QTextCursor &cursor); QTextCursor textCursor() const; bool isReadOnly() const; void setReadOnly(bool ro); qreal fontPointSize() const; QString fontFamily() const; int fontWeight() const; bool fontUnderline() const; bool fontItalic() const; QColor textColor() const; QFont currentFont() const; Qt::Alignment alignment() const; void mergeCurrentCharFormat(const QTextCharFormat &modifier); void setCurrentCharFormat(const QTextCharFormat &format); QTextCharFormat currentCharFormat() const; QTextEdit::AutoFormatting autoFormatting() const; void setAutoFormatting(QTextEdit::AutoFormatting features); bool tabChangesFocus() const; void setTabChangesFocus(bool b); void setDocumentTitle(const QString &title); QString documentTitle() const; bool isUndoRedoEnabled() const; void setUndoRedoEnabled(bool enable); QTextEdit::LineWrapMode lineWrapMode() const; void setLineWrapMode(QTextEdit::LineWrapMode mode); int lineWrapColumnOrWidth() const; void setLineWrapColumnOrWidth(int w); QTextOption::WrapMode wordWrapMode() const; void setWordWrapMode(QTextOption::WrapMode policy); bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QString toPlainText() const; QString toHtml() const; void append(const QString &text); void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); QMenu *createStandardContextMenu() /Factory/; QMenu *createStandardContextMenu(const QPoint &position) /Factory/; QTextCursor cursorForPosition(const QPoint &pos) const; QRect cursorRect(const QTextCursor &cursor) const; QRect cursorRect() const; QString anchorAt(const QPoint &pos) const; bool overwriteMode() const; void setOverwriteMode(bool overwrite); bool acceptRichText() const; void setAcceptRichText(bool accept); void setTextInteractionFlags(Qt::TextInteractionFlags flags); Qt::TextInteractionFlags textInteractionFlags() const; void setCursorWidth(int width); int cursorWidth() const; void setExtraSelections(const QList &selections); QList extraSelections() const; bool canPaste() const; void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor); %If (PyQt_Printer) void print(QPagedPaintDevice *printer) const; %End public slots: void setFontPointSize(qreal s); void setFontFamily(const QString &fontFamily); void setFontWeight(int w); void setFontUnderline(bool b); void setFontItalic(bool b); void setText(const QString &text); void setTextColor(const QColor &c); void setCurrentFont(const QFont &f); void setAlignment(Qt::Alignment a); void setPlainText(const QString &text); void setHtml(const QString &text); void cut(); void copy(); void paste(); void clear(); void selectAll(); void insertPlainText(const QString &text); void insertHtml(const QString &text); void scrollToAnchor(const QString &name); void redo(); void undo(); void zoomIn(int range = 1); void zoomOut(int range = 1); signals: void textChanged(); void undoAvailable(bool b); void redoAvailable(bool b); void currentCharFormatChanged(const QTextCharFormat &format); void copyAvailable(bool b); void selectionChanged(); void cursorPositionChanged(); protected: virtual bool event(QEvent *e); virtual void timerEvent(QTimerEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void keyReleaseEvent(QKeyEvent *e); virtual void resizeEvent(QResizeEvent *); virtual void paintEvent(QPaintEvent *e); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual bool focusNextPrevChild(bool next); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void dragEnterEvent(QDragEnterEvent *e); virtual void dragLeaveEvent(QDragLeaveEvent *e); virtual void dragMoveEvent(QDragMoveEvent *e); virtual void dropEvent(QDropEvent *e); virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); virtual void showEvent(QShowEvent *); virtual void changeEvent(QEvent *e); virtual void wheelEvent(QWheelEvent *e); virtual QMimeData *createMimeDataFromSelection() const /Factory/; virtual bool canInsertFromMimeData(const QMimeData *source) const; virtual void insertFromMimeData(const QMimeData *source); virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; protected: virtual void scrollContentsBy(int dx, int dy); public: QColor textBackgroundColor() const; public slots: void setTextBackgroundColor(const QColor &c); public: void setPlaceholderText(const QString &placeholderText); QString placeholderText() const; bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags()); QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const; qreal tabStopDistance() const; void setTabStopDistance(qreal distance); QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const; public slots: void setMarkdown(const QString &markdown); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4835818 PyQt6-6.6.1/sip/QtWidgets/qtoolbar.sip0000644000076500000240000001036714532160401016437 0ustar00philstaff// qtoolbar.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBar : QWidget { %TypeHeaderCode #include %End public: QToolBar(const QString &title, QWidget *parent /TransferThis/ = 0); explicit QToolBar(QWidget *parent /TransferThis/ = 0); virtual ~QToolBar(); void setMovable(bool movable); bool isMovable() const; void setAllowedAreas(Qt::ToolBarAreas areas); Qt::ToolBarAreas allowedAreas() const; bool isAreaAllowed(Qt::ToolBarArea area) const; void setOrientation(Qt::Orientation orientation); Qt::Orientation orientation() const; void clear(); %If (- Qt_6_3_0) void addAction(QAction *); %End %If (- Qt_6_3_0) QAction *addAction(const QString &text) /Transfer/; %End %If (- Qt_6_3_0) QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; %End %If (- Qt_6_3_0) QAction *addAction(const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End %End %If (- Qt_6_3_0) QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End %End QAction *addSeparator() /Transfer/; QAction *insertSeparator(QAction *before) /Transfer/; QAction *addWidget(QWidget *widget /Transfer/) /Transfer/; QAction *insertWidget(QAction *before, QWidget *widget /Transfer/) /Transfer/; QRect actionGeometry(QAction *action) const; QAction *actionAt(const QPoint &p) const; QAction *actionAt(int ax, int ay) const; QAction *toggleViewAction() const; QSize iconSize() const; Qt::ToolButtonStyle toolButtonStyle() const; QWidget *widgetForAction(QAction *action) const; public slots: void setIconSize(const QSize &iconSize); void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle); signals: void actionTriggered(QAction *action); void movableChanged(bool movable); void allowedAreasChanged(Qt::ToolBarAreas allowedAreas); void orientationChanged(Qt::Orientation orientation); void iconSizeChanged(const QSize &iconSize); void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle); void topLevelChanged(bool topLevel); void visibilityChanged(bool visible); protected: virtual void initStyleOption(QStyleOptionToolBar *option) const; virtual void actionEvent(QActionEvent *event); virtual void changeEvent(QEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); public: bool isFloatable() const; void setFloatable(bool floatable); bool isFloating() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4874055 PyQt6-6.6.1/sip/QtWidgets/qtoolbox.sip0000644000076500000240000000456514532160401016466 0ustar00philstaff// qtoolbox.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolBox : QFrame { %TypeHeaderCode #include %End public: QToolBox(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QToolBox(); int addItem(QWidget *item /Transfer/, const QString &text); int addItem(QWidget *item /Transfer/, const QIcon &iconSet, const QString &text); int insertItem(int index, QWidget *item /Transfer/, const QString &text); int insertItem(int index, QWidget *widget /Transfer/, const QIcon &icon, const QString &text); void removeItem(int index); void setItemEnabled(int index, bool enabled); bool isItemEnabled(int index) const; void setItemText(int index, const QString &text); QString itemText(int index) const; void setItemIcon(int index, const QIcon &icon); QIcon itemIcon(int index) const; void setItemToolTip(int index, const QString &toolTip); QString itemToolTip(int index) const; int currentIndex() const; QWidget *currentWidget() const; QWidget *widget(int index) const; int indexOf(const QWidget *widget) const; int count() const /__len__/; public slots: void setCurrentIndex(int index); void setCurrentWidget(QWidget *widget); signals: void currentChanged(int index); protected: virtual void itemInserted(int index); virtual void itemRemoved(int index); virtual bool event(QEvent *e); virtual void showEvent(QShowEvent *e); virtual void changeEvent(QEvent *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5224302 PyQt6-6.6.1/sip/QtWidgets/qtoolbutton.sip0000644000076500000240000000477414532160402017214 0ustar00philstaff// qtoolbutton.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolButton : QAbstractButton { %TypeHeaderCode #include %End public: enum ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup, }; explicit QToolButton(QWidget *parent /TransferThis/ = 0); virtual ~QToolButton(); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; Qt::ToolButtonStyle toolButtonStyle() const; Qt::ArrowType arrowType() const; void setArrowType(Qt::ArrowType type); void setMenu(QMenu *menu /KeepReference/); QMenu *menu() const; void setPopupMode(QToolButton::ToolButtonPopupMode mode); QToolButton::ToolButtonPopupMode popupMode() const; QAction *defaultAction() const; void setAutoRaise(bool enable); bool autoRaise() const; public slots: void showMenu(); void setToolButtonStyle(Qt::ToolButtonStyle style); void setDefaultAction(QAction * /KeepReference/); signals: void triggered(QAction *); protected: virtual void initStyleOption(QStyleOptionToolButton *option) const; virtual bool event(QEvent *e); virtual void mousePressEvent(QMouseEvent *); virtual void paintEvent(QPaintEvent *); virtual void actionEvent(QActionEvent *); virtual void enterEvent(QEnterEvent *); virtual void leaveEvent(QEvent *); virtual void timerEvent(QTimerEvent *); virtual void changeEvent(QEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void nextCheckState(); virtual bool hitButton(const QPoint &pos) const; %If (Qt_6_2_0 -) virtual void checkStateSet(); %End }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5080225 PyQt6-6.6.1/sip/QtWidgets/qtooltip.sip0000644000076500000240000000256714532160402016473 0ustar00philstaff// qtooltip.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QToolTip { %TypeHeaderCode #include %End QToolTip(); public: static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0, const QRect &rect = {}, int msecShowTime = -1); static QPalette palette(); static void hideText(); static void setPalette(const QPalette &); static QFont font(); static void setFont(const QFont &); static bool isVisible(); static QString text(); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4634337 PyQt6-6.6.1/sip/QtWidgets/qtreeview.sip0000644000076500000240000001451214532160401016623 0ustar00philstaff// qtreeview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeView : QAbstractItemView { %TypeHeaderCode #include %End public: explicit QTreeView(QWidget *parent /TransferThis/ = 0); virtual ~QTreeView(); virtual void setModel(QAbstractItemModel *model /KeepReference/); virtual void setRootIndex(const QModelIndex &index); virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); QHeaderView *header() const; void setHeader(QHeaderView *header /Transfer/); int indentation() const; void setIndentation(int i); bool rootIsDecorated() const; void setRootIsDecorated(bool show); bool uniformRowHeights() const; void setUniformRowHeights(bool uniform); bool itemsExpandable() const; void setItemsExpandable(bool enable); int columnViewportPosition(int column) const; int columnWidth(int column) const; int columnAt(int x) const; bool isColumnHidden(int column) const; void setColumnHidden(int column, bool hide); bool isRowHidden(int row, const QModelIndex &parent) const; void setRowHidden(int row, const QModelIndex &parent, bool hide); bool isExpanded(const QModelIndex &index) const; void setExpanded(const QModelIndex &index, bool expand); virtual void keyboardSearch(const QString &search); virtual QRect visualRect(const QModelIndex &index) const; virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); virtual QModelIndex indexAt(const QPoint &p) const; QModelIndex indexAbove(const QModelIndex &index) const; QModelIndex indexBelow(const QModelIndex &index) const; virtual void reset(); signals: void expanded(const QModelIndex &index); void collapsed(const QModelIndex &index); public: virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList &roles = QList()); public slots: void hideColumn(int column); void showColumn(int column); void expand(const QModelIndex &index); void expandAll(); void collapse(const QModelIndex &index); void collapseAll(); void resizeColumnToContents(int column); virtual void selectAll(); protected slots: void columnResized(int column, int oldSize, int newSize); void columnCountChanged(int oldCount, int newCount); void columnMoved(); void reexpand(); void rowsRemoved(const QModelIndex &parent, int first, int last); protected: virtual void scrollContentsBy(int dx, int dy); virtual void rowsInserted(const QModelIndex &parent, int start, int end); virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers); virtual int horizontalOffset() const; virtual int verticalOffset() const; virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command); virtual QRegion visualRegionForSelection(const QItemSelection &selection) const; virtual QModelIndexList selectedIndexes() const; virtual void changeEvent(QEvent *event); virtual void paintEvent(QPaintEvent *e); virtual void timerEvent(QTimerEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void drawRow(QPainter *painter, const QStyleOptionViewItem &options /NoCopy/, const QModelIndex &index) const; virtual void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const; void drawTree(QPainter *painter, const QRegion ®ion) const; virtual void mousePressEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *e); virtual void keyPressEvent(QKeyEvent *event); virtual void updateGeometries(); virtual int sizeHintForColumn(int column) const; int indexRowSizeHint(const QModelIndex &index) const; virtual void horizontalScrollbarAction(int action); virtual bool isIndexHidden(const QModelIndex &index) const; public: void setColumnWidth(int column, int width); void setSortingEnabled(bool enable); bool isSortingEnabled() const; void setAnimated(bool enable); bool isAnimated() const; void setAllColumnsShowFocus(bool enable); bool allColumnsShowFocus() const; void sortByColumn(int column, Qt::SortOrder order); int autoExpandDelay() const; void setAutoExpandDelay(int delay); bool isFirstColumnSpanned(int row, const QModelIndex &parent) const; void setFirstColumnSpanned(int row, const QModelIndex &parent, bool span); void setWordWrap(bool on); bool wordWrap() const; public slots: void expandToDepth(int depth); protected: virtual void dragMoveEvent(QDragMoveEvent *event); virtual bool viewportEvent(QEvent *event); int rowHeight(const QModelIndex &index) const; virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); public: bool expandsOnDoubleClick() const; void setExpandsOnDoubleClick(bool enable); bool isHeaderHidden() const; void setHeaderHidden(bool hide); void setTreePosition(int logicalIndex); int treePosition() const; protected: virtual QSize viewportSizeHint() const; public: void resetIndentation(); public slots: void expandRecursively(const QModelIndex &index, int depth = -1); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5295062 PyQt6-6.6.1/sip/QtWidgets/qtreewidget.sip0000644000076500000240000002413014532160402017132 0ustar00philstaff// qtreewidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItem /Supertype=PyQt6.sip.wrapper/ { %TypeHeaderCode #include %End public: enum ItemType /BaseType=IntEnum/ { Type, UserType, }; QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, QTreeWidgetItem *after, int type = QTreeWidgetItem::Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, const QStringList &strings, int type = QTreeWidgetItem::Type); QTreeWidgetItem(QTreeWidgetItem *parent /TransferThis/, int type = QTreeWidgetItem::Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, QTreeWidgetItem *after, int type = QTreeWidgetItem::Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, const QStringList &strings, int type = QTreeWidgetItem::Type); QTreeWidgetItem(QTreeWidget *parent /TransferThis/, int type = QTreeWidgetItem::Type); QTreeWidgetItem(const QStringList &strings, int type = QTreeWidgetItem::Type); explicit QTreeWidgetItem(int type = QTreeWidgetItem::Type); QTreeWidgetItem(const QTreeWidgetItem &other); virtual ~QTreeWidgetItem(); virtual QTreeWidgetItem *clone() const /Factory/; QTreeWidget *treeWidget() const; Qt::ItemFlags flags() const; QString text(int column) const; QIcon icon(int column) const; QString statusTip(int column) const; QString toolTip(int column) const; QString whatsThis(int column) const; QFont font(int column) const; int textAlignment(int column) const; %If (Qt_6_4_0 -) void setTextAlignment(int column, Qt::Alignment alignment); %End void setTextAlignment(int column, int alignment); Qt::CheckState checkState(int column) const; void setCheckState(int column, Qt::CheckState state); virtual QVariant data(int column, int role) const; virtual void setData(int column, int role, const QVariant &value); virtual bool operator<(const QTreeWidgetItem &other /NoCopy/) const; virtual void read(QDataStream &in) /ReleaseGIL/; virtual void write(QDataStream &out) const /ReleaseGIL/; QTreeWidgetItem *parent() const; QTreeWidgetItem *child(int index) const; int childCount() const; int columnCount() const; void addChild(QTreeWidgetItem *child /Transfer/); void insertChild(int index, QTreeWidgetItem *child /Transfer/); QTreeWidgetItem *takeChild(int index) /TransferBack/; int type() const; void setFlags(Qt::ItemFlags aflags); void setText(int column, const QString &atext); void setIcon(int column, const QIcon &aicon); void setStatusTip(int column, const QString &astatusTip); void setToolTip(int column, const QString &atoolTip); void setWhatsThis(int column, const QString &awhatsThis); void setFont(int column, const QFont &afont); int indexOfChild(QTreeWidgetItem *achild) const; QSize sizeHint(int column) const; void setSizeHint(int column, const QSize &size); void addChildren(const QList &children /Transfer/); void insertChildren(int index, const QList &children /Transfer/); QList takeChildren() /TransferBack/; QBrush background(int column) const; void setBackground(int column, const QBrush &brush); QBrush foreground(int column) const; void setForeground(int column, const QBrush &brush); void sortChildren(int column, Qt::SortOrder order); void setSelected(bool aselect); bool isSelected() const; void setHidden(bool ahide); bool isHidden() const; void setExpanded(bool aexpand); bool isExpanded() const; enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless, }; void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy); QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const; void removeChild(QTreeWidgetItem *child /TransferBack/); void setFirstColumnSpanned(bool aspan); bool isFirstColumnSpanned() const; void setDisabled(bool disabled); bool isDisabled() const; protected: void emitDataChanged(); private: QTreeWidgetItem &operator=(const QTreeWidgetItem &); }; QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item) /ReleaseGIL/; QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item /Constrained/) /ReleaseGIL/; class QTreeWidget : QTreeView { %TypeHeaderCode #include %End public: explicit QTreeWidget(QWidget *parent /TransferThis/ = 0); virtual ~QTreeWidget(); int columnCount() const; void setColumnCount(int columns); QTreeWidgetItem *topLevelItem(int index) const; int topLevelItemCount() const; void insertTopLevelItem(int index, QTreeWidgetItem *item /Transfer/); void addTopLevelItem(QTreeWidgetItem *item /Transfer/); QTreeWidgetItem *takeTopLevelItem(int index) /TransferBack/; int indexOfTopLevelItem(QTreeWidgetItem *item) const; void insertTopLevelItems(int index, const QList &items /Transfer/); void addTopLevelItems(const QList &items /Transfer/); QTreeWidgetItem *headerItem() const; void setHeaderItem(QTreeWidgetItem *item /Transfer/); void setHeaderLabels(const QStringList &labels); QTreeWidgetItem *currentItem() const; int currentColumn() const; void setCurrentItem(QTreeWidgetItem *item); void setCurrentItem(QTreeWidgetItem *item, int column); void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command); QTreeWidgetItem *itemAt(const QPoint &p) const; QTreeWidgetItem *itemAt(int ax, int ay) const; QRect visualItemRect(const QTreeWidgetItem *item) const; int sortColumn() const; void sortItems(int column, Qt::SortOrder order); void editItem(QTreeWidgetItem *item, int column = 0); void openPersistentEditor(QTreeWidgetItem *item, int column = 0); void closePersistentEditor(QTreeWidgetItem *item, int column = 0); QWidget *itemWidget(QTreeWidgetItem *item, int column) const; void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget /Transfer/); %MethodCode // We have to break the association with any existing widget. Note that I'm // not sure this is really necessary as it should get tidied up when Qt // destroys any current widget, except (possibly) when the widget wasn't // created from PyQt. See also removeItemWidget(), QListWidget and // QTableWidget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->setItemWidget(a0, a1, a2); Py_END_ALLOW_THREADS %End QList selectedItems() const; QList findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const; public slots: void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = QAbstractItemView::EnsureVisible); void expandItem(const QTreeWidgetItem *item); void collapseItem(const QTreeWidgetItem *item); void clear(); signals: void itemPressed(QTreeWidgetItem *item, int column); void itemClicked(QTreeWidgetItem *item, int column); void itemDoubleClicked(QTreeWidgetItem *item, int column); void itemActivated(QTreeWidgetItem *item, int column); void itemEntered(QTreeWidgetItem *item, int column); void itemChanged(QTreeWidgetItem *item, int column); void itemExpanded(QTreeWidgetItem *item); void itemCollapsed(QTreeWidgetItem *item); void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void itemSelectionChanged(); protected: virtual QStringList mimeTypes() const; virtual QMimeData *mimeData(const QList &items) const /TransferBack/; virtual bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action); virtual Qt::DropActions supportedDropActions() const; public: QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const; QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const; protected: virtual bool event(QEvent *e); virtual void dropEvent(QDropEvent *event); public: QTreeWidgetItem *invisibleRootItem() const /Transfer/; void setHeaderLabel(const QString &alabel); QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const; QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const; void removeItemWidget(QTreeWidgetItem *item, int column); %MethodCode // We have to break the association with any existing widget. QWidget *w = sipCpp->itemWidget(a0, a1); if (w) { PyObject *wo = sipGetPyObject(w, sipType_QWidget); if (wo) sipTransferTo(wo, 0); } Py_BEGIN_ALLOW_THREADS sipCpp->removeItemWidget(a0, a1); Py_END_ALLOW_THREADS %End virtual void setSelectionModel(QItemSelectionModel *selectionModel /KeepReference/); bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const; private: virtual void setModel(QAbstractItemModel *model /KeepReference/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5218816 PyQt6-6.6.1/sip/QtWidgets/qtreewidgetitemiterator.sip0000644000076500000240000000422314532160402021564 0ustar00philstaff// qtreewidgetitemiterator.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QTreeWidgetItemIterator { %TypeHeaderCode #include %End public: enum IteratorFlag /BaseType=Flag/ { All, Hidden, NotHidden, Selected, Unselected, Selectable, NotSelectable, DragEnabled, DragDisabled, DropEnabled, DropDisabled, HasChildren, NoChildren, Checked, NotChecked, Enabled, Disabled, Editable, NotEditable, UserFlag, }; typedef QFlags IteratorFlags; QTreeWidgetItemIterator(QTreeWidgetItem *item, QTreeWidgetItemIterator::IteratorFlags flags = QTreeWidgetItemIterator::All); QTreeWidgetItemIterator(QTreeWidget *widget, QTreeWidgetItemIterator::IteratorFlags flags = QTreeWidgetItemIterator::All); QTreeWidgetItemIterator(const QTreeWidgetItemIterator &it); ~QTreeWidgetItemIterator(); QTreeWidgetItem *value() const; %MethodCode // SIP doesn't support operator* so this is a thin wrapper around it. sipRes = sipCpp->operator*(); %End QTreeWidgetItemIterator &operator+=(int n); QTreeWidgetItemIterator &operator-=(int n); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4914618 PyQt6-6.6.1/sip/QtWidgets/qundoview.sip0000644000076500000240000000307514532160401016633 0ustar00philstaff// qundoview.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QUndoView : QListView { %TypeHeaderCode #include %End public: explicit QUndoView(QWidget *parent /TransferThis/ = 0); QUndoView(QUndoStack *stack, QWidget *parent /TransferThis/ = 0); QUndoView(QUndoGroup *group, QWidget *parent /TransferThis/ = 0); virtual ~QUndoView(); QUndoStack *stack() const; QUndoGroup *group() const; void setEmptyLabel(const QString &label); QString emptyLabel() const; void setCleanIcon(const QIcon &icon); QIcon cleanIcon() const; public slots: void setStack(QUndoStack *stack /KeepReference/); void setGroup(QUndoGroup *group /KeepReference/); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5332255 PyQt6-6.6.1/sip/QtWidgets/qwhatsthis.sip0000644000076500000240000000251114532160402017004 0ustar00philstaff// qwhatsthis.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWhatsThis { %TypeHeaderCode #include %End QWhatsThis(); public: static void enterWhatsThisMode(); static bool inWhatsThisMode(); static void leaveWhatsThisMode(); static void showText(const QPoint &pos, const QString &text, QWidget *widget = 0); static void hideText(); static QAction *createAction(QObject *parent /TransferThis/ = 0) /Factory/; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5054946 PyQt6-6.6.1/sip/QtWidgets/qwidget.sip0000644000076500000240000004367214532160402016266 0ustar00philstaff// qwidget.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. const int QWIDGETSIZE_MAX; class QWidget : QObject, QPaintDevice { %TypeHeaderCode #include %End %TypeCode // Transfer the ownership of a single widget to a parent. static void qtgui_TransferWidget(QWidget *w, PyObject *py_parent) { PyObject *py_w = sipGetPyObject(w, sipType_QWidget); if (py_w) sipTransferTo(py_w, py_parent); } // Transfer ownership of all widgets in a layout to their new parent. static void qtwidgets_TransferLayoutWidgets(QLayout *lay, PyObject *pw) { int n = lay->count(); for (int i = 0; i < n; ++i) { QLayoutItem *item = lay->itemAt(i); QWidget *w = item->widget(); if (w) { qtgui_TransferWidget(w, pw); } else { QLayout *l = item->layout(); if (l) qtwidgets_TransferLayoutWidgets(l, pw); } } QWidget *mb = lay->menuBar(); if (mb) qtgui_TransferWidget(mb, pw); } %End public: QWidget(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QWidget(); virtual int devType() const; QStyle *style() const; void setStyle(QStyle * /KeepReference/); bool isEnabledTo(const QWidget *) const; public slots: void setEnabled(bool); void setDisabled(bool); void setWindowModified(bool); public: QRect frameGeometry() const; QRect normalGeometry() const; int x() const; int y() const; QPoint pos() const; QSize frameSize() const; QRect childrenRect() const; QRegion childrenRegion() const; QSize minimumSize() const; QSize maximumSize() const; void setMinimumSize(int minw, int minh); void setMaximumSize(int maxw, int maxh); void setMinimumWidth(int minw); void setMinimumHeight(int minh); void setMaximumWidth(int maxw); void setMaximumHeight(int maxh); QSize sizeIncrement() const; void setSizeIncrement(int w, int h); QSize baseSize() const; void setBaseSize(int basew, int baseh); void setFixedSize(const QSize &); void setFixedSize(int w, int h); void setFixedWidth(int w); void setFixedHeight(int h); QPoint mapToGlobal(const QPoint &) const; QPointF mapToGlobal(const QPointF &) const; QPoint mapFromGlobal(const QPoint &) const; QPointF mapFromGlobal(const QPointF &) const; QPoint mapToParent(const QPoint &) const; QPointF mapToParent(const QPointF &) const; QPoint mapFromParent(const QPoint &) const; QPointF mapFromParent(const QPointF &) const; QPoint mapTo(const QWidget *, const QPoint &) const; QPointF mapTo(const QWidget *, const QPointF &) const; QPoint mapFrom(const QWidget *, const QPoint &) const; QPointF mapFrom(const QWidget *, const QPointF &) const; QWidget *window() const; const QPalette &palette() const; void setPalette(const QPalette &); void setBackgroundRole(QPalette::ColorRole); QPalette::ColorRole backgroundRole() const; void setForegroundRole(QPalette::ColorRole); QPalette::ColorRole foregroundRole() const; void setFont(const QFont &); QCursor cursor() const; void setCursor(const QCursor &); void unsetCursor(); void setMask(const QBitmap &); void setMask(const QRegion &); QRegion mask() const; void clearMask(); void setWindowTitle(const QString &); QString windowTitle() const; void setWindowIcon(const QIcon &icon); QIcon windowIcon() const; void setWindowIconText(const QString &); QString windowIconText() const; void setWindowRole(const QString &); QString windowRole() const; void setWindowOpacity(qreal level); qreal windowOpacity() const; bool isWindowModified() const; void setToolTip(const QString &); QString toolTip() const; void setStatusTip(const QString &); QString statusTip() const; void setWhatsThis(const QString &); QString whatsThis() const; %If (PyQt_Accessibility) QString accessibleName() const; %End %If (PyQt_Accessibility) void setAccessibleName(const QString &name); %End %If (PyQt_Accessibility) QString accessibleDescription() const; %End %If (PyQt_Accessibility) void setAccessibleDescription(const QString &description); %End void setLayoutDirection(Qt::LayoutDirection direction); Qt::LayoutDirection layoutDirection() const; void unsetLayoutDirection(); bool isRightToLeft() const; bool isLeftToRight() const; public slots: void setFocus(); public: bool isActiveWindow() const; void activateWindow(); void clearFocus(); void setFocus(Qt::FocusReason reason); Qt::FocusPolicy focusPolicy() const; void setFocusPolicy(Qt::FocusPolicy policy); bool hasFocus() const; static void setTabOrder(QWidget *, QWidget *); void setFocusProxy(QWidget * /KeepReference/); QWidget *focusProxy() const; Qt::ContextMenuPolicy contextMenuPolicy() const; void setContextMenuPolicy(Qt::ContextMenuPolicy policy); void grabMouse(); void grabMouse(const QCursor &); void releaseMouse(); void grabKeyboard(); void releaseKeyboard(); int grabShortcut(const QKeySequence &key, Qt::ShortcutContext context = Qt::WindowShortcut); void releaseShortcut(int id); void setShortcutEnabled(int id, bool enabled = true); static QWidget *mouseGrabber(); static QWidget *keyboardGrabber(); void setUpdatesEnabled(bool enable); public slots: void update(); void repaint(); public: void update(const QRect &); void update(const QRegion &); void repaint(int x, int y, int w, int h); void repaint(const QRect &); void repaint(const QRegion &); public slots: virtual void setVisible(bool visible); void setHidden(bool hidden); void show(); void hide(); void showMinimized(); void showMaximized(); void showFullScreen(); void showNormal(); bool close(); void raise(); void lower(); public: void stackUnder(QWidget *); void move(const QPoint &); void resize(const QSize &); void setGeometry(const QRect &); void adjustSize(); bool isVisibleTo(const QWidget *) const; bool isMinimized() const; bool isMaximized() const; bool isFullScreen() const; Qt::WindowStates windowState() const; void setWindowState(Qt::WindowStates state); void overrideWindowState(Qt::WindowStates state); virtual QSize sizeHint() const; virtual QSize minimumSizeHint() const; QSizePolicy sizePolicy() const; void setSizePolicy(QSizePolicy); virtual int heightForWidth(int) const; QRegion visibleRegion() const; void setContentsMargins(int left, int top, int right, int bottom); QRect contentsRect() const; QLayout *layout() const; void setLayout(QLayout * /Transfer/); %MethodCode Py_BEGIN_ALLOW_THREADS sipCpp->setLayout(a0); Py_END_ALLOW_THREADS // Internally Qt has reparented all of the widgets in the layout, so we need // to update the ownership hierachy. qtwidgets_TransferLayoutWidgets(a0, sipSelf); %End void updateGeometry(); void setParent(QWidget *parent /TransferThis/); void setParent(QWidget *parent /TransferThis/, Qt::WindowFlags f); void scroll(int dx, int dy); void scroll(int dx, int dy, const QRect &); QWidget *focusWidget() const; QWidget *nextInFocusChain() const; bool acceptDrops() const; void setAcceptDrops(bool on); %If (Qt_6_3_0 -) QAction *addAction(const QIcon &icon, const QString &text) /Transfer/; %End %If (Qt_6_3_0 -) QAction *addAction(const QIcon &icon, const QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, Qt::ConnectionType type = Qt::AutoConnection) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData(), a3); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End %End %If (Qt_6_3_0 -) QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut) /Transfer/; %End %If (Qt_6_3_0 -) QAction *addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, Qt::ConnectionType type = Qt::AutoConnection) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a3, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, *a2, receiver, slot_signature.constData(), a4); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } %End %End %If (Qt_6_3_0 -) QAction *addAction(const QString &text) /Transfer/; %End %If (Qt_6_3_0 -) QAction *addAction(const QString &text, const QKeySequence &shortcut) /Transfer/; %End %If (Qt_6_3_0 -) QAction *addAction(QString &text, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, Qt::ConnectionType type = Qt::AutoConnection) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a1, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, receiver, slot_signature.constData(), a2); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(1, a1); } %End %End %If (Qt_6_3_0 -) QAction *addAction(const QString &text, const QKeySequence &shortcut, SIP_PYOBJECT slot /TypeHint="PYQT_SLOT"/, Qt::ConnectionType type = Qt::AutoConnection) /Transfer/; %MethodCode QObject *receiver; QByteArray slot_signature; if ((sipError = pyqt6_qtwidgets_get_connection_parts(a2, sipCpp, "()", false, &receiver, slot_signature)) == sipErrorNone) { sipRes = sipCpp->addAction(*a0, *a1, receiver, slot_signature.constData(), a3); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End %End void addAction(QAction *action); void addActions(const QList &actions); void insertAction(QAction *before, QAction *action); void insertActions(QAction *before, const QList &actions); void removeAction(QAction *action); QList actions() const; void setWindowFlags(Qt::WindowFlags type); void overrideWindowFlags(Qt::WindowFlags type); static QWidget *find(WId); QWidget *childAt(const QPoint &p) const; void setAttribute(Qt::WidgetAttribute attribute, bool on = true); virtual QPaintEngine *paintEngine() const; void ensurePolished() const; bool isAncestorOf(const QWidget *child) const; signals: void customContextMenuRequested(const QPoint &pos); protected: virtual bool event(QEvent *); virtual void mousePressEvent(QMouseEvent *); virtual void mouseReleaseEvent(QMouseEvent *); virtual void mouseDoubleClickEvent(QMouseEvent *); virtual void mouseMoveEvent(QMouseEvent *); virtual void wheelEvent(QWheelEvent *); virtual void keyPressEvent(QKeyEvent *); virtual void keyReleaseEvent(QKeyEvent *); virtual void focusInEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *); virtual void enterEvent(QEnterEvent *event); virtual void leaveEvent(QEvent *); virtual void paintEvent(QPaintEvent *); virtual void moveEvent(QMoveEvent *); virtual void resizeEvent(QResizeEvent *); virtual void closeEvent(QCloseEvent *); virtual void contextMenuEvent(QContextMenuEvent *); virtual void tabletEvent(QTabletEvent *); virtual void actionEvent(QActionEvent *); virtual void dragEnterEvent(QDragEnterEvent *); virtual void dragMoveEvent(QDragMoveEvent *); virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void showEvent(QShowEvent *); virtual void hideEvent(QHideEvent *); virtual void changeEvent(QEvent *); virtual int metric(QPaintDevice::PaintDeviceMetric) const; virtual void inputMethodEvent(QInputMethodEvent *); public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery) const; protected: void updateMicroFocus(Qt::InputMethodQuery query = Qt::ImQueryAll); void create(WId window = 0, bool initializeWindow = true, bool destroyOldWindow = true); void destroy(bool destroyWindow = true, bool destroySubWindows = true); virtual bool focusNextPrevChild(bool next); bool focusNextChild(); bool focusPreviousChild(); public: QWidget *childAt(int ax, int ay) const; Qt::WindowType windowType() const; Qt::WindowFlags windowFlags() const; WId winId() const; bool isWindow() const; bool isEnabled() const; bool isModal() const; int minimumWidth() const; int minimumHeight() const; int maximumWidth() const; int maximumHeight() const; void setMinimumSize(const QSize &s); void setMaximumSize(const QSize &s); void setSizeIncrement(const QSize &s); void setBaseSize(const QSize &s); const QFont &font() const; QFontMetrics fontMetrics() const; QFontInfo fontInfo() const; void setMouseTracking(bool enable); bool hasMouseTracking() const; bool underMouse() const; bool updatesEnabled() const; void update(int ax, int ay, int aw, int ah); bool isVisible() const; bool isHidden() const; void move(int ax, int ay); void resize(int w, int h); void setGeometry(int ax, int ay, int aw, int ah); QRect rect() const; const QRect &geometry() const; QSize size() const; int width() const; int height() const; QWidget *parentWidget() const; void setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver); bool testAttribute(Qt::WidgetAttribute attribute) const; Qt::WindowModality windowModality() const; void setWindowModality(Qt::WindowModality windowModality); bool autoFillBackground() const; void setAutoFillBackground(bool enabled); void setStyleSheet(const QString &styleSheet); QString styleSheet() const; void setShortcutAutoRepeat(int id, bool enabled = true); QByteArray saveGeometry() const; bool restoreGeometry(const QByteArray &geometry); enum RenderFlag /BaseType=Flag/ { DrawWindowBackground, DrawChildren, IgnoreMask, }; typedef QFlags RenderFlags; void render(QPaintDevice *target, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags flags = QWidget::RenderFlags(QWidget::DrawWindowBackground | QWidget::DrawChildren)); void render(QPainter *painter, const QPoint &targetOffset = QPoint(), const QRegion &sourceRegion = QRegion(), QWidget::RenderFlags flags = QWidget::RenderFlags(QWidget::DrawWindowBackground | QWidget::DrawChildren)); void setLocale(const QLocale &locale); QLocale locale() const; void unsetLocale(); WId effectiveWinId() const; QWidget *nativeParentWidget() const; void setWindowFilePath(const QString &filePath); QString windowFilePath() const; QGraphicsProxyWidget *graphicsProxyWidget() const; QGraphicsEffect *graphicsEffect() const; void setGraphicsEffect(QGraphicsEffect *effect /Transfer/); void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags()); void ungrabGesture(Qt::GestureType type); void setContentsMargins(const QMargins &margins); QMargins contentsMargins() const; QWidget *previousInFocusChain() const; Qt::InputMethodHints inputMethodHints() const; void setInputMethodHints(Qt::InputMethodHints hints); virtual bool hasHeightForWidth() const; QPixmap grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1))); static SIP_PYOBJECT createWindowContainer(QWindow *window /GetWrapper/, QWidget *parent /GetWrapper/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()) /Factory,TypeHint="QWidget"/; %MethodCode // Ownersip issues are complicated so we handle them explicitly. QWidget *w = QWidget::createWindowContainer(a0, a1, *a2); sipRes = sipConvertFromNewType(w, sipType_QWidget, a1Wrapper); if (sipRes) sipTransferTo(a0Wrapper, sipRes); %End QWindow *windowHandle() const; protected: virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result /Out/); virtual QPainter *sharedPainter() const; virtual void initPainter(QPainter *painter) const; public: void setToolTipDuration(int msec); int toolTipDuration() const; signals: void windowTitleChanged(const QString &title); void windowIconChanged(const QIcon &icon); void windowIconTextChanged(const QString &iconText); public: void setTabletTracking(bool enable); bool hasTabletTracking() const; void setWindowFlag(Qt::WindowType, bool on = true); QScreen *screen() const; void setScreen(QScreen *); }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.4844224 PyQt6-6.6.1/sip/QtWidgets/qwidgetaction.sip0000644000076500000240000000301714532160401017450 0ustar00philstaff// qwidgetaction.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWidgetAction : QAction { %TypeHeaderCode #include %End public: explicit QWidgetAction(QObject *parent /TransferThis/); virtual ~QWidgetAction(); void setDefaultWidget(QWidget *w /Transfer/); QWidget *defaultWidget() const; QWidget *requestWidget(QWidget *parent); void releaseWidget(QWidget *widget); protected: virtual bool event(QEvent *); virtual bool eventFilter(QObject *, QEvent *); virtual QWidget *createWidget(QWidget *parent); virtual void deleteWidget(QWidget *widget); QList createdWidgets() const; }; ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.5472038 PyQt6-6.6.1/sip/QtWidgets/qwizard.sip0000644000076500000240000001672114532160402016276 0ustar00philstaff// qwizard.sip generated by MetaSIP // // This file is part of the QtWidgets Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QWizard : QDialog { %TypeHeaderCode #include %End public: enum WizardButton { BackButton, NextButton, CommitButton, FinishButton, CancelButton, HelpButton, CustomButton1, CustomButton2, CustomButton3, Stretch, }; enum WizardPixmap { WatermarkPixmap, LogoPixmap, BannerPixmap, BackgroundPixmap, }; enum WizardStyle { ClassicStyle, ModernStyle, MacStyle, AeroStyle, }; enum WizardOption /BaseType=Flag/ { IndependentPages, IgnoreSubTitles, ExtendedWatermarkPixmap, NoDefaultButton, NoBackButtonOnStartPage, NoBackButtonOnLastPage, DisabledBackButtonOnLastPage, HaveNextButtonOnLastPage, HaveFinishButtonOnEarlyPages, NoCancelButton, CancelButtonOnLeft, HaveHelpButton, HelpButtonOnRight, HaveCustomButton1, HaveCustomButton2, HaveCustomButton3, NoCancelButtonOnLastPage, }; typedef QFlags WizardOptions; QWizard(QWidget *parent /TransferThis/ = 0, Qt::WindowFlags flags = Qt::WindowFlags()); virtual ~QWizard(); int addPage(QWizardPage *page /Transfer/); void setPage(int id, QWizardPage *page /Transfer/); QWizardPage *page(int id) const; bool hasVisitedPage(int id) const; QList visitedIds() const; void setStartId(int id); int startId() const; QWizardPage *currentPage() const; int currentId() const; virtual bool validateCurrentPage(); virtual int nextId() const; void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; void setWizardStyle(QWizard::WizardStyle style); QWizard::WizardStyle wizardStyle() const; void setOption(QWizard::WizardOption option, bool on = true); bool testOption(QWizard::WizardOption option) const; void setOptions(QWizard::WizardOptions options); QWizard::WizardOptions options() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; void setButtonLayout(const QList &layout); void setButton(QWizard::WizardButton which, QAbstractButton *button /Transfer/); QAbstractButton *button(QWizard::WizardButton which) const /Transfer/; void setTitleFormat(Qt::TextFormat format); Qt::TextFormat titleFormat() const; void setSubTitleFormat(Qt::TextFormat format); Qt::TextFormat subTitleFormat() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setDefaultProperty(const char *className, const char *property, SIP_PYOBJECT changedSignal /TypeHint="PYQT_SIGNAL"/); %MethodCode QByteArray signal_signature; if ((sipError = pyqt6_qtwidgets_get_signal_signature(a2, 0, signal_signature)) == sipErrorNone) { sipCpp->setDefaultProperty(a0, a1, signal_signature.constData()); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(2, a2); } %End virtual void setVisible(bool visible); virtual QSize sizeHint() const; signals: void currentIdChanged(int id); void helpRequested(); void customButtonClicked(int which); public slots: void back(); void next(); void restart(); protected: virtual bool event(QEvent *event); virtual void resizeEvent(QResizeEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void done(int result); virtual void initializePage(int id); virtual void cleanupPage(int id); public: void removePage(int id); QList pageIds() const; void setSideWidget(QWidget *widget /Transfer/); QWidget *sideWidget() const; signals: void pageAdded(int id); void pageRemoved(int id); public slots: %If (Qt_6_4_0 -) void setCurrentId(int id); %End }; class QWizardPage : QWidget { %TypeHeaderCode #include %End public: explicit QWizardPage(QWidget *parent /TransferThis/ = 0); virtual ~QWizardPage(); void setTitle(const QString &title); QString title() const; void setSubTitle(const QString &subTitle); QString subTitle() const; void setPixmap(QWizard::WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(QWizard::WizardPixmap which) const; void setFinalPage(bool finalPage); bool isFinalPage() const; void setCommitPage(bool commitPage); bool isCommitPage() const; void setButtonText(QWizard::WizardButton which, const QString &text); QString buttonText(QWizard::WizardButton which) const; virtual void initializePage(); virtual void cleanupPage(); virtual bool validatePage(); virtual bool isComplete() const; virtual int nextId() const; signals: void completeChanged(); protected: void setField(const QString &name, const QVariant &value); QVariant field(const QString &name) const; void registerField(const QString &name, QWidget *widget, const char *property = 0, SIP_PYOBJECT changedSignal /TypeHint="PYQT_SIGNAL"/ = 0) [void (const QString &name, QWidget *widget, const char *property = 0, const char *changedSignal = 0)]; %MethodCode typedef sipErrorState (*pyqt6_get_signal_signature_t)(PyObject *, QObject *, QByteArray &); static pyqt6_get_signal_signature_t pyqt6_get_signal_signature = 0; if (!pyqt6_get_signal_signature) { pyqt6_get_signal_signature = (pyqt6_get_signal_signature_t)sipImportSymbol("pyqt6_get_signal_signature"); Q_ASSERT(pyqt6_get_signal_signature); } QByteArray signal_signature; const char *signal = 0; if (a3 && a3 != Py_None) { if ((sipError = pyqt6_get_signal_signature(a3, a1, signal_signature)) == sipErrorNone) { signal = signal_signature.constData(); } else if (sipError == sipErrorContinue) { sipError = sipBadCallableArg(3, a3); } } if (sipError == sipErrorNone) { Py_BEGIN_ALLOW_THREADS #if defined(SIP_PROTECTED_IS_PUBLIC) sipCpp->registerField(*a0, a1, a2, signal); #else sipCpp->sipProtect_registerField(*a0, a1, a2, signal); #endif Py_END_ALLOW_THREADS } %End QWizard *wizard() const; }; ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372162.52816 PyQt6-6.6.1/sip/QtXml/0000755000076500000240000000000014532160403013224 5ustar00philstaff././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3216815 PyQt6-6.6.1/sip/QtXml/QtXmlmod.sip0000644000076500000240000000360514532160401015510 0ustar00philstaff// QtXmlmod.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %Module(name=PyQt6.QtXml, keyword_arguments="Optional", use_limited_api=True) %Import QtCore/QtCoremod.sip %Copying Copyright (c) 2023 Riverbank Computing Limited This file is part of PyQt6. This file may be used under the terms of the GNU General Public License version 3.0 as published by the Free Software Foundation and appearing in the file LICENSE included in the packaging of this file. Please review the following information to ensure the GNU General Public License version 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html. If you do not wish to use this file under the terms of the GPL version 3.0 then you may purchase a commercial license. For more information contact info@riverbankcomputing.com. This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. %End %DefaultSupertype PyQt6.sip.simplewrapper %Include qdom.sip ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372161.3212423 PyQt6-6.6.1/sip/QtXml/qdom.sip0000644000076500000240000004064714532160401014712 0ustar00philstaff// qdom.sip generated by MetaSIP // // This file is part of the QtXml Python extension module. // // Copyright (c) 2023 Riverbank Computing Limited // // This file is part of PyQt6. // // This file may be used under the terms of the GNU General Public License // version 3.0 as published by the Free Software Foundation and appearing in // the file LICENSE included in the packaging of this file. Please review the // following information to ensure the GNU General Public License version 3.0 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. // // If you do not wish to use this file under the terms of the GPL version 3.0 // then you may purchase a commercial license. For more information contact // info@riverbankcomputing.com. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. class QDomImplementation { %TypeHeaderCode #include %End public: QDomImplementation(); QDomImplementation(const QDomImplementation &); ~QDomImplementation(); bool operator==(const QDomImplementation &) const; bool operator!=(const QDomImplementation &) const; bool hasFeature(const QString &feature, const QString &version) const; QDomDocumentType createDocumentType(const QString &qName, const QString &publicId, const QString &systemId); QDomDocument createDocument(const QString &nsURI, const QString &qName, const QDomDocumentType &doctype); enum InvalidDataPolicy { AcceptInvalidChars, DropInvalidChars, ReturnNullNode, }; static QDomImplementation::InvalidDataPolicy invalidDataPolicy(); static void setInvalidDataPolicy(QDomImplementation::InvalidDataPolicy policy); bool isNull(); }; class QDomNode { %TypeHeaderCode #include %End public: enum NodeType { ElementNode, AttributeNode, TextNode, CDATASectionNode, EntityReferenceNode, EntityNode, ProcessingInstructionNode, CommentNode, DocumentNode, DocumentTypeNode, DocumentFragmentNode, NotationNode, BaseNode, CharacterDataNode, }; enum EncodingPolicy { EncodingFromDocument, EncodingFromTextStream, }; QDomNode(); QDomNode(const QDomNode &); ~QDomNode(); bool operator==(const QDomNode &) const; bool operator!=(const QDomNode &) const; QDomNode insertBefore(const QDomNode &newChild, const QDomNode &refChild); QDomNode insertAfter(const QDomNode &newChild, const QDomNode &refChild); QDomNode replaceChild(const QDomNode &newChild, const QDomNode &oldChild); QDomNode removeChild(const QDomNode &oldChild); QDomNode appendChild(const QDomNode &newChild); bool hasChildNodes() const; QDomNode cloneNode(bool deep = true) const; void normalize(); bool isSupported(const QString &feature, const QString &version) const; QString nodeName() const; QDomNode::NodeType nodeType() const; QDomNode parentNode() const; QDomNodeList childNodes() const; QDomNode firstChild() const; QDomNode lastChild() const; QDomNode previousSibling() const; QDomNode nextSibling() const; QDomNamedNodeMap attributes() const; QDomDocument ownerDocument() const; QString namespaceURI() const; QString localName() const; bool hasAttributes() const; QString nodeValue() const; void setNodeValue(const QString &); QString prefix() const; void setPrefix(const QString &pre); bool isAttr() const; bool isCDATASection() const; bool isDocumentFragment() const; bool isDocument() const; bool isDocumentType() const; bool isElement() const; bool isEntityReference() const; bool isText() const; bool isEntity() const; bool isNotation() const; bool isProcessingInstruction() const; bool isCharacterData() const; bool isComment() const; QDomNode namedItem(const QString &name) const; bool isNull() const; void clear(); QDomAttr toAttr() const; QDomCDATASection toCDATASection() const; QDomDocumentFragment toDocumentFragment() const; QDomDocument toDocument() const; QDomDocumentType toDocumentType() const; QDomElement toElement() const; QDomEntityReference toEntityReference() const; QDomText toText() const; QDomEntity toEntity() const; QDomNotation toNotation() const; QDomProcessingInstruction toProcessingInstruction() const; QDomCharacterData toCharacterData() const; QDomComment toComment() const; void save(QTextStream &, int, QDomNode::EncodingPolicy = QDomNode::EncodingFromDocument) const /ReleaseGIL/; QDomElement firstChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const; QDomElement lastChildElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const; QDomElement previousSiblingElement(const QString &tagName = QString(), const QString &namespaceURI = QString()) const; QDomElement nextSiblingElement(const QString &taName = QString(), const QString &namespaceURI = QString()) const; int lineNumber() const; int columnNumber() const; }; class QDomNodeList { %TypeHeaderCode #include %End public: QDomNodeList(); QDomNodeList(const QDomNodeList &); ~QDomNodeList(); bool operator==(const QDomNodeList &) const; bool operator!=(const QDomNodeList &) const; QDomNode item(int index) const; QDomNode at(int index) const; int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; }; class QDomDocumentType : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentType(); QDomDocumentType(const QDomDocumentType &x); QString name() const; QDomNamedNodeMap entities() const; QDomNamedNodeMap notations() const; QString publicId() const; QString systemId() const; QString internalSubset() const; QDomNode::NodeType nodeType() const; }; class QDomDocument : QDomNode { %TypeHeaderCode #include %End public: QDomDocument(); explicit QDomDocument(const QString &name); explicit QDomDocument(const QDomDocumentType &doctype); QDomDocument(const QDomDocument &x); ~QDomDocument(); QDomElement createElement(const QString &tagName); QDomDocumentFragment createDocumentFragment(); QDomText createTextNode(const QString &data); QDomComment createComment(const QString &data); QDomCDATASection createCDATASection(const QString &data); QDomProcessingInstruction createProcessingInstruction(const QString &target, const QString &data); QDomAttr createAttribute(const QString &name); QDomEntityReference createEntityReference(const QString &name); QDomNodeList elementsByTagName(const QString &tagname) const; QDomNode importNode(const QDomNode &importedNode, bool deep); QDomElement createElementNS(const QString &nsURI, const QString &qName); QDomAttr createAttributeNS(const QString &nsURI, const QString &qName); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName); QDomElement elementById(const QString &elementId); QDomDocumentType doctype() const; QDomImplementation implementation() const; QDomElement documentElement() const; QDomNode::NodeType nodeType() const; %If (Qt_6_5_0 -) enum class ParseOption { Default, UseNamespaceProcessing, PreserveSpacingOnlyNodes, }; %End %If (Qt_6_5_0 -) typedef QFlags ParseOptions; %End %If (Qt_6_5_0 -) SIP_PYOBJECT setContent(QXmlStreamReader *reader, QDomDocument::ParseOptions options = QDomDocument::ParseOption::Default) /ReleaseGIL,TypeHint="Tuple [bool, str, int, int]"/; %MethodCode QDomDocument::ParseResult pr; Py_BEGIN_ALLOW_THREADS pr = sipCpp->setContent(a0, *a1); Py_END_ALLOW_THREADS return sipBuildResult(NULL, "(bNnn)", (int)bool(pr), new QString(pr.errorMessage), sipType_QString, NULL, (long long)pr.errorLine, (long long)pr.errorColumn); %End %End %If (Qt_6_5_0 -) SIP_PYOBJECT setContent(QIODevice *device, QDomDocument::ParseOptions options = QDomDocument::ParseOption::Default) /ReleaseGIL,TypeHint="Tuple [bool, str, int, int]"/; %MethodCode QDomDocument::ParseResult pr; Py_BEGIN_ALLOW_THREADS pr = sipCpp->setContent(a0, *a1); Py_END_ALLOW_THREADS return sipBuildResult(NULL, "(bNnn)", (int)bool(pr), new QString(pr.errorMessage), sipType_QString, NULL, (long long)pr.errorLine, (long long)pr.errorColumn); %End %End %If (Qt_6_5_0 -) SIP_PYOBJECT setContent(QAnyStringView data, QDomDocument::ParseOptions options = QDomDocument::ParseOption::Default) /TypeHint="Tuple [bool, str, int, int]"/; %MethodCode QDomDocument::ParseResult pr; pr = sipCpp->setContent(*a0, *a1); return sipBuildResult(NULL, "(bNnn)", (int)bool(pr), new QString(pr.errorMessage), sipType_QString, NULL, (long long)pr.errorLine, (long long)pr.errorColumn); %End %End bool setContent(const QByteArray &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(const QString &text, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); bool setContent(QIODevice *dev, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; %If (- Qt_6_5_0) bool setContent(const QByteArray &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); %End %If (- Qt_6_5_0) bool setContent(const QString &text, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); %End %If (- Qt_6_5_0) bool setContent(QIODevice *dev, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0) /ReleaseGIL/; %End bool setContent(QXmlStreamReader *reader, bool namespaceProcessing, QString *errorMsg /Out/ = 0, int *errorLine = 0, int *errorColumn = 0); QString toString(int indent = 1) const; QByteArray toByteArray(int indent = 1) const; }; class QDomNamedNodeMap { %TypeHeaderCode #include %End public: QDomNamedNodeMap(); QDomNamedNodeMap(const QDomNamedNodeMap &); ~QDomNamedNodeMap(); bool operator==(const QDomNamedNodeMap &) const; bool operator!=(const QDomNamedNodeMap &) const; QDomNode namedItem(const QString &name) const; QDomNode setNamedItem(const QDomNode &newNode); QDomNode removeNamedItem(const QString &name); QDomNode item(int index) const; QDomNode namedItemNS(const QString &nsURI, const QString &localName) const; QDomNode setNamedItemNS(const QDomNode &newNode); QDomNode removeNamedItemNS(const QString &nsURI, const QString &localName); int length() const; int count() const /__len__/; int size() const; bool isEmpty() const; bool contains(const QString &name) const; }; class QDomDocumentFragment : QDomNode { %TypeHeaderCode #include %End public: QDomDocumentFragment(); QDomDocumentFragment(const QDomDocumentFragment &x); QDomNode::NodeType nodeType() const; }; class QDomCharacterData : QDomNode { %TypeHeaderCode #include %End public: QDomCharacterData(); QDomCharacterData(const QDomCharacterData &x); QString substringData(unsigned long offset, unsigned long count); void appendData(const QString &arg); void insertData(unsigned long offset, const QString &arg); void deleteData(unsigned long offset, unsigned long count); void replaceData(unsigned long offset, unsigned long count, const QString &arg); int length() const; QString data() const; void setData(const QString &); QDomNode::NodeType nodeType() const; }; class QDomAttr : QDomNode { %TypeHeaderCode #include %End public: QDomAttr(); QDomAttr(const QDomAttr &x); QString name() const; bool specified() const; QDomElement ownerElement() const; QString value() const; void setValue(const QString &); QDomNode::NodeType nodeType() const; }; class QDomElement : QDomNode { %TypeHeaderCode #include %End public: QDomElement(); QDomElement(const QDomElement &x); QString attribute(const QString &name, const QString &defaultValue = QString()) const; void setAttribute(const QString &name, const QString &value); void setAttribute(const QString &name, qlonglong value); void setAttribute(const QString &name, qulonglong value); void setAttribute(const QString &name, double value /Constrained/); void setAttribute(const QString &name, int value); void removeAttribute(const QString &name); QDomAttr attributeNode(const QString &name); QDomAttr setAttributeNode(const QDomAttr &newAttr); QDomAttr removeAttributeNode(const QDomAttr &oldAttr); QDomNodeList elementsByTagName(const QString &tagname) const; bool hasAttribute(const QString &name) const; QString attributeNS(const QString &nsURI, const QString &localName, const QString &defaultValue = QString()) const; void setAttributeNS(const QString &nsURI, const QString &qName, const QString &value); void setAttributeNS(const QString &nsURI, const QString &qName, double value /Constrained/); void setAttributeNS(const QString &nsURI, const QString &qName, SIP_PYOBJECT value /TypeHint="int"/); %MethodCode qlonglong val = sipLong_AsLongLong(a2); if (!PyErr_Occurred()) { sipCpp->setAttributeNS(*a0, *a1, val); } else { // If it is positive then it might fit an unsigned long long. qulonglong uval = sipLong_AsUnsignedLongLong(a2); if (!PyErr_Occurred()) { sipCpp->setAttributeNS(*a0, *a1, uval); } else { sipError = (PyErr_ExceptionMatches(PyExc_OverflowError) ? sipErrorFail : sipErrorContinue); } } %End void removeAttributeNS(const QString &nsURI, const QString &localName); QDomAttr attributeNodeNS(const QString &nsURI, const QString &localName); QDomAttr setAttributeNodeNS(const QDomAttr &newAttr); QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName) const; bool hasAttributeNS(const QString &nsURI, const QString &localName) const; QString tagName() const; void setTagName(const QString &name); QDomNamedNodeMap attributes() const; QDomNode::NodeType nodeType() const; QString text() const; }; class QDomText : QDomCharacterData { %TypeHeaderCode #include %End public: QDomText(); QDomText(const QDomText &x); QDomText splitText(int offset); QDomNode::NodeType nodeType() const; }; class QDomComment : QDomCharacterData { %TypeHeaderCode #include %End public: QDomComment(); QDomComment(const QDomComment &x); QDomNode::NodeType nodeType() const; }; class QDomCDATASection : QDomText { %TypeHeaderCode #include %End public: QDomCDATASection(); QDomCDATASection(const QDomCDATASection &x); QDomNode::NodeType nodeType() const; }; class QDomNotation : QDomNode { %TypeHeaderCode #include %End public: QDomNotation(); QDomNotation(const QDomNotation &x); QString publicId() const; QString systemId() const; QDomNode::NodeType nodeType() const; }; class QDomEntity : QDomNode { %TypeHeaderCode #include %End public: QDomEntity(); QDomEntity(const QDomEntity &x); QString publicId() const; QString systemId() const; QString notationName() const; QDomNode::NodeType nodeType() const; }; class QDomEntityReference : QDomNode { %TypeHeaderCode #include %End public: QDomEntityReference(); QDomEntityReference(const QDomEntityReference &x); QDomNode::NodeType nodeType() const; }; class QDomProcessingInstruction : QDomNode { %TypeHeaderCode #include %End public: QDomProcessingInstruction(); QDomProcessingInstruction(const QDomProcessingInstruction &x); QString target() const; QString data() const; void setData(const QString &d); QDomNode::NodeType nodeType() const; }; QTextStream &operator<<(QTextStream &, const QDomNode &) /ReleaseGIL/; ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372161.166641 PyQt6-6.6.1/sip/pyqt-gpl.sip0000644000076500000240000000002614532160401014445 0ustar00philstaff%License /Type="gpl"/ ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3256826 PyQt6-6.6.1/uic/0000755000076500000240000000000014532160402012143 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372162.328746 PyQt6-6.6.1/uic/Compiler/0000755000076500000240000000000014532160402013715 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.305638 PyQt6-6.6.1/uic/Compiler/__init__.py0000644000076500000240000000175414532160372016043 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.308448 PyQt6-6.6.1/uic/Compiler/as_string.py0000644000076500000240000000260414532160372016270 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import re def as_string(obj): if isinstance(obj, str): return '"' + _escape(obj) + '"' return str(obj) _esc_regex = re.compile(r"(\"|\'|\\)") def _escape(text): # This escapes any escaped single or double quote or backslash. x = _esc_regex.sub(r"\\\1", text) # This replaces any '\n' with an escaped version and a real line break. return re.sub(r'\n', r'\\n"\n"', x) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3052254 PyQt6-6.6.1/uic/Compiler/compiler.py0000644000076500000240000000753614532160372016122 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # # This file is part of PyQt. # # You may use this file under the terms of the GPL v3 or the revised BSD # license as follows: # # "Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of the Riverbank Computing Limited nor the names # of its contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." import sys from ..properties import Properties from ..uiparser import UIParser from . import qtproxies from .indenter import createCodeIndenter, getIndenter, write_code from .qobjectcreator import CompilerCreatorPolicy class UICompiler(UIParser): def __init__(self): UIParser.__init__(self, qtproxies.QtCore, qtproxies.QtGui, qtproxies.QtWidgets, CompilerCreatorPolicy()) def reset(self): qtproxies.i18n_strings = [] UIParser.reset(self) def setContext(self, context): qtproxies.i18n_context = context def createToplevelWidget(self, classname, widgetname): indenter = getIndenter() indenter.level = 0 indenter.write("from PyQt6 import QtCore, QtGui, QtWidgets") indenter.write("") indenter.write("") indenter.write("class Ui_%s(object):" % self.uiname) indenter.indent() indenter.write("def setupUi(self, %s):" % widgetname) indenter.indent() w = self.factory.createQtObject(classname, widgetname, is_attribute=False, no_instantiation=True) w.baseclass = classname w.uiclass = "Ui_%s" % self.uiname return w def setDelayedProps(self): write_code("") write_code("self.retranslateUi(%s)" % self.toplevelWidget) UIParser.setDelayedProps(self) def finalize(self): indenter = getIndenter() indenter.level = 1 indenter.write("") indenter.write("def retranslateUi(self, %s):" % self.toplevelWidget) indenter.indent() if qtproxies.i18n_strings: indenter.write("_translate = QtCore.QCoreApplication.translate") for s in qtproxies.i18n_strings: indenter.write(s) else: indenter.write("pass") indenter.dedent() indenter.dedent() def compileUi(self, input_stream, output_stream): createCodeIndenter(output_stream) w = self.parse(input_stream) self.factory._cpolicy._writeOutImports() return {"widgetname": str(w), "uiclass" : w.uiclass, "baseclass" : w.baseclass} ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3062851 PyQt6-6.6.1/uic/Compiler/indenter.py0000644000076500000240000000526614532160372016116 0ustar00philstaff############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# indentwidth = 4 _indenter = None class _IndentedCodeWriter(object): def __init__(self, output): self.level = 0 self.output = output def indent(self): self.level += 1 def dedent(self): self.level -= 1 def write(self, line): if line.strip(): if indentwidth > 0: indent = " " * indentwidth line = line.replace("\t", indent) else: indent = "\t" self.output.write("%s%s\n" % (indent * self.level, line)) else: self.output.write("\n") def createCodeIndenter(output): global _indenter _indenter = _IndentedCodeWriter(output) def getIndenter(): return _indenter def write_code(string): _indenter.write(string) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.304485 PyQt6-6.6.1/uic/Compiler/misc.py0000644000076500000240000000450614532160372015235 0ustar00philstaff############################################################################# ## ## Copyright (C) 2016 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# def moduleMember(module, name): if module: return "%s.%s" % (module, name) return name class Literal(object): """Literal(string) -> new literal string will not be quoted when put into an argument list""" def __init__(self, string): self.string = string def __str__(self): return self.string def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3080065 PyQt6-6.6.1/uic/Compiler/proxy_metaclass.py0000644000076500000240000001034414532160372017514 0ustar00philstaff############################################################################# ## ## Copyright (C) 2014 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# from .misc import Literal, moduleMember class ProxyMetaclass(type): """ ProxyMetaclass is the meta-class for proxies. """ def __init__(*args): """ Initialise the meta-class. """ # Initialise as normal. type.__init__(*args) # The proxy type object we have created. proxy = args[0] # Go through the proxy's attributes looking for other proxies. for sub_proxy in proxy.__dict__.values(): if type(sub_proxy) is ProxyMetaclass: # Set the module name of the contained proxy to the name of the # container proxy. sub_proxy.module = proxy.__name__ # Attribute hierachies are created depth first so any proxies # contained in the sub-proxy whose module we have just set will # already exist and have an incomplete module name. We need to # revisit them and prepend the new name to their module names. # Note that this should be recursive but with current usage we # know there will be only one level to revisit. for sub_sub_proxy in sub_proxy.__dict__.values(): if type(sub_sub_proxy) is ProxyMetaclass: sub_sub_proxy.module = '%s.%s' % (proxy.__name__, sub_sub_proxy.module) # Makes sure there is a 'module' attribute. if not hasattr(proxy, 'module'): proxy.module = '' def __getattribute__(cls, name): try: return type.__getattribute__(cls, name) except AttributeError: # Make sure __init__()'s use of hasattr() works. if name == 'module': raise # Avoid a circular import. from .qtproxies import LiteralProxyClass return type(name, (LiteralProxyClass, ), {"module": moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__"))}) def __str__(cls): return moduleMember(type.__getattribute__(cls, "module"), type.__getattribute__(cls, "__name__")) def __or__(self, r_op): return Literal("%s|%s" % (self, r_op)) def __eq__(self, other): return str(self) == str(other) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3073227 PyQt6-6.6.1/uic/Compiler/qobjectcreator.py0000644000076500000240000001331714532160372017311 0ustar00philstaff############################################################################# ## ## Copyright (C) 2023 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import logging import sys from .as_string import as_string from .indenter import write_code from .qtproxies import QtGui, QtWidgets, Literal, strict_getattr logger = logging.getLogger(__name__) DEBUG = logger.debug class _QtWrapper(object): @classmethod def search(cls, name): try: return strict_getattr(cls.module, name) except AttributeError: return None class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, name, classes): if "." in name: idx = name.rfind(".") self._package = name[:idx] self._module = name[idx + 1:] else: self._package = None self._module = name self._classes = classes self._used = False def search(self, cls): if cls in self._classes: self._used = True # Remove any C++ scope. cls = cls.split('.')[-1] return type(cls, (QtWidgets.QWidget,), {"module": self._module}) else: return None def _writeImportCode(self): if self._used: if self._package is None: write_code("import %s" % self._module) else: write_code("from %s import %s" % (self._package, self._module)) class _CustomWidgetLoader(object): def __init__(self): self._widgets = {} self._usedWidgets = set() def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = (baseClass, module) def _resolveBaseclass(self, baseClass): try: for x in range(0, 10): try: return strict_getattr(QtWidgets, baseClass) except AttributeError: pass baseClass = self._widgets[baseClass][0] else: raise ValueError("baseclass resolve took too long, check custom widgets") except KeyError: raise ValueError("unknown baseclass %s" % baseClass) def search(self, cls): try: baseClass = self._resolveBaseclass(self._widgets[cls][0]) DEBUG("resolved baseclass of %s: %s" % (cls, baseClass)) except KeyError: return None self._usedWidgets.add(cls) return type(cls, (baseClass, ), {"module" : ""}) def _writeImportCode(self): imports = {} for widget in self._usedWidgets: _, module = self._widgets[widget] imports.setdefault(module, []).append(widget) for module, classes in sorted(imports.items()): write_code("from %s import %s" % (module, ", ".join(sorted(classes)))) class CompilerCreatorPolicy(object): def __init__(self): self._modules = [] def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, name, classes): mw = _ModuleWrapper(name, classes) self._modules.append(mw) return mw def createCustomWidgetLoader(self): cw = _CustomWidgetLoader() self._modules.append(cw) return cw def instantiate(self, ctor, object_name, ctor_args, ctor_kwargs, is_attribute, no_instantiation): return ctor(object_name, ctor_args, ctor_kwargs, is_attribute, no_instantiation) def invoke(self, rname, method, args): return method(rname, *args) def getSlot(self, object, slotname): return Literal("%s.%s" % (object, slotname)) def asString(self, s): return as_string(s) def _writeOutImports(self): for module in self._modules: module._writeImportCode() ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3109553 PyQt6-6.6.1/uic/Compiler/qtproxies.py0000644000076500000240000003744414532160372016347 0ustar00philstaff############################################################################# ## ## Copyright (C) 2023 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys import re from .as_string import as_string from .indenter import write_code from .misc import Literal, moduleMember from .proxy_metaclass import ProxyMetaclass i18n_strings = [] i18n_context = "" def i18n_print(string): i18n_strings.append(string) def i18n_void_func(name): def _printer(self, *args): i18n_print("%s.%s(%s)" % (self, name, ", ".join(map(as_string, args)))) return _printer def i18n_func(name): def _printer(self, rname, *args): i18n_print("%s = %s.%s(%s)" % (rname, self, name, ", ".join(map(as_string, args)))) return Literal(rname) return _printer def strict_getattr(module, clsname): cls = getattr(module, clsname) if issubclass(cls, LiteralProxyClass): raise AttributeError(cls) else: return cls class i18n_string(object): def __init__(self, string, disambig): self.string = string self.disambig = disambig def __str__(self): if self.disambig is None: return '_translate("%s", %s)' % (i18n_context, as_string(self.string)) return '_translate("%s", %s, %s)' % (i18n_context, as_string(self.string), as_string(self.disambig)) # Classes with this flag will be handled as literal values. If functions are # called on these classes, the literal value changes. # Example: # the code # >>> QSize(9,10).expandedTo(...) # will print just that code. AS_ARGUMENT = 0x02 # Classes with this flag may have members that are signals which themselves # will have a connect() member. AS_SIGNAL = 0x01 # ATTENTION: currently, classes can either be literal or normal. If a class # should need both kinds of behaviour, the code has to be changed. class ProxyClassMember(object): def __init__(self, proxy, function_name, flags): self.proxy = proxy self.function_name = function_name self.flags = flags def __str__(self): return "%s.%s" % (self.proxy, self.function_name) def __call__(self, *args): if self.function_name == 'setProperty': str_args = (as_string(args[0]), as_string(args[1])) else: str_args = map(as_string, args) func_call = "%s.%s(%s)" % (self.proxy, self.function_name, ", ".join(str_args)) if self.flags & AS_ARGUMENT: self.proxy._uic_name = func_call return self.proxy else: needs_translation = False for arg in args: if isinstance(arg, i18n_string): needs_translation = True if needs_translation: i18n_print(func_call) else: if self.function_name == 'connect': func_call += ' # type: ignore' write_code(func_call) def __getattribute__(self, attribute): """ Reimplemented to create a proxy connect() if requested and this might be a proxy for a signal. """ try: return object.__getattribute__(self, attribute) except AttributeError: if attribute == 'connect' and self.flags & AS_SIGNAL: return ProxyClassMember(self, attribute, 0) raise def __getitem__(self, idx): """ Reimplemented to create a proxy member that should be a signal that passes arguments. We handle signals without arguments before we get here and never apply the index notation to them. """ return ProxySignalWithArguments(self.proxy, self.function_name, idx) class ProxySignalWithArguments(object): """ This is a proxy for (what should be) a signal that passes arguments. """ def __init__(self, sender, signal_name, signal_index): self._sender = sender self._signal_name = signal_name # Convert the signal index, which will be a single argument or a tuple # of arguments, to quoted strings. if isinstance(signal_index, tuple): self._signal_index = ','.join(["'%s'" % a for a in signal_index]) else: self._signal_index = "'%s'" % signal_index def connect(self, slot): write_code("%s.%s[%s].connect(%s) # type: ignore" % (self._sender, self._signal_name, self._signal_index, slot)) class ProxyBase(metaclass=ProxyMetaclass): """ A base class for proxies using Python v3 syntax for setting the meta-class. """ class ProxyClass(ProxyBase): flags = 0 def __init__(self, object_name, ctor_args=None, ctor_kwargs=None, is_attribute=False, no_instantiation=True): if object_name: if is_attribute: object_name = 'self.' + object_name self._uic_name = object_name else: self._uic_name = "Unnamed" if not no_instantiation: args = [] if ctor_args is None else list(map(str, ctor_args)) if ctor_kwargs is not None: for k, v in ctor_kwargs.items(): args.append(k + '=' + str(v)) fun_call = '%s(%s)' % \ (moduleMember(self.module, self.__class__.__name__), ', '.join(args)) if object_name: fun_call = '%s = %s' % (object_name, fun_call) write_code(fun_call) def __str__(self): return self._uic_name def __getattribute__(self, attribute): try: return object.__getattribute__(self, attribute) except AttributeError: return ProxyClassMember(self, attribute, self.flags) class LiteralProxyClass(ProxyClass): """LiteralObject(*args) -> new literal class a literal class can be used as argument in a function call >>> class Foo(LiteralProxyClass): pass >>> str(Foo(1,2,3)) == "Foo(1,2,3)" """ flags = AS_ARGUMENT def __init__(self, *args): self._uic_name = "%s(%s)" % \ (moduleMember(self.module, self.__class__.__name__), ", ".join(map(as_string, args))) class ProxyNamespace(ProxyBase): pass # These are all the Qt classes used by pyuic6 in their namespaces. If a class # is missing, the compiler will fail, normally with an AttributeError. # # For adding new classes: # - utility classes used as literal values do not need to be listed # because they are created on the fly as subclasses of LiteralProxyClass # - classes which are *not* QWidgets inherit from ProxyClass and they # have to be listed explicitly in the correct namespace. These classes # are created via a ProxyQObjectCreator # - new QWidget-derived classes have to inherit from qtproxies.QWidget # If the widget does not need any special methods, it can be listed # in _qwidgets class QtCore(ProxyNamespace): class Qt(ProxyNamespace): pass ## connectSlotsByName and connect have to be handled as class methods, ## otherwise they would be created as LiteralProxyClasses and never be ## printed class QMetaObject(ProxyClass): @classmethod def connectSlotsByName(cls, *args): ProxyClassMember(cls, "connectSlotsByName", 0)(*args) class QObject(ProxyClass): flags = AS_SIGNAL def metaObject(self): class _FakeMetaObject(object): def className(*args): return self.__class__.__name__ return _FakeMetaObject() def objectName(self): return self._uic_name.split(".")[-1] class QtGui(ProxyNamespace): class QIcon(ProxyClass): class fromTheme(ProxyClass): pass class QConicalGradient(ProxyClass): pass class QLinearGradient(ProxyClass): pass class QRadialGradient(ProxyClass): pass class QBrush(ProxyClass): pass class QPainter(ProxyClass): pass class QPalette(ProxyClass): pass class QFont(ProxyClass): pass class QFontDatabase(ProxyClass): pass # QActions inherit from QObject for the meta-object stuff and the hierarchy # has to be correct since we have a isinstance(x, QtWidgets.QLayout) call # in the UI parser. class QAction(QtCore.QObject): pass class QActionGroup(QtCore.QObject): pass # These sub-class QWidget but aren't themselves sub-classed. _qwidgets = ("QCalendarWidget", "QDialogButtonBox", "QDockWidget", "QGroupBox", "QLineEdit", "QMainWindow", "QMenuBar", "QOpenGLWidget", "QProgressBar", "QStatusBar", "QToolBar", "QWizardPage") class QtWidgets(ProxyNamespace): class QApplication(QtCore.QObject): @staticmethod def translate(uiname, text, disambig): return i18n_string(text or "", disambig) class QSpacerItem(ProxyClass): pass class QSizePolicy(ProxyClass): pass class QButtonGroup(QtCore.QObject): pass class QLayout(QtCore.QObject): pass class QGridLayout(QLayout): pass class QBoxLayout(QLayout): pass class QHBoxLayout(QBoxLayout): pass class QVBoxLayout(QBoxLayout): pass class QFormLayout(QLayout): pass class QWidget(QtCore.QObject): def font(self): return Literal("%s.font()" % self) def minimumSizeHint(self): return Literal("%s.minimumSizeHint()" % self) def sizePolicy(self): sp = LiteralProxyClass() sp._uic_name = "%s.sizePolicy()" % self return sp class QDialog(QWidget): pass class QColorDialog(QDialog): pass class QFileDialog(QDialog): pass class QFontDialog(QDialog): pass class QInputDialog(QDialog): pass class QMessageBox(QDialog): pass class QWizard(QDialog): pass class QAbstractSlider(QWidget): pass class QDial(QAbstractSlider): pass class QScrollBar(QAbstractSlider): pass class QSlider(QAbstractSlider): pass class QMenu(QWidget): def menuAction(self): return Literal("%s.menuAction()" % self) class QTabWidget(QWidget): def addTab(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setTabText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addTab", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) class QComboBox(QWidget): pass class QFontComboBox(QComboBox): pass class QAbstractSpinBox(QWidget): pass class QDoubleSpinBox(QAbstractSpinBox): pass class QSpinBox(QAbstractSpinBox): pass class QDateTimeEdit(QAbstractSpinBox): pass class QDateEdit(QDateTimeEdit): pass class QTimeEdit(QDateTimeEdit): pass class QFrame(QWidget): pass class QLabel(QFrame): pass class QLCDNumber(QFrame): pass class QSplitter(QFrame): pass class QStackedWidget(QFrame): pass class QToolBox(QFrame): def addItem(self, *args): text = args[-1] if isinstance(text, i18n_string): i18n_print("%s.setItemText(%s.indexOf(%s), %s)" % \ (self._uic_name, self._uic_name, args[0], text)) args = args[:-1] + ("", ) ProxyClassMember(self, "addItem", 0)(*args) def indexOf(self, page): return Literal("%s.indexOf(%s)" % (self, page)) def layout(self): return QtWidgets.QLayout('%s.layout()' % self) class QAbstractScrollArea(QFrame): def viewport(self): return QtWidgets.QWidget('%s.viewport()' % self) class QGraphicsView(QAbstractScrollArea): pass class QMdiArea(QAbstractScrollArea): pass class QPlainTextEdit(QAbstractScrollArea): pass class QScrollArea(QAbstractScrollArea): pass class QTextEdit(QAbstractScrollArea): pass class QTextBrowser(QTextEdit): pass class QAbstractItemView(QAbstractScrollArea): pass class QColumnView(QAbstractItemView): pass class QHeaderView(QAbstractItemView): pass class QListView(QAbstractItemView): pass class QTableView(QAbstractItemView): def horizontalHeader(self): return QtWidgets.QHeaderView('%s.horizontalHeader()' % self) def verticalHeader(self): return QtWidgets.QHeaderView('%s.verticalHeader()' % self) class QTreeView(QAbstractItemView): def header(self): return QtWidgets.QHeaderView('%s.header()' % self) class QUndoView(QListView): pass class QListWidgetItem(ProxyClass): pass class QListWidget(QListView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") class QTableWidgetItem(ProxyClass): pass class QTableWidget(QTableView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") item = i18n_func("item") horizontalHeaderItem = i18n_func("horizontalHeaderItem") verticalHeaderItem = i18n_func("verticalHeaderItem") class QTreeWidgetItem(ProxyClass): def child(self, index): return QtWidgets.QTreeWidgetItem('%s.child(%i)' % (self, index)) class QTreeWidget(QTreeView): setSortingEnabled = i18n_void_func("setSortingEnabled") isSortingEnabled = i18n_func("isSortingEnabled") def headerItem(self): return QtWidgets.QWidget('%s.headerItem()' % self) def topLevelItem(self, index): return QtWidgets.QTreeWidgetItem( '%s.topLevelItem(%i)' % (self, index)) class QAbstractButton(QWidget): pass class QCheckBox(QAbstractButton): pass class QRadioButton(QAbstractButton): pass class QToolButton(QAbstractButton): pass class QPushButton(QAbstractButton): pass class QCommandLinkButton(QPushButton): pass class QKeySequenceEdit(QWidget): pass # Add all remaining classes. for _class in _qwidgets: if _class not in locals(): locals()[_class] = type(_class, (QWidget, ), {}) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3253093 PyQt6-6.6.1/uic/Loader/0000755000076500000240000000000014532160402013351 5ustar00philstaff././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1701372154.29908 PyQt6-6.6.1/uic/Loader/__init__.py0000644000076500000240000000175414532160372015477 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.300528 PyQt6-6.6.1/uic/Loader/loader.py0000644000076500000240000000510114532160372015174 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # # This file is part of PyQt. # # You may use this file under the terms of the GPL v3 or the revised BSD # license as follows: # # "Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of the Riverbank Computing Limited nor the names # of its contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." from PyQt6 import QtCore, QtGui, QtWidgets from ..uiparser import UIParser from .qobjectcreator import LoaderCreatorPolicy class DynamicUILoader(UIParser): def __init__(self, package): UIParser.__init__(self, QtCore, QtGui, QtWidgets, LoaderCreatorPolicy(package)) def createToplevelWidget(self, classname, widgetname): if self.toplevelInst is None: return self.factory.createQtObject(classname, widgetname) if not isinstance(self.toplevelInst, self.factory.findQObjectType(classname)): raise TypeError( ("Wrong base class of toplevel widget", (type(self.toplevelInst), classname))) return self.toplevelInst def loadUi(self, filename, toplevelInst): self.toplevelInst = toplevelInst return self.parse(filename) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3000546 PyQt6-6.6.1/uic/Loader/qobjectcreator.py0000644000076500000240000001210314532160372016735 0ustar00philstaff############################################################################# ## ## Copyright (C) 2023 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import sys from PyQt6 import QtGui, QtWidgets class _QtWrapper(object): @classmethod def search(cls, name): return getattr(cls.module, name, None) class _QtGuiWrapper(_QtWrapper): module = QtGui class _QtWidgetsWrapper(_QtWrapper): module = QtWidgets class _ModuleWrapper(object): def __init__(self, moduleName, classes): self._moduleName = moduleName self._module = None self._classes = classes def search(self, cls): if cls in self._classes: if self._module is None: self._module = __import__(self._moduleName, {}, {}, self._classes) # Remove any C++ scope. cls = cls.split('.')[-1] return getattr(self._module, cls) return None class _CustomWidgetLoader(object): def __init__(self, package): # should it stay this way? if '.' not in sys.path: sys.path.append('.') self._widgets = {} self._modules = {} self._package = package def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = module def search(self, cls): module_name = self._widgets.get(cls) if module_name is None: return None module = self._modules.get(module_name) if module is None: if module_name.startswith('.'): if self._package == '': raise ImportError( "relative import of %s without base package specified" % module_name) if self._package.startswith('.'): raise ImportError( "base package %s is relative" % self._package) mname = self._package + module_name else: mname = module_name try: module = __import__(mname, {}, {}, (cls,)) except ValueError: # Raise a more helpful exception. raise ImportError("unable to import module %s" % mname) self._modules[module_name] = module return getattr(module, cls) class LoaderCreatorPolicy(object): def __init__(self, package): self._package = package def createQtGuiWidgetsWrappers(self): return [_QtGuiWrapper, _QtWidgetsWrapper] def createModuleWrapper(self, moduleName, classes): return _ModuleWrapper(moduleName, classes) def createCustomWidgetLoader(self): return _CustomWidgetLoader(self._package) def instantiate(self, ctor, object_name, ctor_args, ctor_kwargs, is_attribute, no_instantiation): if ctor_args is None: ctor_args = () if ctor_kwargs is None: ctor_kwargs = {} return ctor(*ctor_args, **ctor_kwargs) def invoke(self, rname, method, args): return method(*args) def getSlot(self, object, slotname): # Rename slots that correspond to Python keyword arguments. if slotname == 'raise': slotname += '_' return getattr(object, slotname) def asString(self, s): return s ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.298019 PyQt6-6.6.1/uic/__init__.py0000644000076500000240000000175314532160372014270 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # The public API. from .compile_ui import compileUi, compileUiDir from .load_ui import loadUi, loadUiType from .objcreator import widgetPluginPath from .ui_file import UIFile ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3120549 PyQt6-6.6.1/uic/compile_ui.py0000644000076500000240000001372714532160372014662 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # # This file is part of PyQt. # # You may use this file under the terms of the GPL v3 or the revised BSD # license as follows: # # "Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of the Riverbank Computing Limited nor the names # of its contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." from .Compiler import indenter, compiler _header = """# Form implementation generated from reading ui file '{}' # # Created by: PyQt6 UI code generator {} # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. """ _display_code = """ if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) %(widgetname)s = QtWidgets.%(baseclass)s() ui = %(uiclass)s() ui.setupUi(%(widgetname)s) %(widgetname)s.show() sys.exit(app.exec())""" def compileUiDir(dir, recurse=False, map=None, max_workers=0, **compileUi_args): """compileUiDir(dir, recurse=False, map=None, **compileUi_args) Creates Python modules from Qt Designer .ui files in a directory or directory tree. dir is the name of the directory to scan for files whose name ends with '.ui'. By default the generated Python module is created in the same directory ending with '.py'. recurse is set if any sub-directories should be scanned. The default is False. map is an optional callable that is passed the name of the directory containing the '.ui' file and the name of the Python module that will be created. The callable should return a tuple of the name of the directory in which the Python module will be created and the (possibly modified) name of the module. The default is None. max_workers is the maximum number of worker processes to use. A value of 0 means only the current process is used. A value of None means that the number of processors on the machine is used. compileUi_args are any additional keyword arguments that are passed to the compileUi() function that is called to create each Python module. """ from functools import partial import os jobs = [] # Add a compilation job. def add_job(ui_dir, ui_file): # Ignore if it doesn't seem to be a .ui file. if ui_file.endswith('.ui'): py_dir = ui_dir py_file = ui_file[:-3] + '.py' # Allow the caller to change the name of the .py file or generate # it in a different directory. if map is not None: py_dir, py_file = map(py_dir, py_file) ui_path = os.path.join(ui_dir, ui_file) jobs.append((ui_path, py_dir, py_file)) if recurse: for root, _, files in os.walk(dir): for ui in files: add_job(root, ui) else: for ui in os.listdir(dir): if os.path.isfile(os.path.join(dir, ui)): add_job(dir, ui) if jobs and max_workers != 0: from concurrent.futures import ProcessPoolExecutor with ProcessPoolExecutor(max_workers=max_workers) as executor: executor.map(partial(_run_job, **compileUi_args), jobs) else: for job in jobs: _run_job(job, **compileUi_args) def _run_job(job, **compileUi_args): """ Run a job to compile a single .ui file. """ import os ui_path, py_dir, py_file = job # Make sure the destination directory exists. try: os.makedirs(py_dir) except: pass py_path = os.path.join(py_dir, py_file) with open(py_path, 'w', encoding='utf-8') as py_f: compileUi(ui_path, py_f, **compileUi_args) def compileUi(uifile, pyfile, execute=False, indent=4): """compileUi(uifile, pyfile, execute=False, indent=4) Creates a Python module from a Qt Designer .ui file. uifile is a file name or file-like object containing the .ui file. pyfile is the file-like object to which the Python code will be written to. execute is optionally set to generate extra Python code that allows the code to be run as a standalone application. The default is False. indent is the optional indentation width using spaces. If it is 0 then a tab is used. The default is 4. """ from PyQt6.QtCore import PYQT_VERSION_STR try: uifname = uifile.name except AttributeError: uifname = uifile indenter.indentwidth = indent pyfile.write(_header.format(uifname, PYQT_VERSION_STR)) winfo = compiler.UICompiler().compileUi(uifile, pyfile) if execute: indenter.write_code(_display_code % winfo) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2973459 PyQt6-6.6.1/uic/enum_map.py0000644000076500000240000007602414532160372014335 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # Map enum member names to fully scoped names. EnumMap = { 'Qt::AlignHCenter': 'Qt::AlignmentFlag::AlignHCenter', 'Qt::AlignJustify': 'Qt::AlignmentFlag::AlignJustify', 'Qt::AlignLeft': 'Qt::AlignmentFlag::AlignLeft', 'Qt::AlignRight': 'Qt::AlignmentFlag::AlignRight', 'Qt::AlignBaseline': 'Qt::AlignmentFlag::AlignBaseline', 'Qt::AlignBottom': 'Qt::AlignmentFlag::AlignBottom', 'Qt::AlignTop': 'Qt::AlignmentFlag::AlignTop', 'Qt::AlignVCenter': 'Qt::AlignmentFlag::AlignVCenter', 'Qt::AlignAbsolute': 'Qt::AlignmentFlag::AlignAbsolute', 'Qt::AlignLeading': 'Qt::AlignmentFlag::AlignLeading', 'Qt::AlignTrailing': 'Qt::AlignmentFlag::AlignTrailing', 'Qt::AlignCenter': 'Qt::AlignmentFlag::AlignCenter', 'Qt::AlignHorizontal_Mask': 'Qt::AlignmentFlag::AlignHorizontal_Mask', 'Qt::AlignVertical_Mask': 'Qt::AlignmentFlag::AlignVertical_Mask', 'Qt::DownArrow': 'Qt::ArrowType::DownArrow', 'Qt::LeftArrow': 'Qt::ArrowType::LeftArrow', 'Qt::NoArrow': 'Qt::ArrowType::NoArrow', 'Qt::RightArrow': 'Qt::ArrowType::RightArrow', 'Qt::UpArrow': 'Qt::ArrowType::UpArrow', 'Qt::Checked': 'Qt::CheckState::Checked', 'Qt::PartiallyChecked': 'Qt::CheckState::PartiallyChecked', 'Qt::Unchecked': 'Qt::CheckState::Unchecked', 'Qt::ActionsContextMenu': 'Qt::ContextMenuPolicy::ActionsContextMenu', 'Qt::CustomContextMenu': 'Qt::ContextMenuPolicy::CustomContextMenu', 'Qt::DefaultContextMenu': 'Qt::ContextMenuPolicy::DefaultContextMenu', 'Qt::NoContextMenu': 'Qt::ContextMenuPolicy::NoContextMenu', 'Qt::PreventContextMenu': 'Qt::ContextMenuPolicy::PreventContextMenu', 'Qt::LogicalMoveStyle': 'Qt::CursorMoveStyle::LogicalMoveStyle', 'Qt::VisualMoveStyle': 'Qt::CursorMoveStyle::VisualMoveStyle', 'Qt::Monday': 'Qt::DayOfWeek::Monday', 'Qt::Tuesday': 'Qt::DayOfWeek::Tuesday', 'Qt::Wednesday': 'Qt::DayOfWeek::Wednesday', 'Qt::Thursday': 'Qt::DayOfWeek::Thursday', 'Qt::Friday': 'Qt::DayOfWeek::Friday', 'Qt::Saturday': 'Qt::DayOfWeek::Saturday', 'Qt::Sunday': 'Qt::DayOfWeek::Sunday', 'Qt::AllDockWidgetAreas': 'Qt::DockWidgetArea::AllDockWidgetAreas', 'Qt::LeftDockWidgetArea': 'Qt::DockWidgetArea::LeftDockWidgetArea', 'Qt::RightDockWidgetArea': 'Qt::DockWidgetArea::RightDockWidgetArea', 'Qt::TopDockWidgetArea': 'Qt::DockWidgetArea::TopDockWidgetArea', 'Qt::BottomDockWidgetArea': 'Qt::DockWidgetArea::BottomDockWidgetArea', 'Qt::NoDockWidgetArea': 'Qt::DockWidgetArea::NoDockWidgetArea', 'Qt::ActionMask': 'Qt::DropAction::ActionMask', 'Qt::CopyAction': 'Qt::DropAction::CopyAction', 'Qt::IgnoreAction': 'Qt::DropAction::IgnoreAction', 'Qt::LinkAction': 'Qt::DropAction::LinkAction', 'Qt::MoveAction': 'Qt::DropAction::MoveAction', 'Qt::TargetMoveAction': 'Qt::DropAction::TargetMoveAction', 'Qt::ClickFocus': 'Qt::FocusPolicy::ClickFocus', 'Qt::NoFocus': 'Qt::FocusPolicy::NoFocus', 'Qt::TabFocus': 'Qt::FocusPolicy::TabFocus', 'Qt::StrongFocus': 'Qt::FocusPolicy::StrongFocus', 'Qt::WheelFocus': 'Qt::FocusPolicy::WheelFocus', 'Qt::ImhDate': 'Qt::InputMethodHint::ImhDate', 'Qt::ImhDialableCharactersOnly': 'Qt::InputMethodHint::ImhDialableCharactersOnly', 'Qt::ImhDigitsOnly': 'Qt::InputMethodHint::ImhDigitsOnly', 'Qt::ImhEmailCharactersOnly': 'Qt::InputMethodHint::ImhEmailCharactersOnly', 'Qt::ImhExclusiveInputMask': 'Qt::InputMethodHint::ImhExclusiveInputMask', 'Qt::ImhFormattedNumbersOnly': 'Qt::InputMethodHint::ImhFormattedNumbersOnly', 'Qt::ImhHiddenText': 'Qt::InputMethodHint::ImhHiddenText', 'Qt::ImhLatinOnly': 'Qt::InputMethodHint::ImhLatinOnly', 'Qt::ImhLowercaseOnly': 'Qt::InputMethodHint::ImhLowercaseOnly', 'Qt::ImhMultiLine': 'Qt::InputMethodHint::ImhMultiLine', 'Qt::ImhNoAutoUppercase': 'Qt::InputMethodHint::ImhNoAutoUppercase', 'Qt::ImhNoEditMenu': 'Qt::InputMethodHint::ImhNoEditMenu', 'Qt::ImhNoPredictiveText': 'Qt::InputMethodHint::ImhNoPredictiveText', 'Qt::ImhNoTextHandles': 'Qt::InputMethodHint::ImhNoTextHandles', 'Qt::ImhNone': 'Qt::InputMethodHint::ImhNone', 'Qt::ImhPreferLatin': 'Qt::InputMethodHint::ImhPreferLatin', 'Qt::ImhPreferLowercase': 'Qt::InputMethodHint::ImhPreferLowercase', 'Qt::ImhPreferNumbers': 'Qt::InputMethodHint::ImhPreferNumbers', 'Qt::ImhPreferUppercase': 'Qt::InputMethodHint::ImhPreferUppercase', 'Qt::ImhSensitiveData': 'Qt::InputMethodHint::ImhSensitiveData', 'Qt::ImhTime': 'Qt::InputMethodHint::ImhTime', 'Qt::ImhUppercaseOnly': 'Qt::InputMethodHint::ImhUppercaseOnly', 'Qt::ImhUrlCharactersOnly': 'Qt::InputMethodHint::ImhUrlCharactersOnly', 'Qt::ItemIsAutoTristate': 'Qt::ItemFlag::ItemIsAutoTristate', 'Qt::ItemIsDragEnabled': 'Qt::ItemFlag::ItemIsDragEnabled', 'Qt::ItemIsDropEnabled': 'Qt::ItemFlag::ItemIsDropEnabled', 'Qt::ItemIsEditable': 'Qt::ItemFlag::ItemIsEditable', 'Qt::ItemIsEnabled': 'Qt::ItemFlag::ItemIsEnabled', 'Qt::ItemIsSelectable': 'Qt::ItemFlag::ItemIsSelectable', 'Qt::ItemIsUserCheckable': 'Qt::ItemFlag::ItemIsUserCheckable', 'Qt::ItemIsUserTristate': 'Qt::ItemFlag::ItemIsUserTristate', 'Qt::ItemNeverHasChildren': 'Qt::ItemFlag::ItemNeverHasChildren', 'Qt::NoItemFlags': 'Qt::ItemFlag::NoItemFlags', 'Qt::ContainsItemBoundingRect': 'Qt::ItemSelectionMode::ContainsItemBoundingRect', 'Qt::ContainsItemShape': 'Qt::ItemSelectionMode::ContainsItemShape', 'Qt::IntersectsItemBoundingRect': 'Qt::ItemSelectionMode::IntersectsItemBoundingRect', 'Qt::IntersectsItemShape': 'Qt::ItemSelectionMode::IntersectsItemShape', 'Qt::LayoutDirectionAuto': 'Qt::LayoutDirection::LayoutDirectionAuto', 'Qt::LeftToRight': 'Qt::LayoutDirection::LeftToRight', 'Qt::RightToLeft': 'Qt::LayoutDirection::RightToLeft', 'Qt::Horizontal': 'Qt::Orientation::Horizontal', 'Qt::Vertical': 'Qt::Orientation::Vertical', 'Qt::CustomDashLine': 'Qt::PenStyle::CustomDashLine', 'Qt::DashDotDotLine': 'Qt::PenStyle::DashDotDotLine', 'Qt::DashDotLine': 'Qt::PenStyle::DashDotLine', 'Qt::DashLine': 'Qt::PenStyle::DashLine', 'Qt::DotLine': 'Qt::PenStyle::DotLine', 'Qt::NoPen': 'Qt::PenStyle::NoPen', 'Qt::SolidLine': 'Qt::PenStyle::SolidLine', 'Qt::ScrollBarAlwaysOff': 'Qt::ScrollBarPolicy::ScrollBarAlwaysOff', 'Qt::ScrollBarAlwaysOn': 'Qt::ScrollBarPolicy::ScrollBarAlwaysOn', 'Qt::ScrollBarAsNeeded': 'Qt::ScrollBarPolicy::ScrollBarAsNeeded', 'Qt::ApplicationShortcut': 'Qt::ShortcutContext::ApplicationShortcut', 'Qt::WidgetShortcut': 'Qt::ShortcutContext::WidgetShortcut', 'Qt::WidgetWithChildrenShortcut': 'Qt::ShortcutContext::WidgetWithChildrenShortcut', 'Qt::WindowShortcut': 'Qt::ShortcutContext::WindowShortcut', 'Qt::ElideLeft': 'Qt::TextElideMode::ElideLeft', 'Qt::ElideRight': 'Qt::TextElideMode::ElideRight', 'Qt::ElideMiddle': 'Qt::TextElideMode::ElideMiddle', 'Qt::ElideNone': 'Qt::TextElideMode::ElideNone', 'Qt::NoTextInteraction': 'Qt::TextInteractionFlag::NoTextInteraction', 'Qt::TextSelectableByMouse': 'Qt::TextInteractionFlag::TextSelectableByMouse', 'Qt::TextSelectableByKeyboard': 'Qt::TextInteractionFlag::TextSelectableByKeyboard', 'Qt::LinksAccessibleByMouse': 'Qt::TextInteractionFlag::LinksAccessibleByMouse', 'Qt::LinksAccessibleByKeyboard': 'Qt::TextInteractionFlag::LinksAccessibleByKeyboard', 'Qt::TextEditable': 'Qt::TextInteractionFlag::TextEditable', 'Qt::TextEditorInteraction': 'Qt::TextInteractionFlag::TextEditorInteraction', 'Qt::TextBrowserInteraction': 'Qt::TextInteractionFlag::TextBrowserInteraction', 'Qt::AutoText': 'Qt::TextFormat::AutoText', 'Qt::MarkdownText': 'Qt::TextFormat::MarkdownText', 'Qt::PlainText': 'Qt::TextFormat::PlainText', 'Qt::RichText': 'Qt::TextFormat::RichText', 'Qt::LocalTime': 'Qt::TimeSpec::LocalTime', 'Qt::OffsetFromUTC': 'Qt::TimeSpec::OffsetFromUTC', 'Qt::TimeZone': 'Qt::TimeSpec::TimeZone', 'Qt::UTC': 'Qt::TimeSpec::UTC', 'Qt::LeftToolBarArea': 'Qt::ToolBarArea::LeftToolBarArea', 'Qt::RightToolBarArea': 'Qt::ToolBarArea::RightToolBarArea', 'Qt::TopToolBarArea': 'Qt::ToolBarArea::TopToolBarArea', 'Qt::BottomToolBarArea': 'Qt::ToolBarArea::BottomToolBarArea', 'Qt::AllToolBarAreas': 'Qt::ToolBarArea::AllToolBarAreas', 'Qt::NoToolBarArea': 'Qt::ToolBarArea::NoToolBarArea', 'Qt::ToolButtonFollowStyle': 'Qt::ToolButtonStyle::ToolButtonFollowStyle', 'Qt::ToolButtonIconOnly': 'Qt::ToolButtonStyle::ToolButtonIconOnly', 'Qt::ToolButtonTextBesideIcon': 'Qt::ToolButtonStyle::ToolButtonTextBesideIcon', 'Qt::ToolButtonTextOnly': 'Qt::ToolButtonStyle::ToolButtonTextOnly', 'Qt::ToolButtonTextUnderIcon': 'Qt::ToolButtonStyle::ToolButtonTextUnderIcon', 'Qt::ApplicationModal': 'Qt::WindowModality::ApplicationModal', 'Qt::NonModal': 'Qt::WindowModality::NonModal', 'Qt::WindowModal': 'Qt::WindowModality::WindowModal', 'QAbstractItemView::NoDragDrop': 'QAbstractItemView::DragDropMode::NoDragDrop', 'QAbstractItemView::DragOnly': 'QAbstractItemView::DragDropMode::DragOnly', 'QAbstractItemView::DropOnly': 'QAbstractItemView::DragDropMode::DropOnly', 'QAbstractItemView::DragDrop': 'QAbstractItemView::DragDropMode::DragDrop', 'QAbstractItemView::InternalMove': 'QAbstractItemView::DragDropMode::InternalMove', 'QAbstractItemView::NoEditTriggers': 'QAbstractItemView::EditTrigger::NoEditTriggers', 'QAbstractItemView::CurrentChanged': 'QAbstractItemView::EditTrigger::CurrentChanged', 'QAbstractItemView::DoubleClicked': 'QAbstractItemView::EditTrigger::DoubleClicked', 'QAbstractItemView::SelectedClicked': 'QAbstractItemView::EditTrigger::SelectedClicked', 'QAbstractItemView::EditKeyPressed': 'QAbstractItemView::EditTrigger::EditKeyPressed', 'QAbstractItemView::AnyKeyPressed': 'QAbstractItemView::EditTrigger::AnyKeyPressed', 'QAbstractItemView::AllEditTriggers': 'QAbstractItemView::EditTrigger::AllEditTriggers', 'QAbstractItemView::ScrollPerItem': 'QAbstractItemView::ScrollMode::ScrollPerItem', 'QAbstractItemView::ScrollPerPixel': 'QAbstractItemView::ScrollMode::ScrollPerPixel', 'QAbstractItemView::SelectColumns': 'QAbstractItemView::SelectionBehavior::SelectColumns', 'QAbstractItemView::SelectItems': 'QAbstractItemView::SelectionBehavior::SelectItems', 'QAbstractItemView::SelectRows': 'QAbstractItemView::SelectionBehavior::SelectRows', 'QAbstractItemView::NoSelection': 'QAbstractItemView::SelectionMode::NoSelection', 'QAbstractItemView::SingleSelection': 'QAbstractItemView::SelectionMode::SingleSelection', 'QAbstractItemView::MultiSelection': 'QAbstractItemView::SelectionMode::MultiSelection', 'QAbstractItemView::ExtendedSelection': 'QAbstractItemView::SelectionMode::ExtendedSelection', 'QAbstractItemView::ContiguousSelection': 'QAbstractItemView::SelectionMode::ContiguousSelection', 'QAbstractScrollArea::AdjustIgnored': 'QAbstractScrollArea::SizeAdjustPolicy::AdjustIgnored', 'QAbstractScrollArea::AdjustToContents': 'QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents', 'QAbstractScrollArea::AdjustToContentsOnFirstShow': 'QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow', 'QAbstractSpinBox::NoButtons': 'QAbstractSpinBox::ButtonSymbols::NoButtons', 'QAbstractSpinBox::PlusMinus': 'QAbstractSpinBox::ButtonSymbols::PlusMinus', 'QAbstractSpinBox::UpDownArrows': 'QAbstractSpinBox::ButtonSymbols::UpDownArrows', 'QAbstractSpinBox::CorrectToNearestValue': 'QAbstractSpinBox::CorrectionMode::CorrectToNearestValue', 'QAbstractSpinBox::CorrectToPreviousValue': 'QAbstractSpinBox::CorrectionMode::CorrectToPreviousValue', 'QAbstractSpinBox::AdaptiveDecimalStepType': 'QAbstractSpinBox::StepType::AdaptiveDecimalStepType', 'QAbstractSpinBox::DefaultStepType': 'QAbstractSpinBox::StepType::DefaultStepType', 'QAction::NoRole': 'QAction::MenuRole::NoRole', 'QAction::TextHeuristicRole': 'QAction::MenuRole::TextHeuristicRole', 'QAction::ApplicationSpecificRole': 'QAction::MenuRole::ApplicationSpecificRole', 'QAction::AboutQtRole': 'QAction::MenuRole::AboutQtRole', 'QAction::AboutRole': 'QAction::MenuRole::AboutRole', 'QAction::PreferencesRole': 'QAction::MenuRole::PreferencesRole', 'QAction::QuitRole': 'QAction::MenuRole::QuitRole', 'QCalendarWidget::LongDayNames': 'QCalendarWidget::HorizontalHeaderFormat::LongDayNames', 'QCalendarWidget::NoHorizontalHeader': 'QCalendarWidget::HorizontalHeaderFormat::NoHorizontalHeader', 'QCalendarWidget::ShortDayNames': 'QCalendarWidget::HorizontalHeaderFormat::ShortDayNames', 'QCalendarWidget::SingleLetterDayNames': 'QCalendarWidget::HorizontalHeaderFormat::SingleLetterDayNames', 'QCalendarWidget::NoSelection': 'QCalendarWidget::SelectionMode::NoSelection', 'QCalendarWidget::SingleSelection': 'QCalendarWidget::SelectionMode::SingleSelection', 'QCalendarWidget::ISOWeekNumbers': 'QCalendarWidget::VerticalHeaderFormat::ISOWeekNumbers', 'QCalendarWidget::NoVerticalHeader': 'QCalendarWidget::VerticalHeaderFormat::NoVerticalHeader', 'QComboBox::InsertAfterCurrent': 'QComboBox::InsertPolicy::InsertAfterCurrent', 'QComboBox::InsertAlphabetically': 'QComboBox::InsertPolicy::InsertAlphabetically', 'QComboBox::InsertAtBottom': 'QComboBox::InsertPolicy::InsertAtBottom', 'QComboBox::InsertAtCurrent': 'QComboBox::InsertPolicy::InsertAtCurrent', 'QComboBox::InsertAtTop': 'QComboBox::InsertPolicy::InsertAtTop', 'QComboBox::InsertBeforeCurrent': 'QComboBox::InsertPolicy::InsertBeforeCurrent', 'QComboBox::NoInsert': 'QComboBox::InsertPolicy::NoInsert', 'QComboBox::AdjustToContents': 'QComboBox::SizeAdjustPolicy::AdjustToContents', 'QComboBox::AdjustToContentsOnFirstShow': 'QComboBox::SizeAdjustPolicy::AdjustToContentsOnFirstShow', 'QComboBox::AdjustToMinimumContentsLengthWithIcon': 'QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon', 'QDateTimeEdit::NoSection': 'QDateTimeEdit::Section::NoSection', 'QDateTimeEdit::AmPmSection': 'QDateTimeEdit::Section::AmPmSection', 'QDateTimeEdit::MSecSection': 'QDateTimeEdit::Section::MSecSection', 'QDateTimeEdit::SecondSection': 'QDateTimeEdit::Section::SecondSection', 'QDateTimeEdit::MinuteSection': 'QDateTimeEdit::Section::MinuteSection', 'QDateTimeEdit::HourSection': 'QDateTimeEdit::Section::HourSection', 'QDateTimeEdit::DaySection': 'QDateTimeEdit::Section::DaySection', 'QDateTimeEdit::MonthSection': 'QDateTimeEdit::Section::MonthSection', 'QDateTimeEdit::YearSection': 'QDateTimeEdit::Section::YearSection', 'QDialogButtonBox::NoButton': 'QDialogButtonBox::StandardButton::NoButton', 'QDialogButtonBox::Ok': 'QDialogButtonBox::StandardButton::Ok', 'QDialogButtonBox::Save': 'QDialogButtonBox::StandardButton::Save', 'QDialogButtonBox::SaveAll': 'QDialogButtonBox::StandardButton::SaveAll', 'QDialogButtonBox::Open': 'QDialogButtonBox::StandardButton::Open', 'QDialogButtonBox::Yes': 'QDialogButtonBox::StandardButton::Yes', 'QDialogButtonBox::YesToAll': 'QDialogButtonBox::StandardButton::YesToAll', 'QDialogButtonBox::No': 'QDialogButtonBox::StandardButton::No', 'QDialogButtonBox::NoToAll': 'QDialogButtonBox::StandardButton::NoToAll', 'QDialogButtonBox::Abort': 'QDialogButtonBox::StandardButton::Abort', 'QDialogButtonBox::Retry': 'QDialogButtonBox::StandardButton::Retry', 'QDialogButtonBox::Ignore': 'QDialogButtonBox::StandardButton::Ignore', 'QDialogButtonBox::Close': 'QDialogButtonBox::StandardButton::Close', 'QDialogButtonBox::Cancel': 'QDialogButtonBox::StandardButton::Cancel', 'QDialogButtonBox::Discard': 'QDialogButtonBox::StandardButton::Discard', 'QDialogButtonBox::Help': 'QDialogButtonBox::StandardButton::Help', 'QDialogButtonBox::Apply': 'QDialogButtonBox::StandardButton::Apply', 'QDialogButtonBox::Reset': 'QDialogButtonBox::StandardButton::Reset', 'QDialogButtonBox::RestoreDefaults': 'QDialogButtonBox::StandardButton::RestoreDefaults', 'QDockWidget::DockWidgetClosable': 'QDockWidget::DockWidgetFeature::DockWidgetClosable', 'QDockWidget::DockWidgetFloatable': 'QDockWidget::DockWidgetFeature::DockWidgetFloatable', 'QDockWidget::DockWidgetMovable': 'QDockWidget::DockWidgetFeature::DockWidgetMovable', 'QDockWidget::DockWidgetVerticalTitleBar': 'QDockWidget::DockWidgetFeature::DockWidgetVerticalTitleBar', 'QDockWidget::NoDockWidgetFeatures': 'QDockWidget::DockWidgetFeature::NoDockWidgetFeatures', 'QFontComboBox::AllFonts': 'QFontComboBox::FontFilter::AllFonts', 'QFontComboBox::MonospacedFonts': 'QFontComboBox::FontFilter::MonospacedFonts', 'QFontComboBox::NonScalableFonts': 'QFontComboBox::FontFilter::NonScalableFonts', 'QFontComboBox::ProportionalFonts': 'QFontComboBox::FontFilter::ProportionalFonts', 'QFontComboBox::ScalableFonts': 'QFontComboBox::FontFilter::ScalableFonts', 'QFontDatabase::Any': 'QFontDatabase::WritingSystem::Any', 'QFontDatabase::Latin': 'QFontDatabase::WritingSystem::Latin', 'QFontDatabase::Greek': 'QFontDatabase::WritingSystem::Greek', 'QFontDatabase::Cyrillic': 'QFontDatabase::WritingSystem::Cyrillic', 'QFontDatabase::Armenian': 'QFontDatabase::WritingSystem::Armenian', 'QFontDatabase::Hebrew': 'QFontDatabase::WritingSystem::Hebrew', 'QFontDatabase::Arabic': 'QFontDatabase::WritingSystem::Arabic', 'QFontDatabase::Syriac': 'QFontDatabase::WritingSystem::Syriac', 'QFontDatabase::Thaana': 'QFontDatabase::WritingSystem::Thaana', 'QFontDatabase::Devanagari': 'QFontDatabase::WritingSystem::Devanagari', 'QFontDatabase::Bengali': 'QFontDatabase::WritingSystem::Bengali', 'QFontDatabase::Gurmukhi': 'QFontDatabase::WritingSystem::Gurmukhi', 'QFontDatabase::Gujarati': 'QFontDatabase::WritingSystem::Gujarati', 'QFontDatabase::Oriya': 'QFontDatabase::WritingSystem::Oriya', 'QFontDatabase::Tamil': 'QFontDatabase::WritingSystem::Tamil', 'QFontDatabase::Telugu': 'QFontDatabase::WritingSystem::Telugu', 'QFontDatabase::Kannada': 'QFontDatabase::WritingSystem::Kannada', 'QFontDatabase::Malayalam': 'QFontDatabase::WritingSystem::Malayalam', 'QFontDatabase::Sinhala': 'QFontDatabase::WritingSystem::Sinhala', 'QFontDatabase::Thai': 'QFontDatabase::WritingSystem::Thai', 'QFontDatabase::Lao': 'QFontDatabase::WritingSystem::Lao', 'QFontDatabase::Tibetan': 'QFontDatabase::WritingSystem::Tibetan', 'QFontDatabase::Myanmar': 'QFontDatabase::WritingSystem::Myanmar', 'QFontDatabase::Georgian': 'QFontDatabase::WritingSystem::Georgian', 'QFontDatabase::Khmer': 'QFontDatabase::WritingSystem::Khmer', 'QFontDatabase::SimplifiedChinese': 'QFontDatabase::WritingSystem::SimplifiedChinese', 'QFontDatabase::TraditionalChinese': 'QFontDatabase::WritingSystem::TraditionalChinese', 'QFontDatabase::Japanese': 'QFontDatabase::WritingSystem::Japanese', 'QFontDatabase::Korean': 'QFontDatabase::WritingSystem::Korean', 'QFontDatabase::Vietnamese': 'QFontDatabase::WritingSystem::Vietnamese', 'QFontDatabase::Other': 'QFontDatabase::WritingSystem::Other', 'QFontDatabase::Symbol': 'QFontDatabase::WritingSystem::Symbol', 'QFontDatabase::Ogham': 'QFontDatabase::WritingSystem::Ogham', 'QFontDatabase::Runic': 'QFontDatabase::WritingSystem::Runic', 'QFontDatabase::Nko': 'QFontDatabase::WritingSystem::Nko', 'QFormLayout::AllNonFixedFieldsGrow': 'QFormLayout::FieldGrowthPolicy::AllNonFixedFieldsGrow', 'QFormLayout::ExpandingFieldsGrow': 'QFormLayout::FieldGrowthPolicy::ExpandingFieldsGrow', 'QFormLayout::FieldsStayAtSizeHint': 'QFormLayout::FieldGrowthPolicy::FieldsStayAtSizeHint', 'QFormLayout::DontWrapRows': 'QFormLayout::RowWrapPolicy::DontWrapRows', 'QFormLayout::WrapLongRows': 'QFormLayout::RowWrapPolicy::WrapLongRows', 'QFormLayout::WrapAllRows': 'QFormLayout::RowWrapPolicy::WrapAllRows', 'QFrame::Box': 'QFrame::Shape::Box', 'QFrame::HLine': 'QFrame::Shape::HLine', 'QFrame::NoFrame': 'QFrame::Shape::NoFrame', 'QFrame::Panel': 'QFrame::Shape::Panel', 'QFrame::StyledPanel': 'QFrame::Shape::StyledPanel', 'QFrame::VLine': 'QFrame::Shape::VLine', 'QFrame::WinPanel': 'QFrame::Shape::WinPanel', 'QFrame::Plain': 'QFrame::Shadow::Plain', 'QFrame::Raised': 'QFrame::Shadow::Raised', 'QFrame::Sunken': 'QFrame::Shadow::Sunken', 'QGraphicsView::CacheNone': 'QGraphicsView::CacheMode::CacheNone', 'QGraphicsView::CacheBackground': 'QGraphicsView::CacheMode::CacheBackground', 'QGraphicsView::DontAdjustForAntialiasing': 'QGraphicsView::OptimizationFlags::DontAdjustForAntialiasing', 'QGraphicsView::DontSavePainterState': 'QGraphicsView::OptimizationFlags::DontSavePainterState', 'QGraphicsView::NoAnchor': 'QGraphicsView::ViewportAnchor::NoAnchor', 'QGraphicsView::AnchorViewCenter': 'QGraphicsView::ViewportAnchor::AnchorViewCenter', 'QGraphicsView::AnchorUnderMouse': 'QGraphicsView::ViewportAnchor::AnchorUnderMouse', 'QGraphicsView::BoundingRectViewportUpdate': 'QGraphicsView::ViewportUpdateMode::BoundingRectViewportUpdate', 'QGraphicsView::FullViewportUpdate': 'QGraphicsView::ViewportUpdateMode::FullViewportUpdate', 'QGraphicsView::MinimalViewportUpdate': 'QGraphicsView::ViewportUpdateMode::MinimalViewportUpdate', 'QGraphicsView::NoViewportUpdate': 'QGraphicsView::ViewportUpdateMode::NoViewportUpdate', 'QGraphicsView::SmartViewportUpdate': 'QGraphicsView::ViewportUpdateMode::SmartViewportUpdate', 'QLayout::SetDefaultConstraint': 'QLayout::SizeConstraint::SetDefaultConstraint', 'QLayout::SetFixedSize': 'QLayout::SizeConstraint::SetFixedSize', 'QLayout::SetMaximumSize': 'QLayout::SizeConstraint::SetMaximumSize', 'QLayout::SetMinAndMaxSize': 'QLayout::SizeConstraint::SetMinAndMaxSize', 'QLayout::SetMinimumSize': 'QLayout::SizeConstraint::SetMinimumSize', 'QLayout::SetNoConstraint': 'QLayout::SizeConstraint::SetNoConstraint', 'QLCDNumber::Bin': 'QLCDNumber::Mode::Bin', 'QLCDNumber::Dec': 'QLCDNumber::Mode::Dec', 'QLCDNumber::Hex': 'QLCDNumber::Mode::Hex', 'QLCDNumber::Oct': 'QLCDNumber::Mode::Oct', 'QLCDNumber::Filled': 'QLCDNumber::SegmentStyle::Filled', 'QLCDNumber::Flat': 'QLCDNumber::SegmentStyle::Flat', 'QLCDNumber::Outline': 'QLCDNumber::SegmentStyle::Outline', 'QLineEdit::NoEcho': 'QLineEdit::EchoMode::NoEcho', 'QLineEdit::Normal': 'QLineEdit::EchoMode::Normal', 'QLineEdit::Password': 'QLineEdit::EchoMode::Password', 'QLineEdit::PasswordEchoOnEdit': 'QLineEdit::EchoMode::PasswordEchoOnEdit', 'QListView::LeftToRight': 'QListView::Flow::LeftToRight', 'QListView::TopToBottom': 'QListView::Flow::TopToBottom', 'QListView::Batched': 'QListView::LayoutMode::Batched', 'QListView::SinglePass': 'QListView::LayoutMode::SinglePass', 'QListView::Free': 'QListView::Movement::Free', 'QListView::Snap': 'QListView::Movement::Snap', 'QListView::Static': 'QListView::Movement::Static', 'QListView::Adjust': 'QListView::ResizeMode::Adjust', 'QListView::Fixed': 'QListView::ResizeMode::Fixed', 'QListView::IconMode': 'QListView::ViewMode::IconMode', 'QListView::ListMode': 'QListView::ViewMode::ListMode', 'QMdiArea::SubWindowView': 'QMdiArea::ViewMode::SubWindowView', 'QMdiArea::TabbedView': 'QMdiArea::ViewMode::TabbedView', 'QMdiArea::ActivationHistoryOrder': 'QMdiArea::WindowOrder::ActivationHistoryOrder', 'QMdiArea::CreationOrder': 'QMdiArea::WindowOrder::CreationOrder', 'QMdiArea::StackingOrder': 'QMdiArea::WindowOrder::StackingOrder', 'QPainter::Antialiasing': 'QPainter::RenderHint::Antialiasing', 'QPainter::LosslessImageRendering': 'QPainter::RenderHint::LosslessImageRendering', 'QPainter::SmoothPixmapTransform': 'QPainter::RenderHint::SmoothPixmapTransform', 'QPainter::TextAntialiasing': 'QPainter::RenderHint::TextAntialiasing', 'QPlainTextEdit::NoWrap': 'QPlainTextEdit::LineWrapMode::NoWrap', 'QPlainTextEdit::WidgetWidth': 'QPlainTextEdit::LineWrapMode::WidgetWidth', 'QProgressBar::BottomToTop': 'QProgressBar::Direction::BottomToTop', 'QProgressBar::TopToBottom': 'QProgressBar::Direction::TopToBottom', 'QQuickWidget::SizeRootObjectToView': 'QQuickWidget::ResizeMode::SizeRootObjectToView', 'QQuickWidget::SizeViewToRootObject': 'QQuickWidget::ResizeMode::SizeViewToRootObject', 'QSizePolicy::Fixed': 'QSizePolicy::Policy::Fixed', 'QSizePolicy::Minimum': 'QSizePolicy::Policy::Minimum', 'QSizePolicy::Maximum': 'QSizePolicy::Policy::Maximum', 'QSizePolicy::Preferred': 'QSizePolicy::Policy::Preferred', 'QSizePolicy::MinimumExpanding': 'QSizePolicy::Policy::MinimumExpanding', 'QSizePolicy::Expanding': 'QSizePolicy::Policy::Expanding', 'QSizePolicy::Ignored': 'QSizePolicy::Policy::Ignored', 'QSlider::NoTicks': 'QSlider::TickPosition::NoTicks', 'QSlider::TicksAbove': 'QSlider::TickPosition::TicksAbove', 'QSlider::TicksBelow': 'QSlider::TickPosition::TicksBelow', 'QSlider::TicksBothSides': 'QSlider::TickPosition::TicksBothSides', 'QSlider::TicksLeft': 'QSlider::TickPosition::TicksLeft', 'QSlider::TicksRight': 'QSlider::TickPosition::TicksRight', 'QTabWidget::North': 'QTabWidget::TabPosition::North', 'QTabWidget::South': 'QTabWidget::TabPosition::South', 'QTabWidget::West': 'QTabWidget::TabPosition::West', 'QTabWidget::East': 'QTabWidget::TabPosition::East', 'QTabWidget::Rounded': 'QTabWidget::TabShape::Rounded', 'QTabWidget::Triangular': 'QTabWidget::TabShape::Triangular', 'QTextEdit::AutoAll': 'QTextEdit::AutoFormattingFlag::AutoAll', 'QTextEdit::AutoBulletList': 'QTextEdit::AutoFormattingFlag::AutoBulletList', 'QTextEdit::AutoNone': 'QTextEdit::AutoFormattingFlag::AutoNone', 'QTextEdit::FixedColumnWidth': 'QTextEdit::LineWrapMode::FixedColumnWidth', 'QTextEdit::FixedPixelWidth': 'QTextEdit::LineWrapMode::FixedPixelWidth', 'QTextEdit::NoWrap': 'QTextEdit::LineWrapMode::NoWrap', 'QTextEdit::WidgetWidth': 'QTextEdit::LineWrapMode::WidgetWidth', 'QToolButton::DelayedPopup': 'QToolButton::ToolButtonPopupMode::DelayedPopup', 'QToolButton::InstantPopup': 'QToolButton::ToolButtonPopupMode::InstantPopup', 'QToolButton::MenuButtonPopup': 'QToolButton::ToolButtonPopupMode::MenuButtonPopup', 'QWizard::CancelButtonOnLeft': 'QWizard::WizardOption::CancelButtonOnLeft', 'QWizard::DisabledBackButtonOnLastPage': 'QWizard::WizardOption::DisabledBackButtonOnLastPage', 'QWizard::ExtendedWatermarkPixmap': 'QWizard::WizardOption::ExtendedWatermarkPixmap', 'QWizard::HaveCustomButton1': 'QWizard::WizardOption::HaveCustomButton1', 'QWizard::HaveCustomButton2': 'QWizard::WizardOption::HaveCustomButton2', 'QWizard::HaveCustomButton3': 'QWizard::WizardOption::HaveCustomButton3', 'QWizard::HaveFinishButtonOnEarlyPages': 'QWizard::WizardOption::HaveFinishButtonOnEarlyPages', 'QWizard::HaveHelpButton': 'QWizard::WizardOption::HaveHelpButton', 'QWizard::HaveNextButtonOnLastPage': 'QWizard::WizardOption::HaveNextButtonOnLastPage', 'QWizard::HelpButtonOnRight': 'QWizard::WizardOption::HelpButtonOnRight', 'QWizard::IgnoreSubTitles': 'QWizard::WizardOption::IgnoreSubTitles', 'QWizard::IndependentPages': 'QWizard::WizardOption::IndependentPages', 'QWizard::NoBackButtonOnLastPage': 'QWizard::WizardOption::NoBackButtonOnLastPage', 'QWizard::NoBackButtonOnStartPage': 'QWizard::WizardOption::NoBackButtonOnStartPage', 'QWizard::NoCancelButton': 'QWizard::WizardOption::NoCancelButton', 'QWizard::NoCancelButtonOnLastPage': 'QWizard::WizardOption::NoCancelButtonOnLastPage', 'QWizard::NoDefaultButton': 'QWizard::WizardOption::NoDefaultButton', 'QWizard::AeroStyle': 'QWizard::WizardStyle::AeroStyle', 'QWizard::ClassicStyle': 'QWizard::WizardStyle::ClassicStyle', 'QWizard::MacStyle': 'QWizard::WizardStyle::MacStyle', 'QWizard::ModernStyle': 'QWizard::WizardStyle::ModernStyle', } ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3029141 PyQt6-6.6.1/uic/exceptions.py0000644000076500000240000000506114532160372014706 0ustar00philstaff############################################################################# ## ## Copyright (C) 2020 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# class NoSuchClassError(Exception): def __str__(self): return "Unknown C++ class: %s" % self.args[0] class NoSuchWidgetError(Exception): def __str__(self): return "Unknown Qt widget: %s" % self.args[0] class UIFileException(Exception): """ An exception pertaining to a .ui file. """ def __init__(self, ui_file, message, detail=''): """ Initialise the exception. """ text = '{}: {}'.format(ui_file, message) if detail: text += ': {}'.format(detail) super().__init__(text) class UnsupportedPropertyError(Exception): pass class WidgetPluginError(Exception): pass ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3015285 PyQt6-6.6.1/uic/icon_cache.py0000644000076500000240000001166714532160372014611 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# import os.path class IconCache(object): """Maintain a cache of icons. If an icon is used more than once by a GUI then ensure that only one copy is created. """ def __init__(self, object_factory, qtgui_module): """Initialise the cache.""" self._object_factory = object_factory self._qtgui_module = qtgui_module self._base_dir = '' self._cache = [] def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir def get_icon(self, iconset): """Return an icon described by the given iconset tag.""" # Handle a themed icon. theme = iconset.attrib.get('theme') if theme is not None: return self._object_factory.createQtObject('QIcon.fromTheme', 'icon', ctor_args=(self._object_factory.asString(theme), ), is_attribute=False) # Handle an empty iconset property. if iconset.text is None: return None iset = _IconSet(iconset, self._base_dir) try: idx = self._cache.index(iset) except ValueError: idx = -1 if idx >= 0: # Return the icon from the cache. iset = self._cache[idx] else: # Follow uic's naming convention. name = 'icon' idx = len(self._cache) if idx > 0: name += str(idx) icon = self._object_factory.createQtObject('QIcon', name, is_attribute=False) iset.set_icon(icon, self._qtgui_module) self._cache.append(iset) return iset.icon class _IconSet(object): """An icon set, ie. the mode and state and the pixmap used for each.""" def __init__(self, iconset, base_dir): """Initialise the icon set from an XML tag.""" # Set the pre-Qt v4.4 fallback (ie. with no roles). self._fallback = self._file_name(iconset.text, base_dir) self._use_fallback = True # Parse the icon set. self._roles = {} for i in iconset: file_name = i.text if file_name is not None: file_name = self._file_name(file_name, base_dir) self._roles[i.tag] = file_name self._use_fallback = False # There is no real icon yet. self.icon = None @staticmethod def _file_name(fname, base_dir): """ Convert a relative filename if we have a base directory. """ fname = fname.replace("\\", "\\\\") if base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(base_dir, fname) return fname def set_icon(self, icon, qtgui_module): """Save the icon and set its attributes.""" if self._use_fallback: icon.addFile(self._fallback) else: for role, pixmap in self._roles.items(): if role.endswith("off"): mode = role[:-3] state = qtgui_module.QIcon.State.Off elif role.endswith("on"): mode = role[:-2] state = qtgui_module.QIcon.State.On else: continue mode = getattr(qtgui_module.QIcon.Mode, mode.title()) if pixmap: icon.addPixmap(qtgui_module.QPixmap(pixmap), mode, state) else: icon.addPixmap(qtgui_module.QPixmap(), mode, state) self.icon = icon def __eq__(self, other): """Compare two icon sets for equality.""" if not isinstance(other, type(self)): return NotImplemented if self._use_fallback: if other._use_fallback: return self._fallback == other._fallback return False if other._use_fallback: return False return self._roles == other._roles ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.3022525 PyQt6-6.6.1/uic/load_ui.py0000644000076500000240000000637714532160372014154 0ustar00philstaff# Copyright (c) 2020 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # # This file is part of PyQt. # # You may use this file under the terms of the GPL v3 or the revised BSD # license as follows: # # "Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of the Riverbank Computing Limited nor the names # of its contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." def loadUiType(uifile): """loadUiType(uifile) -> (form class, base class) Load a Qt Designer .ui file and return the generated form class and the Qt base class. uifile is a file name or file-like object containing the .ui file. """ import io import sys from PyQt6 import QtWidgets from .Compiler import compiler code_string = io.StringIO() winfo = compiler.UICompiler().compileUi(uifile, code_string) ui_globals = {} exec(code_string.getvalue(), ui_globals) uiclass = winfo["uiclass"] baseclass = winfo["baseclass"] # Assume that the base class is a custom class exposed in the globals. ui_base = ui_globals.get(baseclass) if ui_base is None: # Otherwise assume it is in the QtWidgets module. ui_base = getattr(QtWidgets, baseclass) return (ui_globals[uiclass], ui_base) def loadUi(uifile, baseinstance=None, package=''): """loadUi(uifile, baseinstance=None, package='') -> widget Load a Qt Designer .ui file and return an instance of the user interface. uifile is a file name or file-like object containing the .ui file. baseinstance is an optional instance of the Qt base class. If specified then the user interface is created in it. Otherwise a new instance of the base class is automatically created. package is the optional package which is used as the base for any relative imports of custom widgets. """ from .Loader.loader import DynamicUILoader return DynamicUILoader(package).loadUi(uifile, baseinstance) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2881973 PyQt6-6.6.1/uic/objcreator.py0000644000076500000240000001372114532160372014661 0ustar00philstaff############################################################################# ## ## Copyright (C) 2015 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import os.path from .exceptions import NoSuchWidgetError, WidgetPluginError # The list of directories that are searched for widget plugins. This is # exposed as part of the API. widgetPluginPath = [os.path.join(os.path.dirname(__file__), 'widget-plugins')] MATCH = True NO_MATCH = False MODULE = 0 CW_FILTER = 1 class QObjectCreator(object): def __init__(self, creatorPolicy): self._cpolicy = creatorPolicy self._cwFilters = [] self._modules = self._cpolicy.createQtGuiWidgetsWrappers() # Get the optional plugins. for plugindir in widgetPluginPath: try: plugins = os.listdir(plugindir) except: plugins = [] for filename in plugins: if not filename.endswith('.py'): continue filename = os.path.join(plugindir, filename) plugin_globals = { "MODULE": MODULE, "CW_FILTER": CW_FILTER, "MATCH": MATCH, "NO_MATCH": NO_MATCH} plugin_locals = {} if self.load_plugin(filename, plugin_globals, plugin_locals): pluginType = plugin_locals["pluginType"] if pluginType == MODULE: modinfo = plugin_locals["moduleInformation"]() self._modules.append(self._cpolicy.createModuleWrapper(*modinfo)) elif pluginType == CW_FILTER: self._cwFilters.append(plugin_locals["getFilter"]()) else: raise WidgetPluginError("Unknown plugin type of %s" % filename) self._customWidgets = self._cpolicy.createCustomWidgetLoader() self._modules.append(self._customWidgets) def createQtObject(self, ctor_name, object_name, ctor_args=None, ctor_kwargs=None, is_attribute=True, no_instantiation=False): # Handle regular and custom widgets. ctor = self.findQObjectType(ctor_name) if ctor is None: # Handle scoped names, typically static factory methods. parts = ctor_name.split('.') if len(parts) > 1: ctor = self.findQObjectType(parts[0]) if ctor is not None: for part in parts[1:]: ctor = getattr(ctor, part, None) if ctor is None: break if ctor is None: raise NoSuchWidgetError(ctor_name) return self._cpolicy.instantiate(ctor, object_name, ctor_args, ctor_kwargs, is_attribute, no_instantiation) def invoke(self, rname, method, args=()): return self._cpolicy.invoke(rname, method, args) def findQObjectType(self, classname): for module in self._modules: w = module.search(classname) if w is not None: return w return None def getSlot(self, obj, slotname): return self._cpolicy.getSlot(obj, slotname) def asString(self, s): return self._cpolicy.asString(s) def addCustomWidget(self, widgetClass, baseClass, module): for cwFilter in self._cwFilters: match, result = cwFilter(widgetClass, baseClass, module) if match: widgetClass, baseClass, module = result break self._customWidgets.addCustomWidget(widgetClass, baseClass, module) @staticmethod def load_plugin(filename, plugin_globals, plugin_locals): """ Load the plugin from the given file. Return True if the plugin was loaded, or False if it wanted to be ignored. Raise an exception if there was an error. """ plugin = open(filename) try: exec(plugin.read(), plugin_globals, plugin_locals) except ImportError: return False except Exception as e: raise WidgetPluginError("%s: %s" % (e.__class__, str(e))) finally: plugin.close() return True ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.291271 PyQt6-6.6.1/uic/properties.py0000644000076500000240000004354314532160372014730 0ustar00philstaff############################################################################# ## ## Copyright (C) 2023 Riverbank Computing Limited. ## Copyright (C) 2006 Thorsten Marek. ## All right reserved. ## ## This file is part of PyQt. ## ## You may use this file under the terms of the GPL v2 or the revised BSD ## license as follows: ## ## "Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above copyright ## notice, this list of conditions and the following disclaimer in ## the documentation and/or other materials provided with the ## distribution. ## * Neither the name of the Riverbank Computing Limited nor the names ## of its contributors may be used to endorse or promote products ## derived from this software without specific prior written ## permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ## ############################################################################# import logging import os.path import sys from .enum_map import EnumMap from .exceptions import NoSuchClassError, UnsupportedPropertyError from .icon_cache import IconCache logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtGui = None QtWidgets = None def int_list(prop): return [int(child.text) for child in prop] def float_list(prop): return [float(child.text) for child in prop] bool_ = lambda v: v == "true" def qfont_style_strategy(v): return getattr(QtGui.QFont.StyleStrategy, v) def needsWidget(func): func.needsWidget = True return func # A translation table for converting ASCII lower case to upper case. _ascii_trans_table = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ') def ascii_upper(s): """ Convert a string to ASCII upper case irrespective of the current locale. """ return s.translate(_ascii_trans_table) class Properties(object): def __init__(self, factory, qtcore_module, qtgui_module, qtwidgets_module): self.factory = factory global QtCore, QtGui, QtWidgets QtCore = qtcore_module QtGui = qtgui_module QtWidgets = qtwidgets_module self._base_dir = '' self.reset() def set_base_dir(self, base_dir): """ Set the base directory to be used for all relative filenames. """ self._base_dir = base_dir self.icon_cache.set_base_dir(base_dir) def reset(self): self.buddies = [] self.delayed_props = [] self.icon_cache = IconCache(self.factory, QtGui) def _pyEnumMember(self, cpp_name): if '::' not in cpp_name: cpp_name = 'Qt::' + cpp_name cpp_name = EnumMap.get(cpp_name, cpp_name) parts = cpp_name.split('::') if parts[0] == 'Qt': scope = QtCore.Qt else: scope = self.factory.findQObjectType(parts[0]) if scope is None: raise NoSuchClassError(parts[0]) for tail in parts[1:]: scope = getattr(scope, tail) return scope def _set(self, prop): expr = [self._pyEnumMember(v) for v in prop.text.split('|')] value = expr[0] for v in expr[1:]: value |= v return value def _enum(self, prop): return self._pyEnumMember(prop.text) def _number(self, prop): return int(prop.text) _UInt = _uInt = _longLong = _uLongLong = _number def _double(self, prop): return float(prop.text) def _bool(self, prop): return prop.text == 'true' def _stringlist(self, prop): return [self._string(p, notr='true') for p in prop] def _string(self, prop, notr=None): text = prop.text if text is None: return "" if prop.get('notr', notr) == 'true': return text disambig = prop.get('comment') return QtWidgets.QApplication.translate(self.uiname, text, disambig) _char = _string def _cstring(self, prop): return str(prop.text) def _color(self, prop): args = int_list(prop) # Handle the optional alpha component. alpha = int(prop.get("alpha", "255")) if alpha != 255: args.append(alpha) return QtGui.QColor(*args) def _point(self, prop): return QtCore.QPoint(*int_list(prop)) def _pointf(self, prop): return QtCore.QPointF(*float_list(prop)) def _rect(self, prop): return QtCore.QRect(*int_list(prop)) def _rectf(self, prop): return QtCore.QRectF(*float_list(prop)) def _size(self, prop): return QtCore.QSize(*int_list(prop)) def _sizef(self, prop): return QtCore.QSizeF(*float_list(prop)) def _pixmap(self, prop): if prop.text: fname = prop.text.replace("\\", "\\\\") if self._base_dir != '' and fname[0] != ':' and not os.path.isabs(fname): fname = os.path.join(self._base_dir, fname) return QtGui.QPixmap(fname) # Don't bother to set the property if the pixmap is empty. return None def _iconset(self, prop): return self.icon_cache.get_icon(prop) def _url(self, prop): return QtCore.QUrl(prop[0].text) def _locale(self, prop): lang = getattr(QtCore.QLocale.Language, prop.attrib['language']) country = getattr(QtCore.QLocale.Country, prop.attrib['country']) return QtCore.QLocale(lang, country) def _date(self, prop): return QtCore.QDate(*int_list(prop)) def _datetime(self, prop): args = int_list(prop) return QtCore.QDateTime(QtCore.QDate(*args[-3:]), QtCore.QTime(*args[:-3])) def _time(self, prop): return QtCore.QTime(*int_list(prop)) def _gradient(self, prop): name = 'gradient' # Create the specific gradient. gtype = prop.get('type', '') if gtype == 'LinearGradient': startx = float(prop.get('startx')) starty = float(prop.get('starty')) endx = float(prop.get('endx')) endy = float(prop.get('endy')) gradient = self.factory.createQtObject('QLinearGradient', name, ctor_args=(startx, starty, endx, endy), is_attribute=False) elif gtype == 'ConicalGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) angle = float(prop.get('angle')) gradient = self.factory.createQtObject('QConicalGradient', name, ctor_args=(centralx, centraly, angle), is_attribute=False) elif gtype == 'RadialGradient': centralx = float(prop.get('centralx')) centraly = float(prop.get('centraly')) radius = float(prop.get('radius')) focalx = float(prop.get('focalx')) focaly = float(prop.get('focaly')) gradient = self.factory.createQtObject('QRadialGradient', name, ctor_args=(centralx, centraly, radius, focalx, focaly), is_attribute=False) else: raise UnsupportedPropertyError(prop.tag) # Set the common values. spread = prop.get('spread') if spread: gradient.setSpread(getattr(QtGui.QGradient.Spread, spread)) cmode = prop.get('coordinatemode') if cmode: gradient.setCoordinateMode( getattr(QtGui.QGradient.CoordinateMode, cmode)) # Get the gradient stops. for gstop in prop: if gstop.tag != 'gradientstop': raise UnsupportedPropertyError(gstop.tag) position = float(gstop.get('position')) color = self._color(gstop[0]) gradient.setColorAt(position, color) return gradient def _palette(self, prop): palette = self.factory.createQtObject('QPalette', 'palette', is_attribute=False) for palette_elem in prop: sub_palette = getattr(QtGui.QPalette.ColorGroup, palette_elem.tag.title()) for role, color in enumerate(palette_elem): if color.tag == 'color': # Handle simple colour descriptions where the role is # implied by the colour's position. palette.setColor(sub_palette, QtGui.QPalette.ColorRole(role), self._color(color)) elif color.tag == 'colorrole': role = getattr(QtGui.QPalette.ColorRole, color.get('role')) brush = self._brush(color[0]) palette.setBrush(sub_palette, role, brush) else: raise UnsupportedPropertyError(color.tag) return palette def _brush(self, prop): brushstyle = prop.get('brushstyle') if brushstyle in ('LinearGradientPattern', 'ConicalGradientPattern', 'RadialGradientPattern'): gradient = self._gradient(prop[0]) brush = self.factory.createQtObject('QBrush', 'brush', ctor_args=(gradient, ), is_attribute=False) else: color = self._color(prop[0]) brush = self.factory.createQtObject('QBrush', 'brush', ctor_args=(color, ), is_attribute=False) brushstyle = getattr(QtCore.Qt.BrushStyle, brushstyle) brush.setStyle(brushstyle) return brush #@needsWidget def _sizepolicy(self, prop, widget): values = [int(child.text) for child in prop] if len(values) == 2: # Qt v4.3.0 and later. horstretch, verstretch = values hsizetype = getattr(QtWidgets.QSizePolicy.Policy, prop.get('hsizetype')) vsizetype = getattr(QtWidgets.QSizePolicy.Policy, prop.get('vsizetype')) else: hsizetype, vsizetype, horstretch, verstretch = values hsizetype = QtWidgets.QSizePolicy.Policy(hsizetype) vsizetype = QtWidgets.QSizePolicy.Policy(vsizetype) sizePolicy = self.factory.createQtObject('QSizePolicy', 'sizePolicy', ctor_args=(hsizetype, vsizetype), is_attribute=False) sizePolicy.setHorizontalStretch(horstretch) sizePolicy.setVerticalStretch(verstretch) sizePolicy.setHeightForWidth(widget.sizePolicy().hasHeightForWidth()) return sizePolicy _sizepolicy = needsWidget(_sizepolicy) # font needs special handling/conversion of all child elements. _font_attributes = (("Family", lambda s: s), ("PointSize", int), ("Bold", bool_), ("Italic", bool_), ("Underline", bool_), ("Weight", int), ("StrikeOut", bool_), ("Kerning", bool_), ("StyleStrategy", qfont_style_strategy)) def _font(self, prop): newfont = self.factory.createQtObject('QFont', 'font', is_attribute=False) for attr, converter in self._font_attributes: v = prop.findtext("./%s" % (attr.lower(),)) if v is None: continue getattr(newfont, "set%s" % (attr,))(converter(v)) return newfont def _cursor(self, prop): return QtGui.QCursor(QtCore.Qt.CursorShape(int(prop.text))) def _cursorShape(self, prop): return QtGui.QCursor(getattr(QtCore.Qt.CursorShape, prop.text)) def convert(self, prop, widget=None): try: func = getattr(self, "_" + prop[0].tag) except AttributeError: raise UnsupportedPropertyError(prop[0].tag) else: args = {} if getattr(func, "needsWidget", False): assert widget is not None args["widget"] = widget return func(prop[0], **args) def _getChild(self, elem_tag, elem, name, default=None): for prop in elem.findall(elem_tag): if prop.attrib["name"] == name: return self.convert(prop) else: return default def getProperty(self, elem, name, default=None): return self._getChild("property", elem, name, default) def getAttribute(self, elem, name, default=None): return self._getChild("attribute", elem, name, default) def setProperties(self, widget, elem): # Lines are sunken unless the frame shadow is explicitly set. set_sunken = (elem.attrib.get('class') == 'Line') for prop in elem.findall('property'): prop_name = prop.attrib['name'] DEBUG("setting property %s" % (prop_name,)) if prop_name == 'frameShadow': set_sunken = False try: stdset = bool(int(prop.attrib['stdset'])) except KeyError: stdset = True if not stdset: self._setViaSetProperty(widget, prop) elif hasattr(self, prop_name): getattr(self, prop_name)(widget, prop) else: prop_value = self.convert(prop, widget) if prop_value is not None: getattr(widget, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]))(prop_value) if set_sunken: widget.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) # SPECIAL PROPERTIES # If a property has a well-known value type but needs special, # context-dependent handling, the default behaviour can be overridden here. # Delayed properties will be set after the whole widget tree has been # populated. def _delayed_property(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: prop_name = prop.attrib["name"] self.delayed_props.append((widget, False, 'set%s%s' % (ascii_upper(prop_name[0]), prop_name[1:]), prop_value)) # These properties will be set with a widget.setProperty call rather than # calling the set function. def _setViaSetProperty(self, widget, prop): prop_value = self.convert(prop, widget) if prop_value is not None: prop_name = prop.attrib['name'] # This appears to be a Designer/uic hack where stdset=0 means that # the viewport should be used. if prop[0].tag == 'cursorShape': widget.viewport().setProperty(prop_name, prop_value) else: widget.setProperty(prop_name, prop_value) # Ignore the property. def _ignore(self, widget, prop): pass # Define properties that use the canned handlers. currentIndex = _delayed_property currentRow = _delayed_property showDropIndicator = _setViaSetProperty intValue = _setViaSetProperty value = _setViaSetProperty objectName = _ignore margin = _ignore leftMargin = _ignore topMargin = _ignore rightMargin = _ignore bottomMargin = _ignore spacing = _ignore horizontalSpacing = _ignore verticalSpacing = _ignore # tabSpacing is actually the spacing property of the widget's layout. def tabSpacing(self, widget, prop): prop_value = self.convert(prop) if prop_value is not None: self.delayed_props.append((widget, True, 'setSpacing', prop_value)) # buddy setting has to be done after the whole widget tree has been # populated. We can't use delay here because we cannot get the actual # buddy yet. def buddy(self, widget, prop): buddy_name = prop[0].text if buddy_name: self.buddies.append((widget, buddy_name)) # geometry is handled specially if set on the toplevel widget. def geometry(self, widget, prop): if widget.objectName() == self.uiname: geom = int_list(prop[0]) widget.resize(geom[2], geom[3]) else: widget.setGeometry(self._rect(prop[0])) def orientation(self, widget, prop): # If the class is a QFrame, it's a line. if widget.metaObject().className() == 'QFrame': widget.setFrameShape( {'Qt::Horizontal': QtWidgets.QFrame.Shape.HLine, 'Qt::Vertical' : QtWidgets.QFrame.Shape.VLine}[prop[0].text]) else: widget.setOrientation(self._enum(prop[0])) # The isWrapping attribute of QListView is named inconsistently, it should # be wrapping. def isWrapping(self, widget, prop): widget.setWrapping(self.convert(prop)) # This is a pseudo-property injected to deal with margins. def pyuicMargins(self, widget, prop): widget.setContentsMargins(*int_list(prop)) # This is a pseudo-property injected to deal with spacing. def pyuicSpacing(self, widget, prop): horiz, vert = int_list(prop) if horiz == vert: widget.setSpacing(horiz) else: if horiz >= 0: widget.setHorizontalSpacing(horiz) if vert >= 0: widget.setVerticalSpacing(vert) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.303808 PyQt6-6.6.1/uic/pyuic.py0000644000076500000240000001333214532160372013656 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. import os import sys def main(): """ Convert a .ui file to a .py file. """ import argparse from PyQt6.QtCore import PYQT_VERSION_STR from .exceptions import (NoSuchClassError, NoSuchWidgetError, UIFileException) # The program name. PROGRAM_NAME = 'pyuic6' # Parse the command line. parser = argparse.ArgumentParser(prog=PROGRAM_NAME, description="Python User Interface Compiler") parser.add_argument('-V', '--version', action='version', version=PYQT_VERSION_STR) parser.add_argument('-p', '--preview', dest='preview', action='store_true', default=False, help="show a preview of the UI instead of generating code") parser.add_argument('-o', '--output', dest='output', default='-', metavar="FILE", help="write generated code to FILE instead of stdout") parser.add_argument('-x', '--execute', dest='execute', action='store_true', default=False, help="generate extra code to test and display the class") parser.add_argument('-d', '--debug', dest='debug', action='store_true', default=False, help="show debug output") parser.add_argument('-i', '--indent', dest='indent', action='store', type=int, default=4, metavar="N", help="set indent width to N spaces, tab if N is 0 [default: 4]") parser.add_argument('-w', '--max-workers', dest='max_workers', action='store', type=int, default=0, metavar="N", help="use a maximum of N worker processes when converting a directory [default: 0]") parser.add_argument('ui', help="the .ui file created by Qt Designer or a directory containing .ui files") args = parser.parse_args() # Carry out the required action. if args.debug: configure_logging() exit_status = 1 try: if args.preview: if os.path.isfile(args.ui): exit_status = preview(args.ui) else: raise UIFileException(args.ui, "must be a file") else: generate(args.ui, args.output, args.indent, args.execute, args.max_workers) exit_status = 0 except IOError as e: print("Error: {0}: '{1}'".format(e.strerror, e.filename), file=sys.stderr) except SyntaxError as e: print("Error in input file: {0}".format(e), file=sys.stderr) except (NoSuchClassError, NoSuchWidgetError, UIFileException) as e: print(e, file=sys.stderr) except Exception as e: if args.debug: import traceback traceback.print_exception(*sys.exc_info()) else: print("""An unexpected error occurred. Check that you are using the latest version of {name} and send an error report to the PyQt mailing list and include the following information: - your version of {name} ({version}) - the .ui file that caused this error - the debug output of {name} (use the --debug flag when calling {name})""".format(name=PROGRAM_NAME, version=PYQT_VERSION_STR), file=sys.stderr) return exit_status def configure_logging(): """ Configure logging when debug is enabled. """ import logging handler = logging.StreamHandler() handler.setFormatter(logging.Formatter("%(name)s: %(message)s")) logger = logging.getLogger('PyQt6.uic') logger.addHandler(handler) logger.setLevel(logging.DEBUG) def generate(ui_file, output, indent, execute, max_workers): """ Generate the Python code. """ from .exceptions import UIFileException if os.path.isdir(ui_file): if output == '-': map = None elif os.path.isdir(output) or not os.path.exists(output): map = lambda d, f: (output, f) else: raise UIFileException(output, f"must be a directory as {ui_file} is a directory") from .compile_ui import compileUiDir compileUiDir(ui_file, recurse=False, map=map, max_workers=max_workers, indent=indent, execute=execute) elif os.path.isdir(output): raise UIFileException(output, f"cannot be a directory unless {ui_file} is a directory") else: from .compile_ui import compileUi if output == '-': import io pyfile = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8') needs_close = False else: pyfile = open(output, 'wt', encoding='utf8') needs_close = True compileUi(ui_file, pyfile, execute, indent) if needs_close: pyfile.close() def preview(ui_file): """ Preview the .ui file. Return the exit status to be passed back to the parent process. """ from PyQt6.QtWidgets import QApplication from .load_ui import loadUi app = QApplication([ui_file]) ui = loadUi(ui_file) ui.show() return app.exec() if __name__ == '__main__': sys.exit(main()) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2821524 PyQt6-6.6.1/uic/ui_file.py0000644000076500000240000000621514532160372014143 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited # # This file is part of PyQt6. # # This file may be used under the terms of the GNU General Public License # version 3.0 as published by the Free Software Foundation and appearing in # the file LICENSE included in the packaging of this file. Please review the # following information to ensure the GNU General Public License version 3.0 # requirements will be met: http://www.gnu.org/copyleft/gpl.html. # # If you do not wish to use this file under the terms of the GPL version 3.0 # then you may purchase a commercial license. For more information contact # info@riverbankcomputing.com. # # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. from xml.etree import ElementTree class UIFile: """ Encapsulate a Designer .ui file. """ def __init__(self, ui_file): """ Initialise the .ui file. """ # Get the name of the .ui file allowing it to be a file object. if hasattr(ui_file, 'read'): self._ui_file = getattr(ui_file, 'name', "unknown") else: self._ui_file = ui_file try: document = ElementTree.parse(ui_file) except Exception as e: self._raise_exception("invalid Qt Designer file", detail=str(e)) # Perform some sanity checks. root = document.getroot() if root.tag != 'ui': self._raise_exception("not created by Qt Designer") version = root.get('version') if version is None: self._raise_exception("missing version number") if version != '4.0': self._raise_exception("only Qt Designer files v4.0 are supported") # Extract the top-level elements. self.button_groups = None self.connections = None self.custom_widgets = None self.layout_default = None self.tab_stops = None self.widget = None self.class_name = None for el in root: if el.tag == 'class': self.class_name = el.text elif el.tag == 'buttongroups': self.button_groups = el elif el.tag == 'connections': self.connections = el elif el.tag == 'customwidgets': self.custom_widgets = el elif el.tag == 'layoutdefault': self.layout_default = el elif el.tag == 'tabstops': self.tab_stops = el elif el.tag == 'widget': self.widget = el # The element was optional in legacy versions of the schema. if not self.class_name: if self.widget is not None: self.class_name = self.widget.get('name') if not self.class_name: self._raise_exception( "unable to determine the name of the UI class") def _raise_exception(self, message, detail=''): """ Raise a UIFileException. """ from .exceptions import UIFileException raise UIFileException(self._ui_file, message, detail=detail) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2871284 PyQt6-6.6.1/uic/uiparser.py0000644000076500000240000011117614532160372014364 0ustar00philstaff# Copyright (c) 2023 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # # This file is part of PyQt. # # You may use this file under the terms of the GPL v3 or the revised BSD # license as follows: # # "Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of the Riverbank Computing Limited nor the names # of its contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." import sys import logging import os import re from xml.etree.ElementTree import SubElement from .objcreator import QObjectCreator from .properties import Properties from .ui_file import UIFile logger = logging.getLogger(__name__) DEBUG = logger.debug QtCore = None QtGui = None QtWidgets = None def _parse_alignment(alignment): """ Convert a C++ alignment to the corresponding flags. """ align_flags = None for qt_align in alignment.split('|'): _, qt_align = qt_align.split('::') align = getattr(QtCore.Qt.AlignmentFlag, qt_align) if align_flags is None: align_flags = align else: align_flags |= align return align_flags def _layout_position(elem): """ Return either (), (0, alignment), (row, column, rowspan, colspan) or (row, column, rowspan, colspan, alignment) depending on the type of layout and its configuration. The result will be suitable to use as arguments to the layout. """ row = elem.attrib.get('row') column = elem.attrib.get('column') alignment = elem.attrib.get('alignment') # See if it is a box layout. if row is None or column is None: if alignment is None: return () return (0, _parse_alignment(alignment)) # It must be a grid or a form layout. row = int(row) column = int(column) rowspan = int(elem.attrib.get('rowspan', 1)) colspan = int(elem.attrib.get('colspan', 1)) if alignment is None: return (row, column, rowspan, colspan) return (row, column, rowspan, colspan, _parse_alignment(alignment)) class WidgetStack(list): topwidget = None def push(self, item): DEBUG("push %s %s" % (item.metaObject().className(), item.objectName())) self.append(item) if isinstance(item, QtWidgets.QWidget): self.topwidget = item def popLayout(self): layout = list.pop(self) DEBUG("pop layout %s %s" % (layout.metaObject().className(), layout.objectName())) return layout def popWidget(self): widget = list.pop(self) DEBUG("pop widget %s %s" % (widget.metaObject().className(), widget.objectName())) for item in reversed(self): if isinstance(item, QtWidgets.QWidget): self.topwidget = item break else: self.topwidget = None DEBUG("new topwidget %s" % (self.topwidget,)) return widget def peek(self): return self[-1] def topIsLayout(self): return isinstance(self[-1], QtWidgets.QLayout) def topIsLayoutWidget(self): # A plain QWidget is a layout widget unless it's parent is a # QMainWindow or a container widget. Note that the corresponding uic # test is a little more complicated as it involves features not # supported by pyuic. if type(self[-1]) is not QtWidgets.QWidget: return False if len(self) < 2: return False parent = self[-2] return isinstance(parent, QtWidgets.QWidget) and type(parent) not in ( QtWidgets.QMainWindow, QtWidgets.QStackedWidget, QtWidgets.QToolBox, QtWidgets.QTabWidget, QtWidgets.QScrollArea, QtWidgets.QMdiArea, QtWidgets.QWizard, QtWidgets.QDockWidget) class ButtonGroup(object): """ Encapsulate the configuration of a button group and its implementation. """ def __init__(self): """ Initialise the button group. """ self.exclusive = True self.object = None class UIParser(object): def __init__(self, qtcore_module, qtgui_module, qtwidgets_module, creatorPolicy): self.factory = QObjectCreator(creatorPolicy) self.wprops = Properties(self.factory, qtcore_module, qtgui_module, qtwidgets_module) global QtCore, QtGui, QtWidgets QtCore = qtcore_module QtGui = qtgui_module QtWidgets = qtwidgets_module self.reset() def uniqueName(self, name): """UIParser.uniqueName(string) -> string Create a unique name from a string. >>> p = UIParser(QtCore, QtGui, QtWidgets) >>> p.uniqueName("foo") 'foo' >>> p.uniqueName("foo") 'foo1' """ try: suffix = self.name_suffixes[name] except KeyError: self.name_suffixes[name] = 0 return name suffix += 1 self.name_suffixes[name] = suffix return "%s%i" % (name, suffix) def reset(self): try: self.wprops.reset() except AttributeError: pass self.toplevelWidget = None self.stack = WidgetStack() self.name_suffixes = {} self.defaults = {'spacing': -1, 'margin': -1} self.actions = [] self.currentActionGroup = None self.button_groups = {} def _setupObject(self, class_name, parent, branch, is_attribute=True, parent_is_optional=True): object_name = self.uniqueName( branch.attrib.get('name') or class_name[1:].lower()) if parent is None: ctor_args = () ctor_kwargs = {} elif parent_is_optional: ctor_args = () ctor_kwargs = dict(parent=parent) else: ctor_args = (parent, ) ctor_kwargs = {} obj = self.factory.createQtObject(class_name, object_name, ctor_args=ctor_args, ctor_kwargs=ctor_kwargs, is_attribute=is_attribute) self.wprops.setProperties(obj, branch) obj.setObjectName(object_name) if is_attribute: setattr(self.toplevelWidget, object_name, obj) return obj def getProperty(self, elem, name): for prop in elem.findall('property'): if prop.attrib['name'] == name: return prop return None def createWidget(self, elem): self.column_counter = 0 self.row_counter = 0 self.item_nr = 0 self.itemstack = [] self.sorting_enabled = None widget_class = elem.attrib['class'].replace('::', '.') if widget_class == 'Line': widget_class = 'QFrame' # Ignore the parent if it is a container. parent = self.stack.topwidget if isinstance(parent, (QtWidgets.QDockWidget, QtWidgets.QMdiArea, QtWidgets.QScrollArea, QtWidgets.QStackedWidget, QtWidgets.QToolBox, QtWidgets.QTabWidget, QtWidgets.QWizard)): parent = None self.stack.push(self._setupObject(widget_class, parent, elem)) if isinstance(self.stack.topwidget, QtWidgets.QTableWidget): if self.getProperty(elem, 'columnCount') is None: self.stack.topwidget.setColumnCount(len(elem.findall("column"))) if self.getProperty(elem, 'rowCount') is None: self.stack.topwidget.setRowCount(len(elem.findall("row"))) self.traverseWidgetTree(elem) widget = self.stack.popWidget() if isinstance(widget, QtWidgets.QTreeView): self.handleHeaderView(elem, "header", widget.header()) elif isinstance(widget, QtWidgets.QTableView): self.handleHeaderView(elem, "horizontalHeader", widget.horizontalHeader()) self.handleHeaderView(elem, "verticalHeader", widget.verticalHeader()) elif isinstance(widget, QtWidgets.QAbstractButton): bg_i18n = self.wprops.getAttribute(elem, "buttonGroup") if bg_i18n is not None: # This should be handled properly in case the problem arises # elsewhere as well. try: # We are compiling the .ui file. bg_name = bg_i18n.string except AttributeError: # We are loading the .ui file. bg_name = bg_i18n # Designer allows the creation of .ui files without explicit # button groups, even though uic then issues warnings. We # handle it in two stages by first making sure it has a name # and then making sure one exists with that name. if not bg_name: bg_name = 'buttonGroup' try: bg = self.button_groups[bg_name] except KeyError: bg = self.button_groups[bg_name] = ButtonGroup() if bg.object is None: bg.object = self.factory.createQtObject('QButtonGroup', bg_name, ctor_args=(self.toplevelWidget, )) setattr(self.toplevelWidget, bg_name, bg.object) bg.object.setObjectName(bg_name) if not bg.exclusive: bg.object.setExclusive(False) bg.object.addButton(widget) if self.sorting_enabled is not None: widget.setSortingEnabled(self.sorting_enabled) self.sorting_enabled = None if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setWidget(lp[0], self._form_layout_role(lp), widget) else: lay.addWidget(widget, *lp) topwidget = self.stack.topwidget if isinstance(topwidget, QtWidgets.QToolBox): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addItem(widget, icon, self.wprops.getAttribute(elem, "label")) else: topwidget.addItem(widget, self.wprops.getAttribute(elem, "label")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setItemToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QTabWidget): icon = self.wprops.getAttribute(elem, "icon") if icon is not None: topwidget.addTab(widget, icon, self.wprops.getAttribute(elem, "title")) else: topwidget.addTab(widget, self.wprops.getAttribute(elem, "title")) tooltip = self.wprops.getAttribute(elem, "toolTip") if tooltip is not None: topwidget.setTabToolTip(topwidget.indexOf(widget), tooltip) elif isinstance(topwidget, QtWidgets.QWizard): topwidget.addPage(widget) elif isinstance(topwidget, QtWidgets.QStackedWidget): topwidget.addWidget(widget) elif isinstance(topwidget, (QtWidgets.QDockWidget, QtWidgets.QScrollArea)): topwidget.setWidget(widget) elif isinstance(topwidget, QtWidgets.QMainWindow): if type(widget) == QtWidgets.QWidget: topwidget.setCentralWidget(widget) elif isinstance(widget, QtWidgets.QToolBar): tbArea = self.wprops.getAttribute(elem, "toolBarArea") if tbArea is None: topwidget.addToolBar(widget) else: topwidget.addToolBar(tbArea, widget) tbBreak = self.wprops.getAttribute(elem, "toolBarBreak") if tbBreak: topwidget.insertToolBarBreak(widget) elif isinstance(widget, QtWidgets.QMenuBar): topwidget.setMenuBar(widget) elif isinstance(widget, QtWidgets.QStatusBar): topwidget.setStatusBar(widget) elif isinstance(widget, QtWidgets.QDockWidget): dwArea = self.wprops.getAttribute(elem, "dockWidgetArea") topwidget.addDockWidget(QtCore.Qt.DockWidgetArea(dwArea), widget) def handleHeaderView(self, elem, name, header): value = self.wprops.getAttribute(elem, name + "Visible") if value is not None: header.setVisible(value) value = self.wprops.getAttribute(elem, name + "CascadingSectionResizes") if value is not None: header.setCascadingSectionResizes(value) value = self.wprops.getAttribute(elem, name + "DefaultSectionSize") if value is not None: header.setDefaultSectionSize(value) value = self.wprops.getAttribute(elem, name + "HighlightSections") if value is not None: header.setHighlightSections(value) value = self.wprops.getAttribute(elem, name + "MinimumSectionSize") if value is not None: header.setMinimumSectionSize(value) value = self.wprops.getAttribute(elem, name + "ShowSortIndicator") if value is not None: header.setSortIndicatorShown(value) value = self.wprops.getAttribute(elem, name + "StretchLastSection") if value is not None: header.setStretchLastSection(value) def createSpacer(self, elem): width = elem.findtext("property/size/width") height = elem.findtext("property/size/height") if width is None or height is None: size_args = () else: size_args = (int(width), int(height)) sizeType = self.wprops.getProperty(elem, "sizeType", QtWidgets.QSizePolicy.Policy.Expanding) policy = (QtWidgets.QSizePolicy.Policy.Minimum, sizeType) if self.wprops.getProperty(elem, "orientation") == QtCore.Qt.Orientation.Horizontal: policy = policy[1], policy[0] spacer = self.factory.createQtObject('QSpacerItem', self.uniqueName('spacerItem'), ctor_args=size_args + policy, is_attribute=False) if self.stack.topIsLayout(): lay = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(lay, QtWidgets.QFormLayout): lay.setItem(lp[0], self._form_layout_role(lp), spacer) else: lay.addItem(spacer, *lp) def createLayout(self, elem): # We use an internal property to handle margins which will use separate # left, top, right and bottom margins if they are found to be # different. The following will select, in order of preference, # separate margins, the same margin in all directions, and the default # margin. margin = -1 if self.stack.topIsLayout() else self.defaults['margin'] margin = self.wprops.getProperty(elem, 'margin', margin) left = self.wprops.getProperty(elem, 'leftMargin', margin) top = self.wprops.getProperty(elem, 'topMargin', margin) right = self.wprops.getProperty(elem, 'rightMargin', margin) bottom = self.wprops.getProperty(elem, 'bottomMargin', margin) # A layout widget should, by default, have no margins. if self.stack.topIsLayoutWidget(): if left < 0: left = 0 if top < 0: top = 0 if right < 0: right = 0 if bottom < 0: bottom = 0 if left >= 0 or top >= 0 or right >= 0 or bottom >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicMargins') SubElement(cme, 'number').text = str(left) SubElement(cme, 'number').text = str(top) SubElement(cme, 'number').text = str(right) SubElement(cme, 'number').text = str(bottom) # We use an internal property to handle spacing which will use separate # horizontal and vertical spacing if they are found to be different. # The following will select, in order of preference, separate # horizontal and vertical spacing, the same spacing in both directions, # and the default spacing. spacing = self.wprops.getProperty(elem, 'spacing', self.defaults['spacing']) horiz = self.wprops.getProperty(elem, 'horizontalSpacing', spacing) vert = self.wprops.getProperty(elem, 'verticalSpacing', spacing) if horiz >= 0 or vert >= 0: # We inject the new internal property. cme = SubElement(elem, 'property', name='pyuicSpacing') SubElement(cme, 'number').text = str(horiz) SubElement(cme, 'number').text = str(vert) classname = elem.attrib["class"] if self.stack.topIsLayout(): parent = None else: parent = self.stack.topwidget if "name" not in elem.attrib: elem.attrib["name"] = classname[1:].lower() self.stack.push( self._setupObject(classname, parent, elem, parent_is_optional=False)) self.traverseWidgetTree(elem) layout = self.stack.popLayout() self.configureLayout(elem, layout) if self.stack.topIsLayout(): top_layout = self.stack.peek() lp = elem.attrib['layout-position'] if isinstance(top_layout, QtWidgets.QFormLayout): top_layout.setLayout(lp[0], self._form_layout_role(lp), layout) else: top_layout.addLayout(layout, *lp) def configureLayout(self, elem, layout): if isinstance(layout, QtWidgets.QGridLayout): self.setArray(elem, 'columnminimumwidth', layout.setColumnMinimumWidth) self.setArray(elem, 'rowminimumheight', layout.setRowMinimumHeight) self.setArray(elem, 'columnstretch', layout.setColumnStretch) self.setArray(elem, 'rowstretch', layout.setRowStretch) elif isinstance(layout, QtWidgets.QBoxLayout): self.setArray(elem, 'stretch', layout.setStretch) def setArray(self, elem, name, setter): array = elem.attrib.get(name) if array: for idx, value in enumerate(array.split(',')): value = int(value) if value > 0: setter(idx, value) def disableSorting(self, w): if self.item_nr == 0: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) def handleItem(self, elem): if self.stack.topIsLayout(): elem[0].attrib['layout-position'] = _layout_position(elem) self.traverseWidgetTree(elem) else: w = self.stack.topwidget if isinstance(w, QtWidgets.QComboBox): text = self.wprops.getProperty(elem, "text") icon = self.wprops.getProperty(elem, "icon") if icon: w.addItem(icon, '') else: w.addItem('') w.setItemText(self.item_nr, text) elif isinstance(w, QtWidgets.QListWidget): self.disableSorting(w) item = self.createWidgetItem('QListWidgetItem', elem, w.item, self.item_nr) w.addItem(item) elif isinstance(w, QtWidgets.QTreeWidget): if self.itemstack: parent, _ = self.itemstack[-1] _, nr_in_root = self.itemstack[0] else: parent = w nr_in_root = self.item_nr item = self.factory.createQtObject('QTreeWidgetItem', 'item_%d' % len(self.itemstack), ctor_args=(parent, ), is_attribute=False) if self.item_nr == 0 and not self.itemstack: self.sorting_enabled = self.factory.invoke("__sortingEnabled", w.isSortingEnabled) w.setSortingEnabled(False) self.itemstack.append((item, self.item_nr)) self.item_nr = 0 # We have to access the item via the tree when setting the # text. titm = w.topLevelItem(nr_in_root) for child, nr_in_parent in self.itemstack[1:]: titm = titm.child(nr_in_parent) column = -1 for prop in elem.findall('property'): c_prop = self.wprops.convert(prop) c_prop_name = prop.attrib['name'] if c_prop_name == 'text': column += 1 if c_prop: titm.setText(column, c_prop) elif c_prop_name == 'statusTip': item.setStatusTip(column, c_prop) elif c_prop_name == 'toolTip': item.setToolTip(column, c_prop) elif c_prop_name == 'whatsThis': item.setWhatsThis(column, c_prop) elif c_prop_name == 'font': item.setFont(column, c_prop) elif c_prop_name == 'icon': item.setIcon(column, c_prop) elif c_prop_name == 'background': item.setBackground(column, c_prop) elif c_prop_name == 'foreground': item.setForeground(column, c_prop) elif c_prop_name == 'flags': item.setFlags(c_prop) elif c_prop_name == 'checkState': item.setCheckState(column, c_prop) self.traverseWidgetTree(elem) _, self.item_nr = self.itemstack.pop() elif isinstance(w, QtWidgets.QTableWidget): row = int(elem.attrib['row']) col = int(elem.attrib['column']) self.disableSorting(w) item = self.createWidgetItem('QTableWidgetItem', elem, w.item, row, col) w.setItem(row, col, item) self.item_nr += 1 def addAction(self, elem): self.actions.append((self.stack.topwidget, elem.attrib["name"])) @staticmethod def any_i18n(*args): """ Return True if any argument appears to be an i18n string. """ for a in args: if a is not None and not isinstance(a, str): return True return False def createWidgetItem(self, item_type, elem, getter, *getter_args): """ Create a specific type of widget item. """ item = self.factory.createQtObject(item_type, 'item', is_attribute=False) props = self.wprops # Note that not all types of widget items support the full set of # properties. text = props.getProperty(elem, 'text') status_tip = props.getProperty(elem, 'statusTip') tool_tip = props.getProperty(elem, 'toolTip') whats_this = props.getProperty(elem, 'whatsThis') if self.any_i18n(text, status_tip, tool_tip, whats_this): self.factory.invoke("item", getter, getter_args) if text: item.setText(text) if status_tip: item.setStatusTip(status_tip) if tool_tip: item.setToolTip(tool_tip) if whats_this: item.setWhatsThis(whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: item.setTextAlignment(text_alignment) font = props.getProperty(elem, 'font') if font: item.setFont(font) icon = props.getProperty(elem, 'icon') if icon: item.setIcon(icon) background = props.getProperty(elem, 'background') if background: item.setBackground(background) foreground = props.getProperty(elem, 'foreground') if foreground: item.setForeground(foreground) flags = props.getProperty(elem, 'flags') if flags: item.setFlags(flags) check_state = props.getProperty(elem, 'checkState') if check_state: item.setCheckState(check_state) return item def addHeader(self, elem): w = self.stack.topwidget if isinstance(w, QtWidgets.QTreeWidget): props = self.wprops col = self.column_counter text = props.getProperty(elem, 'text') if text: w.headerItem().setText(col, text) status_tip = props.getProperty(elem, 'statusTip') if status_tip: w.headerItem().setStatusTip(col, status_tip) tool_tip = props.getProperty(elem, 'toolTip') if tool_tip: w.headerItem().setToolTip(col, tool_tip) whats_this = props.getProperty(elem, 'whatsThis') if whats_this: w.headerItem().setWhatsThis(col, whats_this) text_alignment = props.getProperty(elem, 'textAlignment') if text_alignment: w.headerItem().setTextAlignment(col, text_alignment) font = props.getProperty(elem, 'font') if font: w.headerItem().setFont(col, font) icon = props.getProperty(elem, 'icon') if icon: w.headerItem().setIcon(col, icon) background = props.getProperty(elem, 'background') if background: w.headerItem().setBackground(col, background) foreground = props.getProperty(elem, 'foreground') if foreground: w.headerItem().setForeground(col, foreground) self.column_counter += 1 elif isinstance(w, QtWidgets.QTableWidget): if len(elem) != 0: if elem.tag == 'column': item = self.createWidgetItem('QTableWidgetItem', elem, w.horizontalHeaderItem, self.column_counter) w.setHorizontalHeaderItem(self.column_counter, item) self.column_counter += 1 elif elem.tag == 'row': item = self.createWidgetItem('QTableWidgetItem', elem, w.verticalHeaderItem, self.row_counter) w.setVerticalHeaderItem(self.row_counter, item) self.row_counter += 1 def setZOrder(self, elem): # Designer can generate empty zorder elements. if elem.text is None: return # Designer allows the z-order of spacer items to be specified even # though they can't be raised, so ignore any missing raise_() method. try: getattr(self.toplevelWidget, elem.text).raise_() except AttributeError: # Note that uic issues a warning message. pass def createAction(self, elem): self._setupObject('QAction', self.currentActionGroup or self.toplevelWidget, elem) def createActionGroup(self, elem): action_group = self._setupObject('QActionGroup', self.toplevelWidget, elem, parent_is_optional=False) self.currentActionGroup = action_group self.traverseWidgetTree(elem) self.currentActionGroup = None widgetTreeItemHandlers = { "widget" : createWidget, "addaction" : addAction, "layout" : createLayout, "spacer" : createSpacer, "item" : handleItem, "action" : createAction, "actiongroup": createActionGroup, "column" : addHeader, "row" : addHeader, "zorder" : setZOrder, } def traverseWidgetTree(self, elem): for child in iter(elem): try: handler = self.widgetTreeItemHandlers[child.tag] except KeyError: continue handler(self, child) def _handle_widget(self, el): """ Handle the top-level element. """ # Get the names of the class and widget. cname = el.attrib["class"] wname = el.attrib["name"] # If there was no widget name then derive it from the class name. if not wname: wname = cname if wname.startswith("Q"): wname = wname[1:] wname = wname[0].lower() + wname[1:] self.toplevelWidget = self.createToplevelWidget(cname, wname) self.toplevelWidget.setObjectName(wname) DEBUG("toplevel widget is %s", self.toplevelWidget.metaObject().className()) self.wprops.setProperties(self.toplevelWidget, el) self.stack.push(self.toplevelWidget) self.traverseWidgetTree(el) self.stack.popWidget() self.addActions() self.setBuddies() self.setDelayedProps() def addActions(self): for widget, action_name in self.actions: if action_name == "separator": widget.addSeparator() else: DEBUG("add action %s to %s", action_name, widget.objectName()) action_obj = getattr(self.toplevelWidget, action_name) if isinstance(action_obj, QtWidgets.QMenu): widget.addAction(action_obj.menuAction()) elif not isinstance(action_obj, QtGui.QActionGroup): widget.addAction(action_obj) def setDelayedProps(self): for widget, layout, setter, args in self.wprops.delayed_props: if layout: widget = widget.layout() setter = getattr(widget, setter) setter(args) def setBuddies(self): for widget, buddy in self.wprops.buddies: DEBUG("%s is buddy of %s", buddy, widget.objectName()) try: widget.setBuddy(getattr(self.toplevelWidget, buddy)) except AttributeError: DEBUG("ERROR in ui spec: %s (buddy of %s) does not exist", buddy, widget.objectName()) def setContext(self, context): """ Reimplemented by a sub-class if it needs to know the translation context. """ pass def _handle_layout_default(self, el): """ Handle the element. """ self.defaults['margin'] = int(el.attrib['margin']) self.defaults['spacing'] = int(el.attrib['spacing']) def _handle_tab_stops(self, el): """ Handle the element. """ lastwidget = None for widget_el in el: widget = getattr(self.toplevelWidget, widget_el.text) if lastwidget is not None: self.toplevelWidget.setTabOrder(lastwidget, widget) lastwidget = widget def _handle_connections(self, el): """ Handle the element. """ def name2object(obj): if obj == self.uiname: return self.toplevelWidget else: return getattr(self.toplevelWidget, obj) for conn in el: signal = conn.findtext('signal') signal_name, signal_args = signal.split('(') signal_args = signal_args[:-1].replace(' ', '') sender = name2object(conn.findtext('sender')) bound_signal = getattr(sender, signal_name) slot = self.factory.getSlot(name2object(conn.findtext('receiver')), conn.findtext('slot').split('(')[0]) if signal_args == '': bound_signal.connect(slot) else: signal_args = signal_args.split(',') if len(signal_args) == 1: bound_signal[signal_args[0]].connect(slot) else: bound_signal[tuple(signal_args)].connect(slot) QtCore.QMetaObject.connectSlotsByName(self.toplevelWidget) def _handle_custom_widgets(self, el): """ Handle the element. """ def header2module(header): """header2module(header) -> string Convert paths to C++ header files to according Python modules >>> header2module("foo/bar/baz.h") 'foo.bar.baz' """ if header.endswith(".h"): header = header[:-2] mpath = [] for part in header.split('/'): # Ignore any empty parts or those that refer to the current # directory. if part not in ('', '.'): if part == '..': # We should allow this for Python3. raise SyntaxError("custom widget header file name may not contain '..'.") mpath.append(part) return '.'.join(mpath) for custom_widget in el: classname = custom_widget.findtext("class") self.factory.addCustomWidget(classname, custom_widget.findtext("extends") or "QWidget", header2module(custom_widget.findtext("header"))) def createToplevelWidget(self, classname, widgetname): raise NotImplementedError def _handle_button_groups(self, el): """ Handle the element. """ for button_group in el: if button_group.tag == 'buttongroup': bg_name = button_group.attrib['name'] bg = ButtonGroup() self.button_groups[bg_name] = bg prop = self.getProperty(button_group, 'exclusive') if prop is not None: if prop.findtext('bool') == 'false': bg.exclusive = False # finalize will be called after the whole tree has been parsed and can be # overridden. def finalize(self): pass def parse(self, filename): if hasattr(filename, 'read'): base_dir = '' else: base_dir = os.path.dirname(filename) self.wprops.set_base_dir(base_dir) ui_file = UIFile(filename) self.uiname = ui_file.class_name self.wprops.uiname = ui_file.class_name self.setContext(ui_file.class_name) # The order in which the elements are handled is important. The widget # handler relies on all custom widgets being known, and in order to # create the connections, all widgets have to be populated. if ui_file.layout_default is not None: self._handle_layout_default(ui_file.layout_default) if ui_file.button_groups is not None: self._handle_button_groups(ui_file.button_groups) if ui_file.custom_widgets is not None: self._handle_custom_widgets(ui_file.custom_widgets) if ui_file.widget is not None: self._handle_widget(ui_file.widget) if ui_file.connections is not None: self._handle_connections(ui_file.connections) if ui_file.tab_stops is not None: self._handle_tab_stops(ui_file.tab_stops) self.finalize() w = self.toplevelWidget self.reset() return w @staticmethod def _form_layout_role(layout_position): if layout_position[3] > 1: role = QtWidgets.QFormLayout.ItemRole.SpanningRole elif layout_position[1] == 1: role = QtWidgets.QFormLayout.ItemRole.FieldRole else: role = QtWidgets.QFormLayout.ItemRole.LabelRole return role ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372162.3238113 PyQt6-6.6.1/uic/widget-plugins/0000755000076500000240000000000014532160402015105 5ustar00philstaff././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.294754 PyQt6-6.6.1/uic/widget-plugins/qaxcontainer.py0000644000076500000240000000302514532160372020161 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt6.QAxContainer", ("QAxWidget", ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2923434 PyQt6-6.6.1/uic/widget-plugins/qscintilla.py0000644000076500000240000000302114532160372017624 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt6.Qsci", ("QsciScintilla", ) ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1701372154.293439 PyQt6-6.6.1/uic/widget-plugins/qtcharts.py0000644000076500000240000000303214532160372017314 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return 'PyQt6.QtChart', ('QtCharts.QChartView', ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2938182 PyQt6-6.6.1/uic/widget-plugins/qtprintsupport.py0000644000076500000240000000306414532160372020626 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return 'PyQt6.QtPrintSupport', ('QAbstractPrintDialog', 'QPageSetupDialog') ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2942991 PyQt6-6.6.1/uic/widget-plugins/qtquickwidgets.py0000644000076500000240000000303214532160372020533 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt6.QtQuickWidgets", ("QQuickWidget", ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1701372154.2927222 PyQt6-6.6.1/uic/widget-plugins/qtwebenginewidgets.py0000644000076500000240000000304014532160372021361 0ustar00philstaff############################################################################# ## ## Copyright (c) 2023 Riverbank Computing Limited ## ## This file is part of PyQt6. ## ## This file may be used under the terms of the GNU General Public License ## version 3.0 as published by the Free Software Foundation and appearing in ## the file LICENSE included in the packaging of this file. Please review the ## following information to ensure the GNU General Public License version 3.0 ## requirements will be met: http://www.gnu.org/copyleft/gpl.html. ## ## If you do not wish to use this file under the terms of the GPL version 3.0 ## then you may purchase a commercial license. For more information contact ## info@riverbankcomputing.com. ## ## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ## ############################################################################# # If pluginType is MODULE, the plugin loader will call moduleInformation. The # variable MODULE is inserted into the local namespace by the plugin loader. pluginType = MODULE # moduleInformation() must return a tuple (module, widget_list). If "module" # is "A" and any widget from this module is used, the code generator will write # "import A". If "module" is "A[.B].C", the code generator will write # "from A[.B] import C". Each entry in "widget_list" must be unique. def moduleInformation(): return "PyQt6.QtWebEngineWidgets", ("QWebEngineView", )