Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Stottlemyer <bstottle@ford.com>2024-12-18 10:33:56 -0500
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2025-03-13 16:28:42 +0100
commit19abd816e73bebdd489408d0a3b7676822bff39c (patch)
tree8459ae9401f5e190995b3e24b6ae6968cf457baf /sources/pyside6/PySide6/QtRemoteObjects
parent3c66c456aeab597b7cb046f81c7f015433bb57a4 (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.txt9
-rw-r--r--sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml17
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>