diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2011-06-14 18:44:56 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:29 -0300 |
commit | df30f375124a1faea6a960e6adcd0d90fba08615 (patch) | |
tree | b5e6c71cacf67d5092aeed2d10307494d4eac8a5 /PySide/QtGui | |
parent | 590abafc54206e458066f5632accda94e37f5edf (diff) |
Fix bug 879 - "QDoubleSpinBox: Can't call the parent validate() method from a subclass"
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'PySide/QtGui')
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index d6bc0f2fb..602fcf000 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -2706,6 +2706,43 @@ </modify-function> </object-type> <object-type name="QVBoxLayout"/> + + <template name="validator_conversionrule"> + QValidator::State %out; + + if (PySequence_Check(%PYARG_0)) { + Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_0, 0)); + int size = PySequence_Fast_GET_SIZE(seq.object()); + + if (size > 1) { + if (Shiboken::Converter<QString>::isConvertible(PySequence_Fast_GET_ITEM(seq.object(), 1))) + %1 = %CONVERTTOCPP[QString](PySequence_Fast_GET_ITEM(seq.object(), 1)); + else + qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to unicode."); + } + + if (size > 2) { + if (Shiboken::Converter<int>::isConvertible(PySequence_Fast_GET_ITEM(seq.object(), 2))) + %2 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(seq.object(), 2)); + else + qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to int."); + } + %PYARG_0 = PySequence_Fast_GET_ITEM(seq.object(), 0); + Py_INCREF(%PYARG_0); // we need to incref, because "%PYARG_0 = ..." will decref the tuple and the tuple will be decrefed again at the end of this scope. + } + + // check retrun value + if (Shiboken::Converter<QValidator::State>::isConvertible(%PYARG_0)) { + %out = %CONVERTTOCPP[QValidator::State](%PYARG_0); + } else { + PyErr_Format(PyExc_TypeError, "Invalid return value in function %s, expected %s, got %s.", + "QValidator.validate", + "PySide.QtGui.QValidator.State, (PySide.QtGui.QValidator.State,), (PySide.QtGui.QValidator.State, unicode) or (PySide.QtGui.QValidator.State, unicode, int)", + pyResult->ob_type->tp_name); + return QValidator::State(); + } + </template> + <object-type name="QValidator"> <enum-type name="State"/> <modify-function signature="fixup(QString &)const"> @@ -2720,39 +2757,7 @@ <modify-argument index="return"> <replace-type modified-type="PyObject"/> <conversion-rule class="native"> - QValidator::State %out; - - if (PySequence_Check(%PYARG_0)) { - Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_0, 0)); - int size = PySequence_Fast_GET_SIZE(seq.object()); - - if (size > 1) { - if (Shiboken::Converter<QString>::isConvertible(PySequence_Fast_GET_ITEM(seq.object(), 1))) - %1 = %CONVERTTOCPP[QString](PySequence_Fast_GET_ITEM(seq.object(), 1)); - else - qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to unicode."); - } - - if (size > 2) { - if (Shiboken::Converter<int>::isConvertible(PySequence_Fast_GET_ITEM(seq.object(), 2))) - %2 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(seq.object(), 2)); - else - qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to int."); - } - %PYARG_0 = PySequence_Fast_GET_ITEM(seq.object(), 0); - Py_INCREF(%PYARG_0); // we need to incref, because "%PYARG_0 = ..." will decref the tuple and the tuple will be decrefed again at the end of this scope. - } - - // check retrun value - if (Shiboken::Converter<QValidator::State>::isConvertible(%PYARG_0)) { - %out = %CONVERTTOCPP[QValidator::State](%PYARG_0); - } else { - PyErr_Format(PyExc_TypeError, "Invalid return value in function %s, expected %s, got %s.", - "QValidator.validate", - "PySide.QtGui.QValidator.State, (PySide.QtGui.QValidator.State,), (PySide.QtGui.QValidator.State, unicode) or (PySide.QtGui.QValidator.State, unicode, int)", - pyResult->ob_type->tp_name); - return QValidator::State(); - } + <insert-template name="validator_conversionrule"/> </conversion-rule> </modify-argument> <inject-code class="target" position="end"> @@ -4127,6 +4132,9 @@ <modify-function signature="validate(QString &, int &)const"> <modify-argument index="return"> <replace-type modified-type="PyObject"/> + <conversion-rule class="native"> + <insert-template name="validator_conversionrule"/> + </conversion-rule> </modify-argument> <inject-code class="target" position="end"> <insert-template name="return_tuple_QValidator_QString_int"/> |