diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2016-12-22 12:06:53 +0100 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2016-12-22 12:03:19 +0000 |
commit | eb28469e920696a1d0833c55b5c20c5c5a6f9d5e (patch) | |
tree | e5f57e63cfd1ee27dc85039c1ba13bda21b50fd7 | |
parent | 9f3aba9d228850a562f57484072c9c9876f60bcc (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.txt | 39 | ||||
-rw-r--r-- | PySide2/QtQuick/typesystem_quick.xml | 87 |
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> |