aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml48
-rw-r--r--tests/QtGui/qfontmetrics_test.py10
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()