diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2011-04-06 20:51:04 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:07 -0300 |
commit | 8b1f0d192a8295b9aac9bfa876fba5674014b91d (patch) | |
tree | 2a0d37a3ee8b0c4e684957370a7e43f4fcaa9a69 | |
parent | 00f0ea88cfd1020ff3765597ca9525eb73a783b2 (diff) |
Fixes bugs 744, 745, 756, 758 and 764.
Bug #744 - Method "void QGraphicsLayout::getContentsMargins(qreal*,qreal*,qreal*,qreal*) const" missing
Bug #745 - Method "void QGraphicsLayoutItem::getContentsMargins(qreal*,qreal*,qreal*,qreal*) const" missing
Bug #756 - Method "void QWidget::getContentsMargins(int*,int*,int*,int*) const" missing
Bug #758 - Method "void QTextCursor::selectedTableCells(int*,int*,int*,int*) const" missing
Bug #764 - Method "void QLayout::getContentsMargins(int*,int*,int*,int*) const" missing
Also added unit tests.
-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() + |