diff options
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 626 | ||||
-rw-r--r-- | tests/QtGui/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/QtGui/deepcopy_test.py | 93 |
3 files changed, 686 insertions, 36 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 090778f..eebc48d 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -149,6 +149,16 @@ <rejection class="*" enum-name="enum_1"/> <value-type name="QTransform"> <enum-type name="TransformationType"/> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="ddddddddd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.m11(), %CPPSELF.m12(), %CPPSELF.m13(), %CPPSELF.m21(), %CPPSELF.m22(), %CPPSELF.m23(), %CPPSELF.m31(), %CPPSELF.m32(), %CPPSELF.m33()" /> + </insert-template> + </inject-code> + </add-function> + + <modify-function signature="map(int,int,int*,int*)const" remove="all"/> <modify-function signature="map(qreal,qreal,qreal*,qreal*)const" remove="all"/> <modify-function signature="inverted(bool*)const"> @@ -384,6 +394,15 @@ <enum-type name="SequenceFormat"/> <enum-type name="SequenceMatch"/> <enum-type name="StandardKey"/> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="iiii" /> + <replace from="%REDUCE_ARGS" to="(*%CPPSELF)[0], (*%CPPSELF)[1], (*%CPPSELF)[2], (*%CPPSELF)[3]" /> + </insert-template> + </inject-code> + </add-function> + <modify-function signature="operator QVariant()const" remove="all"/> <modify-function signature="operator int()const" remove="all"/> <modify-function signature="operator[](uint)const" remove="all"/> @@ -452,6 +471,22 @@ <include file-name="QMatrix" location="global"/> <include file-name="QTransform" location="global"/> </extra-includes> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + PyObject *points = PyList_New(%CPPSELF.count()); + for (int i = 0; i < %CPPSELF.count(); ++i){ + int x, y; + %CPPSELF.point(i, &x, &y); + PyList_SET_ITEM(points, i, %CONVERTTOPYTHON[QPoint](QPoint(x, y))); + } + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="(N)" /> + <replace from="%REDUCE_ARGS" to="points" /> + </insert-template> + </inject-code> + </add-function> + + <modify-function signature="QPolygon(int, const int *)" remove="all"/> <modify-function signature="operator+(QVector<QPoint>)const" remove="all"/> <modify-function signature="operator<<(QPoint)" remove="all"/> @@ -564,6 +599,14 @@ <extra-includes> <include file-name="QPainterPath" location="global"/> </extra-includes> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="dddddd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.m11(), %CPPSELF.m12(), %CPPSELF.m21(), %CPPSELF.m22(), %CPPSELF.dx(), %CPPSELF.dy()" /> + </insert-template> + </inject-code> + </add-function> <modify-function signature="map(int,int,int*,int*)const" remove="all"/> <modify-function signature="map(qreal,qreal,qreal*,qreal*)const" remove="all"/> <modify-function signature="inverted(bool*)const"> @@ -668,6 +711,14 @@ <extra-includes> <include file-name="QVariant" location="global"/> </extra-includes> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="iiii" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.red(), %CPPSELF.green(), %CPPSELF.blue(), %CPPSELF.alpha()" /> + </insert-template> + </inject-code> + </add-function> <modify-function signature="QColor(QColor::Spec)" remove="all"/> <modify-function signature="QColor(const char*)" remove="all" /> <add-function signature="QColor(QVariant)"> @@ -678,14 +729,6 @@ PyErr_SetString(PyExc_TypeError, "QVariant must be holding a QColor"); </inject-code> </add-function> - <add-function signature="__reduce__" return-type="PyObject*"> - <inject-code class="target" position="beginning"> - <insert-template name="reduce_start"/> - args = Py_BuildValue("(iiii)", %CPPSELF.red(), %CPPSELF.green(), - %CPPSELF.blue(), %CPPSELF.alpha()); - <insert-template name="reduce_finish"/> - </inject-code> - </add-function> <!-- get* methods. Inject code --> <modify-function signature="getCmyk(int*,int*,int*,int*,int*)"> <modify-argument index="0"> @@ -4836,17 +4879,505 @@ </modify-function> </object-type> - <value-type name="QMatrix2x2"/> - <value-type name="QMatrix2x3"/> - <value-type name="QMatrix2x4"/> - <value-type name="QMatrix3x2"/> - <value-type name="QMatrix3x3"/> - <value-type name="QMatrix3x4"/> - <value-type name="QMatrix4x2"/> - <value-type name="QMatrix4x3"/> + <value-type name="QMatrix2x2"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix2x2(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix2x2" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix2x2&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix2x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x2](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix2x2&)" return-type="QMatrix2x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x2](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix2x2&)" return-type="QMatrix2x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x2](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix2x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x2](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix2x2&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix2x3"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix2x3(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix3x2" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix2x3&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix2x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x3](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix2x3&)" return-type="QMatrix2x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x3](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix2x3&)" return-type="QMatrix2x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x3](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix2x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x3](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix2x3&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix2x4"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix2x4(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix4x2" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix2x4&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix2x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x4](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix2x4&)" return-type="QMatrix2x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x4](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix2x4&)" return-type="QMatrix2x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x4](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix2x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix2x4](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix2x4&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix3x2"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix3x2(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="6" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix2x3" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix3x2&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix3x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x2](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix3x2&)" return-type="QMatrix3x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x2](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix3x2&)" return-type="QMatrix3x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x2](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix3x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x2](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix3x2&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix3x3"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="9" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix3x3(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="9" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="9" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="9" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix3x3" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix3x3&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix3x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x3](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix3x3&)" return-type="QMatrix3x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x3](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix3x3&)" return-type="QMatrix3x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x3](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix3x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x3](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix3x3&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix3x4"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix3x4(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix4x3" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix3x4&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix3x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x4](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix3x4&)" return-type="QMatrix3x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x4](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix3x4&)" return-type="QMatrix3x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x4](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix3x4" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix3x4](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix3x4&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix4x2"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix4x2(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="8" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix2x4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix4x2&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix4x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x2](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix4x2&)" return-type="QMatrix4x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x2](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix4x2&)" return-type="QMatrix4x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x2](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix4x2" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x2](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix4x2&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix4x3"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="QMatrix4x3(PySequence*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_constructor"> + <replace from="%SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="data()" return-type="qreal"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="fill(PyObject*)"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_fill_function"> + <replace from="%MATRIX_SIZE" to="12" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="transposed()" return-type="PyObject"> + <inject-code class="target" position="beginning"> + <insert-template name="matrix_transposed_function"> + <replace from="%TRANSPOSED_TYPE" to="QMatrix3x4" /> + </insert-template> + </inject-code> + </add-function> + <add-function signature="operator!=(const QMatrix4x3&)" return-type="bool" /> + <add-function signature="operator*=(qreal)" return-type="QMatrix4x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x3](*%CPPSELF *= %1); + </inject-code> + </add-function> + <add-function signature="operator+=(const QMatrix4x3&)" return-type="QMatrix4x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x3](*%CPPSELF += %1); + </inject-code> + </add-function> + <add-function signature="operator-=(const QMatrix4x3&)" return-type="QMatrix4x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x3](*%CPPSELF -= %1); + </inject-code> + </add-function> + <add-function signature="operator/=(qreal)" return-type="QMatrix4x3" > + <inject-code class="target" position="beginning"> + return %CONVERTTOPYTHON[QMatrix4x3](*%CPPSELF /= %1); + </inject-code> + </add-function> + <add-function signature="operator==(const QMatrix4x3&)" return-type="bool" /> + </value-type> + + <value-type name="QMatrix4x4"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code_matrix"> + <replace from="%MATRIX_TYPE" to="qreal" /> + <replace from="%MATRIX_SIZE" to="16" /> + </insert-template> + </inject-code> + </add-function> <modify-function signature="QMatrix4x4(const qreal*,int,int)" remove="all"/> - <modify-function signature="QMatrix4x4(const qreal*)"> <modify-argument index="1"> <replace-type modified-type="PySequence" /> @@ -4866,21 +5397,13 @@ } </inject-code> </modify-function> - - <modify-function signature="constData() const" rename="data"> - <modify-argument index="return"> - <replace-type modified-type="PyTupleObject*"/> - </modify-argument> + <modify-function signature="data()"> <inject-code class="target" position="beginning"> - const qreal* values = %CPPSELF.constData(); - %PYARG_0 = PyTuple_New(16); - for(int i=0; i < 16; i++) { - PyObject *v = PyFloat_FromDouble(values[i]); - PyTuple_SET_ITEM(%PYARG_0, i, v); - } + <insert-template name="matrix_data_function"> + <replace from="%MATRIX_SIZE" to="16" /> + </insert-template> </inject-code> </modify-function> - <modify-function signature="copyDataTo(qreal *) const"> <modify-argument index="1"> <remove-argument/> @@ -4888,7 +5411,6 @@ <modify-argument index="return"> <replace-type modified-type="PyTupleObject*"/> </modify-argument> - <inject-code class="target" position="beginning"> qreal values[16]; %CPPSELF.%FUNCTION_NAME(values); @@ -4899,11 +5421,10 @@ } </inject-code> </modify-function> - <modify-function signature="operator()(int, int)" remove="all"/> <modify-function signature="operator()(int, int)const" remove="all"/> - <modify-function signature="data()" remove="all"/> <modify-function signature="data() const" remove="all"/> + <modify-function signature="constData() const" remove="all"/> </value-type> <object-type name="QGesture"> @@ -4942,7 +5463,17 @@ <object-type name="QPinchGesture"> <enum-type name="ChangeFlag" flags="QPinchGesture::ChangeFlags"/> </object-type> - <value-type name="QQuaternion"/> + <value-type name="QQuaternion"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="dddd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.scalar(), %CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()" /> + </insert-template> + </inject-code> + </add-function> + </value-type> + <!-- Symbian <value-type name="QS60MainApplication"/> @@ -4966,16 +5497,41 @@ <value-type name="TouchPoint"/> </value-type> - <value-type name="QVector2D"/> + <value-type name="QVector2D"> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="dd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y()" /> + </insert-template> + </inject-code> + </add-function> + </value-type> <value-type name="QVector3D"> <extra-includes> <include file-name="QMatrix4x4" location="global"/> </extra-includes> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="ddd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()" /> + </insert-template> + </inject-code> + </add-function> </value-type> <value-type name="QVector4D"> <extra-includes> <include file-name="QMatrix4x4" location="global"/> </extra-includes> + <add-function signature="__reduce__" return-type="PyObject*"> + <inject-code class="target" position="beginning"> + <insert-template name="reduce_code"> + <replace from="%REDUCE_FORMAT" to="dddd" /> + <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z(), %CPPSELF.w()" /> + </insert-template> + </inject-code> + </add-function> </value-type> <suppress-warning text="template baseclass 'QGenericMatrix<qreal>' of '*' is not known"/> @@ -4990,6 +5546,6 @@ <suppress-warning text="unhandled enum value: ~FlagMask in QMessageBox::StandardButton"/> <suppress-warning text="unmatched enum ~FlagMask"/> <suppress-warning text="Argument 1 on function 'QTabWidget::setUpLayout(bool)' has default expressiont but does not have name."/> - + <suppress-warning text="enum 'QMatrix4x4::enum_1' is specified in typesystem, but not declared"/> <suppress-warning text="type 'QGtkStyle' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/> </typesystem> diff --git a/tests/QtGui/CMakeLists.txt b/tests/QtGui/CMakeLists.txt index 350948b..f40ebfd 100644 --- a/tests/QtGui/CMakeLists.txt +++ b/tests/QtGui/CMakeLists.txt @@ -1,6 +1,7 @@ #Keep this in alphabetical sort PYSIDE_TEST(api2_test.py) +PYSIDE_TEST(add_action_test.py) PYSIDE_TEST(bug_172.py) PYSIDE_TEST(bug_243.py) PYSIDE_TEST(bug_300_test.py) @@ -10,8 +11,8 @@ PYSIDE_TEST(bug_338.py) PYSIDE_TEST(bug_363.py) PYSIDE_TEST(bug_367.py) PYSIDE_TEST(bug_389.py) -PYSIDE_TEST(add_action_test.py) PYSIDE_TEST(customproxywidget_test.py) +PYSIDE_TEST(deepcopy_test.py) PYSIDE_TEST(float_to_int_implicit_conversion_test.py) PYSIDE_TEST(grandparent_method_test.py) PYSIDE_TEST(hashabletype_test.py) diff --git a/tests/QtGui/deepcopy_test.py b/tests/QtGui/deepcopy_test.py new file mode 100644 index 0000000..2f8f7de --- /dev/null +++ b/tests/QtGui/deepcopy_test.py @@ -0,0 +1,93 @@ + +import unittest +from copy import deepcopy + +from PySide.QtCore import QPoint +from PySide.QtGui import QMatrix +from PySide.QtGui import QMatrix2x2, QMatrix2x3, QMatrix2x4 +from PySide.QtGui import QMatrix3x2, QMatrix3x3, QMatrix3x4 +from PySide.QtGui import QMatrix4x2, QMatrix4x3, QMatrix4x4 +from PySide.QtGui import QVector2D, QVector3D, QVector4D +from PySide.QtGui import QColor, QTransform, QKeySequence, QQuaternion +from PySide.QtGui import QPolygon + +class DeepCopyHelper: + def testCopy(self): + copy = deepcopy([self.original])[0] + self.assert_(copy is not self.original) + self.assertEqual(copy, self.original) + +class QColorDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QColor("red") + +class QTransformDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QTransform(1, 2, 3, 4, 5, 6, 7, 8) + +class QKeySequenceDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QKeySequence("Ctrl+P") + +class QQuaternionDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QQuaternion(1, 2, 3, 4) + +class QVector2DDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QVector2D(1, 2) + +class QVector3DDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QVector3D(1, 2, 3) + +class QVector4DDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QVector4D(1, 2, 3, 4) + +class QPolygonDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QPolygon([QPoint(1, 2), QPoint(3, 4), QPoint(5, 6)]) + +class QMatrixDeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix(1, 2, 3, 4, 5, 6) + +class QMatrix2x2DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix2x2([1, 2, 3, 4]) + +class QMatrix2x3DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix2x3([1, 2, 3, 4, 5, 6]) + +class QMatrix2x4DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix2x4([1, 2, 3, 4, 5, 6, 7, 8]) + +class QMatrix3x2DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix3x2([1, 2, 3, 4, 5, 6]) + +class QMatrix3x3DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix3x3([1, 2, 3, 4, 5, 6, 7, 8, 9]) + +class QMatrix3x4DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix3x4([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) + +class QMatrix4x2DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix4x2([1, 2, 3, 4, 5, 6, 7, 8]) + +class QMatrix4x3DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix4x3([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) + +class QMatrix4x4DeepCopy(DeepCopyHelper, unittest.TestCase): + def setUp(self): + self.original = QMatrix4x4([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) + +if __name__ == '__main__': + unittest.main() |