diff options
Diffstat (limited to 'sources/pyside6/PySide6/QtQml/typesystem_qml.xml')
-rw-r--r-- | sources/pyside6/PySide6/QtQml/typesystem_qml.xml | 340 |
1 files changed, 340 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtQml/typesystem_qml.xml b/sources/pyside6/PySide6/QtQml/typesystem_qml.xml new file mode 100644 index 000000000..3392ef379 --- /dev/null +++ b/sources/pyside6/PySide6/QtQml/typesystem_qml.xml @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +--> +<typesystem package="PySide6.QtQml" + namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE"> + <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/> + <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/> + + <rejection class="QQmlPrivate"/> + + <inject-code class="target" position="declaration"> + // Volatile Bool Ptr type definition for QQmlIncubationController::incubateWhile(std::atomic<bool> *, int) + #include <atomic> + + using AtomicBool = std::atomic<bool>; + + struct QtQml_VolatileBoolObject { + PyObject_HEAD + AtomicBool *flag; + }; + </inject-code> + + <inject-code class="native" position="beginning"> + #include <pysideqml.h> + #include <pysideqmlregistertype.h> + #include <pysideqmlattached.h> + #include "pysideqmlvolatilebool.h" + </inject-code> + + <!-- This is to inform the generator that the VolatileBool python type exists --> + <custom-type name="VolatileBool" check-function="VolatileBool_Check"/> + <primitive-type name="bool volatile" target-lang-api-name="VolatileBool"> + <!-- No conversion rules are specified here, because the generator does not handle + pointer to primitive types without function adjustment. + See commit ff0b861b59b41387e771d9cd565e13de8b2750d1 or search for changePStr + in generator tests folder. --> + </primitive-type> + + <enum-type name="QQmlModuleImportSpecialVersions" doc-file="qqmlengine"/> + + <!-- expose QQmlIncubationController::incubateWhile() (see + QtQml_VolatileBoolTypeF/pysideqmlvolatilebool.h) --> + <namespace-type name="std" generate="no"> + <value-type name="atomic" generate="no"/> + </namespace-type> + + <add-function signature="qmlAttachedPropertiesObject(PyTypeObject*@type_obj@,QObject*,bool=true)" + return-type="QObject*"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlattachedpropertiesobject"/> + </add-function> + + <add-function signature="qmlRegisterType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistertype"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregistertype"/> + <modify-argument index="2" pyi-type="str"/> + </add-function> + + <add-function signature="qmlRegisterSingletonType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qobject_callback"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregistersingletontype_qobject_callback"/> + <modify-argument index="2" pyi-type="str"/> + </add-function> + + <add-function signature="qmlRegisterSingletonType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qobject_nocallback"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregistersingletontype_qobject_nocallback"/> + <modify-argument index="2" pyi-type="str"/> + </add-function> + + <add-function signature="qmlRegisterSingletonType(const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qjsvalue"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregistersingletontype_qjsvalue"/> + <modify-argument index="1" pyi-type="str"/> + </add-function> + + <add-function signature="qmlRegisterSingletonInstance(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletoninstance"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregistersingletoninstance"/> + <modify-argument index="2" pyi-type="str"/> + </add-function> + + <add-function signature="qmlRegisterUncreatableType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,const char*@message@)" return-type="int"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregisteruncreatabletype"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qmlregisteruncreatabletype"/> + <modify-argument index="2" pyi-type="str"/> + </add-function> + + <add-function signature="QmlElement(PyObject*)" return-type="PyObject*"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlelement"/> + </add-function> + + <add-function signature="QmlAnonymous(PyObject*)" return-type="PyObject*"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlanonymous"/> + </add-function> + + <add-function signature="QmlSingleton(PyObject*)" return-type="PyObject*"> + <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlsingleton"/> + </add-function> + + <function signature="qjsEngine(const QObject*)"> + <modify-function> + <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QJSEngine]"/> + </modify-function> + </function> + <function signature="qmlClearTypeRegistrations()" doc-file="qqmlengine"/> + <function signature="qmlContext(const QObject*)"> + <modify-function> + <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QQmlContext]"/> + </modify-function> + </function> + <function signature="qmlEngine(const QObject*)"> + <modify-function> + <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QQmlEngine]"/> + </modify-function> + </function> + <function signature="qmlProtectModule(const char*,int)" doc-file="qqmlengine"/> + <function signature="qmlRegisterModule(const char*,int,int)" doc-file="qqmlengine"/> + <function signature="qmlTypeId(const char*,int,int,const char*)" doc-file="qqmlengine"/> + <function signature="qmlRegisterType(const QUrl &,const char *,int,int,const char *)" + doc-file="qqmlengine"/> + <function signature="qmlRegisterSingletonType(const QUrl &,const char *,int,int,const char *)" + doc-file="qqmlengine"/> + <function signature="qmlRegisterUncreatableMetaObject(const QMetaObject&,const char*,int,int, const char*,const QString&)" + doc-file="qqmlengine"/> + + <enum-type identified-by-value="QML_HAS_ATTACHED_PROPERTIES"> + <extra-includes> + <include file-name="QtQml" location="global"/> + </extra-includes> + </enum-type> + + <inject-code class="target" position="end" file="../glue/qtqml.cpp" snippet="init"/> + + <object-type name="QJSEngine"> + <enum-type name="Extension" flags="Extensions"/> + <enum-type name="ObjectOwnership"/> + <add-function signature="toScriptValue(const QVariant&)" return-type="QJSValue"> + <inject-code class="target" position="end" file="../glue/qtqml.cpp" snippet="qjsengine-toscriptvalue"/> + </add-function> + </object-type> + <object-type name="QJSManagedValue"> + <enum-type name="Type"/> + </object-type> + <value-type name="QJSPrimitiveValue"> + <enum-type name="Type"/> + </value-type> + <value-type name="QJSValue"> + <enum-type name="ErrorType"/> + <enum-type name="SpecialValue"/> + <enum-type name="ObjectConversionBehavior" since="6.1"/> + </value-type> + <object-type name="QJSValueIterator"/> + <object-type name="QQmlAbstractUrlInterceptor"> + <enum-type name="DataType"/> + </object-type> + <object-type name="QQmlApplicationEngine"> + <!-- PYSIDE-1681: QQmlApplicationEngine constructor, load() and similar need + allow-thread in case there is a message handler installed + (qInstallMessageHandler) --> + <modify-function signature="^QQmlApplicationEngine\(.*\)$" allow-thread="yes"/> + <!-- PYSIDE-1736 In the presence of load(QString)/load(QUrl), check for Path/string + first to avoid an implicit conversion from string to QUrl. --> + <modify-function signature="load(const QString &)" allow-thread="yes" overload-number="1"> + <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/> + </modify-function> + <modify-function signature="load(const QUrl &)" allow-thread="yes" overload-number="2"/> + <modify-function signature="loadFromModule(QAnyStringView,QAnyStringView)" allow-thread="yes"/> + </object-type> + <object-type name="QQmlComponent"> + <enum-type name="CompilationMode"/> + <enum-type name="Status"/> + <modify-function signature="QQmlComponent(QObject*)" allow-thread="yes"/> + <modify-function signature="QQmlComponent(QQmlEngine*,QObject*)" allow-thread="yes"/> + <modify-function signature="QQmlComponent(QQmlEngine*,QString,QObject*)" allow-thread="yes"/> + <modify-function signature="QQmlComponent(QQmlEngine*,QString,QQmlComponent::CompilationMode,QObject*)" allow-thread="yes"/> + <modify-function signature="QQmlComponent(QQmlEngine*,QUrl,QObject*)" allow-thread="yes"/> + <modify-function signature="QQmlComponent(QQmlEngine*,QUrl,QQmlComponent::CompilationMode,QObject*)" allow-thread="yes"/> + <modify-function signature="loadFromModule(QAnyStringView,QAnyStringView,QQmlComponent::CompilationMode)" allow-thread="yes"/> + <modify-function signature="loadUrl(QUrl)" allow-thread="yes"/> + <modify-function signature="loadUrl(QUrl,QQmlComponent::CompilationMode)" allow-thread="yes"/> + <modify-function signature="setData(QByteArray,QUrl)" allow-thread="yes"/> + </object-type> + <object-type name="QQmlContext"> + <value-type name="PropertyPair"/> + </object-type> + <value-type name="QQmlError"> + <add-function signature="__repr__" return-type="PyObject*"> + <inject-code class="target" position="beginning" file="../glue/qtqml.cpp" snippet="qmlerrror-repr"/> + </add-function> + </value-type> + <object-type name="QQmlDebuggingEnabler"> + <enum-type name="StartMode"/> + </object-type> + + <object-type name="QQmlEngine"> + <modify-function signature="addImageProvider(const QString&,QQmlImageProviderBase*)"> + <modify-argument index="2"> + <define-ownership owner="c++"/> + </modify-argument> + </modify-function> + <modify-function signature="addImportPath(const QString &)"> + <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/> + </modify-function> + <modify-function signature="addPluginPath(const QString &)"> + <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument> + <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/> + </modify-function> + <add-function signature="singletonInstance(int@qmlTypeId@)" + return-type="QObject*"> + <!-- Suppress return value heuristics --> + <modify-argument index="return" + pyi-type="Union[PySide6.QtCore.QObject, PySide6.QtQml.QJSValue, None]"> + <define-ownership class="target" owner="default"/> + </modify-argument> + <inject-code class="target" file="../glue/qtqml.cpp" + snippet="qqmlengine-singletoninstance-qmltypeid"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qqmlengine-singletoninstance-qmltypeid"/> + </add-function> + <add-function signature="singletonInstance(QString@uri@,QString@typeName@)" + return-type="QObject*"> + <!-- Suppress return value heuristics --> + <modify-argument index="return" + pyi-type="Union[PySide6.QtCore.QObject, PySide6.QtQml.QJSValue, None]"> + <define-ownership class="target" owner="default"/> + </modify-argument> + <inject-code class="target" file="../glue/qtqml.cpp" + snippet="qqmlengine-singletoninstance-typename"/> + <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst" + snippet="qqmlengine-singletoninstance-typename"/> + </add-function> + </object-type> + + <object-type name="QQmlExpression"> + <modify-function signature="evaluate(bool*)" allow-thread="yes"> + <modify-argument index="1"> + <remove-argument /> + </modify-argument> + <modify-argument index="return" pyi-type="Tuple[Any, bool]"> + <replace-type modified-type="PyTuple"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_bool*"/> + </inject-code> + </modify-function> + </object-type> + <interface-type name="QQmlTypesExtensionInterface"/> + <interface-type name="QQmlExtensionInterface"/> + <object-type name="QQmlExtensionPlugin"/> + <!-- Possible qRegisterMetaType issues ? --> + <object-type name="QQmlFile"> + <enum-type name="Status"/> + </object-type> + <object-type name="QQmlFileSelector"/> + <object-type name="QQmlImageProviderBase"> + <enum-type name="Flag" flags="Flags"/> + <enum-type name="ImageType"/> + </object-type> + <object-type name="QQmlIncubator"> + <enum-type name="IncubationMode"/> + <enum-type name="Status"/> + </object-type> + <object-type name="QQmlIncubationController"> + <extra-includes> + <include file-name="pysideqmlvolatilebool.h" location="local"/> + </extra-includes> + <modify-function signature="incubateWhile(std::atomic<bool>*,int)" allow-thread="yes"> + <modify-argument index="1"> + The replace type is needed to use the VolatileBool_Check macro instead of + a template conversion function with "volatile bool" as argument. + <replace-type modified-type="VolatileBool"/> + <conversion-rule class="native"> + auto volatileBool = reinterpret_cast<QtQml_VolatileBoolObject *>(%PYARG_1); + std::atomic<bool> *%out = volatileBool->flag; + </conversion-rule> + </modify-argument> + </modify-function> + </object-type> + + <!-- TODO: QQmlListProperty is a template class, and thus should probably be treated like a + container-type tag, which implies custom code for conversion. Not sure there's a use case to + allow instantiating or deriving from the class though, given that a separate custom ListProperty + type is provided by the module. Plus meta type registration would have to be taken into account + for the QML parts. + <value-type name="QQmlListProperty"/>--> + <value-type name="QQmlListReference"/> + <object-type name="QQmlParserStatus"/> + <object-type name="QPyQmlParserStatus"/> + <value-type name="QQmlProperty"> + <enum-type name="PropertyTypeCategory"/> + <enum-type name="Type"/> + </value-type> + <object-type name="QQmlPropertyMap"/> + <object-type name="QQmlPropertyValueSource"/> + <object-type name="QPyQmlPropertyValueSource"/> + <value-type name="QQmlScriptString"> + <modify-function signature="numberLiteral(bool*)const" allow-thread="yes"> + <modify-argument index="1"> + <remove-argument /> + </modify-argument> + <modify-argument index="return" pyi-type="Tuple[float, bool]"> + <replace-type modified-type="PyTuple"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_bool*"/> + </inject-code> + </modify-function> + <modify-function signature="booleanLiteral(bool*)const" allow-thread="yes"> + <modify-argument index="1"> + <remove-argument /> + </modify-argument> + <modify-argument index="return" pyi-type="Tuple[bool, bool]"> + <replace-type modified-type="PyTuple"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_bool*"/> + </inject-code> + </modify-function> + </value-type> + <object-type name="QQmlNetworkAccessManagerFactory"> + <modify-function signature="create(QObject*)"> + <modify-argument index="return"> + <define-ownership class="native" owner="c++"/> + </modify-argument> + </modify-function> + </object-type> + <!-- Suppress anonymous enum warning --> + <suppress-warning text="Anonymous enum (QmlCurrentSingletonTypeRegistrationVersion) does not have a type entry"/> + <suppress-warning text="Enum 'QQmlModuleImportSpecialVersions' does not have a type entry"/> +</typesystem> |