diff options
author | Brett Stottlemyer <bstottle@ford.com> | 2024-12-18 10:33:56 -0500 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2025-03-13 16:28:42 +0100 |
commit | 19abd816e73bebdd489408d0a3b7676822bff39c (patch) | |
tree | 8459ae9401f5e190995b3e24b6ae6968cf457baf /sources/pyside6/PySide6/QtRemoteObjects | |
parent | 3c66c456aeab597b7cb046f81c7f015433bb57a4 (diff) |
Make Remote Objects usable beyond Models
While present, the Qt Remote Objects bindings to Python have not been
very useful. The only usable components were those based on
QAbstractItemModel, due to the lack of a way to interpret .rep files
from Python. This addresses that limitation.
Fixes: PYSIDE-862
Change-Id: Ice57c0c64f11c3c7e74d50ce3c48617bd9b422a3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Brett Stottlemyer <brett.stottlemyer@gmail.com>
Diffstat (limited to 'sources/pyside6/PySide6/QtRemoteObjects')
-rw-r--r-- | sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt | 9 | ||||
-rw-r--r-- | sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml | 17 |
2 files changed, 22 insertions, 4 deletions
diff --git a/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt b/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt index 07835b2f6..2522ab54f 100644 --- a/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt +++ b/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt @@ -29,20 +29,23 @@ ${QtRemoteObjects_GEN_DIR}/qtroserveriodevice_wrapper.cpp ${QtRemoteObjects_GEN_DIR}/qtremoteobjects_module_wrapper.cpp ) +find_package(Qt6 REQUIRED COMPONENTS Core) + set(QtRemoteObjects_include_dirs ${QtRemoteObjects_SOURCE_DIR} ${QtRemoteObjects_BINARY_DIR} ${Qt${QT_MAJOR_VERSION}RemoteObjects_INCLUDE_DIRS} + ${libpysideremoteobjects_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR} ${libpyside_SOURCE_DIR} ${SHIBOKEN_PYTHON_INCLUDE_DIR} ${QtCore_GEN_DIR} ${QtNetwork_GEN_DIR}) -set(QtRemoteObjects_libraries pyside6 - ${Qt${QT_MAJOR_VERSION}RemoteObjects_LIBRARIES}) - set(QtRemoteObjects_deps QtCore QtNetwork) +set(QtRemoteObjects_libraries pyside6 pyside6remoteobjects + ${Qt${QT_MAJOR_VERSION}RemoteObjects_LIBRARIES}) + create_pyside_module(NAME QtRemoteObjects INCLUDE_DIRS QtRemoteObjects_include_dirs LIBRARIES QtRemoteObjects_libraries diff --git a/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml b/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml index 86e4d9093..a6e54ee18 100644 --- a/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml +++ b/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml @@ -8,6 +8,9 @@ <load-typesystem name="templates/core_common.xml" generate="no"/> <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/> <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/> + <inject-code class="native" position="beginning"> + #include "pysideremoteobjects.h" + </inject-code> <rejection class="QRemoteObjectStringLiterals"/> <rejection class="*" function-name="getTypeNameAndMetaobjectFromClassInfo"/> @@ -26,6 +29,10 @@ </object-type> <object-type name="QRemoteObjectNode"> <enum-type name="ErrorCode"/> + <add-function signature="acquire(PyTypeObject*, PyObject* @name@ = 0)" + return-type="PyTypeObject*"> + <inject-code class="target" file="../glue/qtremoteobjects.cpp" snippet="node-acquire"/> + </add-function> </object-type> <object-type name="QRemoteObjectPendingCall"> <enum-type name="Error"/> @@ -35,7 +42,12 @@ <object-type name="QRemoteObjectRegistryHost"/> <object-type name="QRemoteObjectReplica"> <enum-type name="State"/> - <!-- protected: <enum-type name="ConstructorType"/> --> + <enum-type name="ConstructorType" python-type="IntEnum"/> <!-- Needed even though protected --> + <modify-function signature="QRemoteObjectReplica(QRemoteObjectReplica::ConstructorType)"> + <modify-argument index="1"> + <replace-default-expression with="{}"/> + </modify-argument> + </modify-function> </object-type> <object-type name="QRemoteObjectSettingsStore"/> <value-type name="QRemoteObjectSourceLocationInfo"/> @@ -53,4 +65,7 @@ <!-- QtNetwork is pulled in via QtRemoteObjectsDepends. --> <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls).*' does not have a type entry.*$"/> + <inject-code class="target" position="end" + file="../glue/qtremoteobjects.cpp" snippet="qtro-init"/> + </typesystem> |