diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-06-15 13:34:42 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-06-17 14:04:11 -0300 |
commit | 4cca85f52585b17f53e26f81ca26504fe561e578 (patch) | |
tree | e97a82cc35ba1e785e6afe2aa8dd66978beea0e2 | |
parent | ef7eb0fca443ca1df624034c6e6ede597f2dab3c (diff) |
Implement inject-code to functions using QChar in QFontMetrics and
QFontMetricsF
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 48 | ||||
-rw-r--r-- | tests/QtGui/qfontmetrics_test.py | 10 |
2 files changed, 58 insertions, 0 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 92856d9c3..7a6f2b0f4 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -1,5 +1,16 @@ <?xml version="1.0"?> <typesystem package="PySide.QtGui"> + <template name="QFontCharFix"> + int size = PyString_GET_SIZE(%PYARG_1); + if (size == 1) { + char *str = PyString_AS_STRING(%PYARG_1); + QChar ch(str[0]); + %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%CPPSELF.%FUNCTION_NAME(ch)); + } else { + PyErr_SetString(PyExc_TypeError, "String must have only one character"); + } + </template> + <function signature="qAlpha(uint)" /> <function signature="qBlue(uint)" /> <function signature="qGray(int,int,int)" /> @@ -1057,6 +1068,24 @@ </value-type> <value-type name="QFontMetricsF" > + <modify-function signature="boundingRect(QChar)const" rename="boundingRectChar"> + <modify-argument index="1"> + <replace-type modified-type="PyString"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="QFontCharFix"/> + </inject-code> + </modify-function> + + <modify-function signature="width(QChar)const" rename="widthChar"> + <modify-argument index="1"> + <replace-type modified-type="PyString"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="QFontCharFix"/> + </inject-code> + </modify-function> + <modify-function signature="boundingRect(QRectF,int,QString,int,int*)const"> <modify-argument index="5"> <replace-type modified-type="PyObject"/> @@ -1118,6 +1147,25 @@ </value-type> <value-type name="QTextOption::Tab"/> <value-type name="QFontMetrics" > + + <modify-function signature="boundingRect(QChar)const" rename="boundingRectChar"> + <modify-argument index="1"> + <replace-type modified-type="PyString"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="QFontCharFix"/> + </inject-code> + </modify-function> + + <modify-function signature="width(QChar)const" rename="widthChar"> + <modify-argument index="1"> + <replace-type modified-type="PyString"/> + </modify-argument> + <inject-code class="target" position="beginning"> + <insert-template name="QFontCharFix"/> + </inject-code> + </modify-function> + <modify-function signature="boundingRect(int,int,int,int,int,QString,int,int*)const"> <modify-argument index="8"> <replace-type modified-type="PyObject"/> diff --git a/tests/QtGui/qfontmetrics_test.py b/tests/QtGui/qfontmetrics_test.py index 7964d91d4..96c022fc1 100644 --- a/tests/QtGui/qfontmetrics_test.py +++ b/tests/QtGui/qfontmetrics_test.py @@ -185,5 +185,15 @@ class FSizeTest(QFontMetricsFTest): 'PySide by INdT', 20, ['aaaa', 'ase']) +class QCharTest(QFontMetricsFTest): + + def testBoundingRect(self): + retCh = self.metrics.boundingRectChar('a') + self.assertEqual(type(retCh), QRectF) + + def testWith(self): + retCh = self.metrics.widthChar('a') + self.assert_(retCh > 0) + if __name__ == '__main__': unittest.main() |