diff options
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 145 | ||||
-rw-r--r-- | PySide/typesystem_templates.xml | 17 | ||||
-rw-r--r-- | tests/QtGui/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/QtGui/returnquadruplesofnumbers_test.py | 48 |
4 files changed, 201 insertions, 10 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index fa819f583..f928d5ee5 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -671,8 +671,33 @@ <enum-type name="MoveMode"/> <enum-type name="MoveOperation"/> <enum-type name="SelectionType"/> - <!-- ### See bug 758 --> - <modify-function signature="selectedTableCells(int*,int*,int*,int*)const" remove="all" /> + <modify-function signature="selectedTableCells(int*,int*,int*,int*)const"> + <modify-argument index="0"> + <replace-type modified-type="PyObject" /> + </modify-argument> + <modify-argument index="1"> + <remove-argument/> + </modify-argument> + <modify-argument index="2"> + <remove-argument/> + </modify-argument> + <modify-argument index="3"> + <remove-argument/> + </modify-argument> + <modify-argument index="4"> + <remove-argument/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + <inject-code class="native" position="end"> + <insert-template name="fix_native_return_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + </modify-function> <modify-function signature="currentFrame()const"> <modify-argument index="return"> <define-ownership class="target" owner="default"/> @@ -2756,8 +2781,33 @@ </inject-code> </modify-function> - <!-- ### See bug 764 --> - <modify-function signature="getContentsMargins(int*,int*,int*,int*)const" remove="all" /> + <modify-function signature="getContentsMargins(int*,int*,int*,int*)const"> + <modify-argument index="0"> + <replace-type modified-type="PyObject" /> + </modify-argument> + <modify-argument index="1"> + <remove-argument/> + </modify-argument> + <modify-argument index="2"> + <remove-argument/> + </modify-argument> + <modify-argument index="3"> + <remove-argument/> + </modify-argument> + <modify-argument index="4"> + <remove-argument/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + <inject-code class="native" position="end"> + <insert-template name="fix_native_return_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + </modify-function> <!-- ### Obsolete in 4.3 --> <modify-function signature="setMargin(int)" remove="all"/> <modify-function signature="margin()const" remove="all"/> @@ -3716,8 +3766,33 @@ <define-ownership owner="c++"/> </modify-argument> </modify-function> - <!-- ### See bug 756 --> - <modify-function signature="getContentsMargins(int*,int*,int*,int*)const" remove="all" /> + <modify-function signature="getContentsMargins(int*,int*,int*,int*)const"> + <modify-argument index="0"> + <replace-type modified-type="PyObject" /> + </modify-argument> + <modify-argument index="1"> + <remove-argument/> + </modify-argument> + <modify-argument index="2"> + <remove-argument/> + </modify-argument> + <modify-argument index="3"> + <remove-argument/> + </modify-argument> + <modify-argument index="4"> + <remove-argument/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + <inject-code class="native" position="end"> + <insert-template name="fix_native_return_number*,number*,number*,number*"> + <replace from="$TYPE" to="int" /> + </insert-template> + </inject-code> + </modify-function> <modify-function signature="insertAction(QAction *, QAction *)"> <modify-argument index="2"> <parent index="this" action="add"/> @@ -5133,15 +5208,65 @@ </modify-function> </object-type> <object-type name="QGraphicsLayout"> - <!-- ### See bug 744 --> - <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const" remove="all" /> + <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const"> + <modify-argument index="0"> + <replace-type modified-type="PyObject" /> + </modify-argument> + <modify-argument index="1"> + <remove-argument/> + </modify-argument> + <modify-argument index="2"> + <remove-argument/> + </modify-argument> + <modify-argument index="3"> + <remove-argument/> + </modify-argument> + <modify-argument index="4"> + <remove-argument/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_number*,number*,number*,number*"> + <replace from="$TYPE" to="qreal" /> + </insert-template> + </inject-code> + <inject-code class="native" position="end"> + <insert-template name="fix_native_return_number*,number*,number*,number*"> + <replace from="$TYPE" to="qreal" /> + </insert-template> + </inject-code> + </modify-function> <modify-function signature="widgetEvent(QEvent*)"> <modify-argument index="1" invalidate-after-use="yes"/> </modify-function> </object-type> <object-type name="QGraphicsLayoutItem" copyable="false"> - <!-- ### See bug 745 --> - <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const" remove="all" /> + <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const"> + <modify-argument index="0"> + <replace-type modified-type="PyObject" /> + </modify-argument> + <modify-argument index="1"> + <remove-argument/> + </modify-argument> + <modify-argument index="2"> + <remove-argument/> + </modify-argument> + <modify-argument index="3"> + <remove-argument/> + </modify-argument> + <modify-argument index="4"> + <remove-argument/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="fix_number*,number*,number*,number*"> + <replace from="$TYPE" to="qreal" /> + </insert-template> + </inject-code> + <inject-code class="native" position="end"> + <insert-template name="fix_native_return_number*,number*,number*,number*"> + <replace from="$TYPE" to="qreal" /> + </insert-template> + </inject-code> + </modify-function> <modify-function signature="setParentLayoutItem(QGraphicsLayoutItem*)"> <modify-argument index="1"> <parent index="this" action="add"/> diff --git a/PySide/typesystem_templates.xml b/PySide/typesystem_templates.xml index e42193e74..51ba3742e 100644 --- a/PySide/typesystem_templates.xml +++ b/PySide/typesystem_templates.xml @@ -150,6 +150,23 @@ %PYARG_0 = Shiboken::makeTuple(a, b, c, d); </template> + <template name="fix_native_return_number*,number*,number*,number*"> + PyObject* _obj = %PYARG_0.object(); + if (!PySequence_Check(_obj) + || PySequence_Fast_GET_SIZE(_obj) != 4 + || !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 0)) + || !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 1)) + || !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 2)) + || !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 3))) { + PyErr_SetString(PyExc_TypeError, "Sequence of 4 numbers expected"); + } else { + *%1 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 0)); + *%2 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 1)); + *%3 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 2)); + *%4 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 3)); + } + </template> + <template name="fix_int*,int*,int*,int*,int*"> int a, b, c, d, e; PyThreadState* _save = PyEval_SaveThread(); // Py_BEGIN_ALLOW_THREADS diff --git a/tests/QtGui/CMakeLists.txt b/tests/QtGui/CMakeLists.txt index 9306efdcc..ef62638fc 100644 --- a/tests/QtGui/CMakeLists.txt +++ b/tests/QtGui/CMakeLists.txt @@ -110,6 +110,7 @@ PYSIDE_TEST(qwidget_setlayout_test.py) PYSIDE_TEST(qwidget_test.py) PYSIDE_TEST(reference_count_test.py) PYSIDE_TEST(repr_test.py) +PYSIDE_TEST(returnquadruplesofnumbers_test.py) PYSIDE_TEST(standardpixmap_test.py) PYSIDE_TEST(timed_app_test.py) PYSIDE_TEST(virtual_protected_inheritance_test.py) diff --git a/tests/QtGui/returnquadruplesofnumbers_test.py b/tests/QtGui/returnquadruplesofnumbers_test.py new file mode 100644 index 000000000..fad622e8f --- /dev/null +++ b/tests/QtGui/returnquadruplesofnumbers_test.py @@ -0,0 +1,48 @@ +import unittest +from PySide.QtGui import QLayout, QWidget, QGraphicsLayout, QGraphicsLayoutItem, QTextCursor + +from helper import UsesQApplication + +class Layout(QLayout): + def __init__(self): + QLayout.__init__(self) + +class GraphicsLayout(QGraphicsLayout): + def __init__(self): + QGraphicsLayout.__init__(self) + +class GraphicsLayoutItem(QGraphicsLayoutItem): + def __init__(self): + QGraphicsLayoutItem.__init__(self) + +class ReturnsQuadruplesOfNumbers(UsesQApplication): + + def testQGraphicsLayoutGetContentsMargins(self): + obj = GraphicsLayout() + values = (10.0, 20.0, 30.0, 40.0) + obj.setContentsMargins(*values) + self.assertEquals(obj.getContentsMargins(), values) + + def testQGraphicsLayoutItemGetContentsMargins(self): + obj = GraphicsLayoutItem() + self.assertEquals(obj.getContentsMargins(), (0.0, 0.0, 0.0, 0.0)) + + def testQWidgetGetContentsMargins(self): + obj = QWidget() + values = (10, 20, 30, 40) + obj.setContentsMargins(*values) + self.assertEquals(obj.getContentsMargins(), values) + + def testQLayoutGetContentsMargins(self): + obj = Layout() + values = (10, 20, 30, 40) + obj.setContentsMargins(*values) + self.assertEquals(obj.getContentsMargins(), values) + + def testQTextCursorSelectedTableCells(self): + obj = QTextCursor() + self.assertEquals(obj.selectedTableCells(), (-1, -1, -1, -1)) + +if __name__ == "__main__": + unittest.main() + |