aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2016-12-22 12:06:53 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2016-12-22 12:03:19 +0000
commiteb28469e920696a1d0833c55b5c20c5c5a6f9d5e (patch)
treee5f57e63cfd1ee27dc85039c1ba13bda21b50fd7
parent9f3aba9d228850a562f57484072c9c9876f60bcc (diff)
Fix QtQuick bindings generation
The basic QtQuick classes should work. The scene graph classes are in an incomplete state, because of issues in shiboken (missing template support, char const * const * support, shared pointer support, union support). Task-number: PYSIDE-355 Change-Id: I1adc9102638b1c46d77d402b355341998b11ebdb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r--PySide2/QtQuick/CMakeLists.txt39
-rw-r--r--PySide2/QtQuick/typesystem_quick.xml87
2 files changed, 115 insertions, 11 deletions
diff --git a/PySide2/QtQuick/CMakeLists.txt b/PySide2/QtQuick/CMakeLists.txt
index 852f80c6..f5b67eec 100644
--- a/PySide2/QtQuick/CMakeLists.txt
+++ b/PySide2/QtQuick/CMakeLists.txt
@@ -3,18 +3,51 @@ project(QtQuick)
set(QtQuick_registerType "${QtQuick_SOURCE_DIR}/pysidequickregistertype.cpp")
set(QtQuick_SRC
+${QtQuick_GEN_DIR}/qquickasyncimageprovider_wrapper.cpp
${QtQuick_GEN_DIR}/qquickframebufferobject_wrapper.cpp
${QtQuick_GEN_DIR}/qquickframebufferobject_renderer_wrapper.cpp
-#${QtQuick_GEN_DIR}/qquicktexturefactory_wrapper.cpp
+${QtQuick_GEN_DIR}/qquicktexturefactory_wrapper.cpp
${QtQuick_GEN_DIR}/qquickimageprovider_wrapper.cpp
-#${QtQuick_GEN_DIR}/qquicktransform_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickimageresponse_wrapper.cpp
+${QtQuick_GEN_DIR}/qquicktransform_wrapper.cpp
${QtQuick_GEN_DIR}/qquickitem_wrapper.cpp
-#${QtQuick_GEN_DIR}/qquickitemgrabresult_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickitem_updatepaintnodedata_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickitemgrabresult_wrapper.cpp
${QtQuick_GEN_DIR}/qquickpainteditem_wrapper.cpp
${QtQuick_GEN_DIR}/qquickrendercontrol_wrapper.cpp
${QtQuick_GEN_DIR}/qquicktextdocument_wrapper.cpp
${QtQuick_GEN_DIR}/qquickview_wrapper.cpp
${QtQuick_GEN_DIR}/qquickwindow_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgabstractrenderer_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgbasicgeometrynode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgclipnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgdynamictexture_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgengine_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgflatcolormaterial_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_attribute_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_attributeset_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_coloredpoint2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_point2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_texturedpoint2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometrynode_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgmaterial_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgmaterialshader_renderstate_wrapper.cpp
+# Issue with virtual char const *const *attributeNames()
+#${QtQuick_GEN_DIR}/qsgmaterialshader_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgmaterialtype_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgopacitynode_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgopaquetexturematerial_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgsimplematerial_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgsimplematerialshader_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgsimplerectnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgsimpletexturenode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtexture_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgtexturematerial_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtextureprovider_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtransformnode_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgvertexcolormaterial_wrapper.cpp
# module is always needed
${QtQuick_GEN_DIR}/qtquick_module_wrapper.cpp
)
diff --git a/PySide2/QtQuick/typesystem_quick.xml b/PySide2/QtQuick/typesystem_quick.xml
index 5191e545..21d53d23 100644
--- a/PySide2/QtQuick/typesystem_quick.xml
+++ b/PySide2/QtQuick/typesystem_quick.xml
@@ -45,6 +45,8 @@
<load-typesystem name="typesystem_gui.xml" generate="no"/>
<load-typesystem name="typesystem_qml.xml" generate="no"/>
+ <primitive-type name="GLuint"/>
+
<extra-includes>
<include file-name="pysidequickregistertype.h" location="local"/>
</extra-includes>
@@ -53,31 +55,42 @@
PySide::initQuickSupport(module);
</inject-code>
+ <object-type name="QQuickAsyncImageProvider" />
+
<object-type name="QQuickFramebufferObject" />
<object-type name="QQuickFramebufferObject::Renderer" />
- <!-- TODO: Abstract
- <object-type name="QQuickTextureFactory" /> -->
+ <object-type name="QQuickTextureFactory" />
<object-type name="QQuickImageProvider" />
+ <object-type name="QQuickImageResponse" />
- <!-- TODO: private
- <object-type name="QQuickTransform" /> -->
+ <object-type name="QQuickTransform" />
<object-type name="QQuickItem">
+ <value-type name="UpdatePaintNodeData" />
<enum-type name="Flag" flags="Flags" />
<enum-type name="ItemChange" />
<enum-type name="TransformOrigin" />
+ <modify-function signature="itemTransform(QQuickItem *, bool *) const" allow-thread="yes">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyTuple" />
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*" />
+ </inject-code>
+ </modify-function>
<!-- TODO: Find a way to wrap `union ItemChangeData {}` -->
</object-type>
- <!-- private
- <object-type name="QQuickItemGrabResult" /> -->
+ <object-type name="QQuickItemGrabResult" />
<object-type name="QQuickPaintedItem">
<enum-type name="RenderTarget" />
<enum-type name="PerformanceHint" flags="PerformanceHints" />
</object-type>
- <!-- private-->
<object-type name="QQuickRenderControl" />
<object-type name="QQuickTextDocument" />
@@ -93,6 +106,64 @@
<enum-type name="SceneGraphError" />
</object-type>
- <!-- TODO: the scene graph (QSG*) classes -->
+ <object-type name="QSGAbstractRenderer">
+ <enum-type name="ClearModeBit" flags="ClearMode" />
+ </object-type>
+ <object-type name="QSGBasicGeometryNode" />
+ <object-type name="QSGClipNode" />
+ <object-type name="QSGDynamicTexture" />
+ <object-type name="QSGEngine">
+ <enum-type name="CreateTextureOption" flags="CreateTextureOptions" />
+ </object-type>
+ <!-- <object-type name="QSGFlatColorMaterial" /> -->
+ <object-type name="QSGGeometry">
+ <enum-type name="DataPattern" />
+ </object-type>
+ <value-type name="QSGGeometry::Attribute" />
+ <value-type name="QSGGeometry::AttributeSet" />
+ <value-type name="QSGGeometry::ColoredPoint2D" />
+ <value-type name="QSGGeometry::Point2D" />
+ <value-type name="QSGGeometry::TexturedPoint2D" />
+ <object-type name="QSGGeometryNode" />
+
+ <!-- QSGMaterialShader doesn't compile because of const char * char * types not being recognized
+ by the C++ parser, nor the generator.
+ <object-type name="QSGMaterial">
+ <enum-type name="Flag" flags="Flags" />
+ </object-type>
+ <object-type name="QSGMaterialShader" />
+ <value-type name="QSGMaterialShader::RenderState">
+ <enum-type name="DirtyState" flags="DirtyStates" />
+ </value-type>
+ -->
+ <object-type name="QSGMaterialType" />
+ <object-type name="QSGNode">
+ <enum-type name="DirtyStateBit" flags="DirtyState" />
+ <enum-type name="Flag" flags="Flags" />
+ <enum-type name="NodeType" />
+ </object-type>
+ <object-type name="QSGOpacityNode" />
+ <!-- <object-type name="QSGOpaqueTextureMaterial" /> -->
+ <object-type name="QSGSimpleRectNode" />
+ <object-type name="QSGSimpleTextureNode">
+ <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode" />
+ </object-type>
+ <object-type name="QSGTexture">
+ <enum-type name="Filtering" />
+ <enum-type name="WrapMode" />
+ </object-type>
+ <!-- <object-type name="QSGTextureMaterial" /> -->
+ <object-type name="QSGTextureProvider" />
+ <object-type name="QSGTransformNode" />
+ <!-- <object-type name="QSGVertexColorMaterial" /> -->
+
+ <!-- These currently don't work because they are template classes, and the generator chokes on
+ them. Making these work properly would require fixing the parsing of template classes,
+ allowing creation of State structures and passing them to the template classes, as well as
+ implementing some mechanism of registration of the custom template classes, kind of how
+ it's done for qt quick items.
+ <object-type name="QSGSimpleMaterial" />
+ <object-type name="QSGSimpleMaterialShader" />
+ -->
</typesystem>