diff options
author | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-06-14 16:56:36 -0300 |
---|---|---|
committer | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-06-15 20:41:41 -0300 |
commit | e0c46d67613fe8c38c3bee6b99ae58260cb33260 (patch) | |
tree | 6036525d0bd39b7a4aa46507092d4d98eda9e80f | |
parent | 0eb8d670c240b5ea621dba6271139f30cc97790a (diff) |
Implementing API2 modifications.
Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>,
Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 158 | ||||
-rw-r--r-- | PySide/QtWebKit/typesystem_webkit.xml | 12 | ||||
-rw-r--r-- | PySide/typesystem_templates.xml | 14 | ||||
-rw-r--r-- | tests/QtGui/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/QtGui/api2_test.py | 60 | ||||
-rw-r--r-- | tests/QtGui/qobject_mi_test.py | 6 |
6 files changed, 239 insertions, 12 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 4a9e955bb..92856d9c3 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -1507,7 +1507,16 @@ </modify-argument> </modify-function> </object-type> - <object-type name="QDoubleValidator"/> + <object-type name="QDoubleValidator"> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> + </object-type> <object-type name="QFileIconProvider"/> <object-type name="QWizard"> <!-- ### Requires correct class name in meta object --> @@ -1633,7 +1642,16 @@ <!--### Obsolete in 4.3--> </object-type> <object-type name="QInputContextFactory"/> - <object-type name="QIntValidator"/> + <object-type name="QIntValidator"> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> + </object-type> <object-type name="QItemDelegate"> <modify-function signature="doLayout(QStyleOptionViewItem,QRect*,QRect*,QRect*,bool)const" remove="all" /> <modify-function signature="drawCheck(QPainter*,QStyleOptionViewItem,QRect,Qt::CheckState)const"> @@ -1950,7 +1968,16 @@ <object-type name="QPrintEngine"/> <object-type name="QProgressBar" /> <object-type name="QPushButton" /> - <object-type name="QRegExpValidator"/> + <object-type name="QRegExpValidator"> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> + </object-type> <object-type name="QScrollArea"> <modify-function signature="setWidget(QWidget*)"> <modify-argument index="1"> @@ -2214,7 +2241,24 @@ </modify-function> </object-type> <object-type name="QVBoxLayout"/> - <object-type name="QValidator"/> + <object-type name="QValidator"> + <modify-function signature="fixup(QString &)const"> + <modify-argument index="return"> + <replace-type modified-type="QString"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_QString"/> + </inject-code> + </modify-function> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> + </object-type> <object-type name="QWhatsThis"/> <object-type name="QWidgetAction"> <modify-function signature="setDefaultWidget(QWidget*)"> @@ -3308,6 +3352,22 @@ <parent index="this" action="add"/> </modify-argument> </modify-function> + <modify-function signature="fixup(QString &)const"> + <modify-argument index="return"> + <replace-type modified-type="QString"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_QString"/> + </inject-code> + </modify-function> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> </object-type> <object-type name="QTextFrame" > <extra-includes> @@ -3460,6 +3520,22 @@ <parent index="this" action="add"/> </modify-argument> </modify-function> + <modify-function signature="fixup(QString &)const"> + <modify-argument index="return"> + <replace-type modified-type="QString"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_QString"/> + </inject-code> + </modify-function> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> </object-type> <object-type name="QSortFilterProxyModel"> <modify-function signature="parent()const" remove="all"/> @@ -3546,9 +3622,30 @@ </modify-argument> </modify-function> - <modify-function signature="getOpenFileNames(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"/> - <modify-function signature="getOpenFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"/> - <modify-function signature="getSaveFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"/> + <modify-function signature="getOpenFileNames(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_for_QFileDialog"/> + </inject-code> + </modify-function> + <modify-function signature="getOpenFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_for_QFileDialog"/> + </inject-code> + </modify-function> + <modify-function signature="getSaveFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFlags<QFileDialog::Option>)" allow-thread="yes"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_for_QFileDialog"/> + </inject-code> + </modify-function> <modify-function signature="getExistingDirectory(QWidget*, const QString&, const QString&, QFlags<QFileDialog::Option>)" allow-thread="yes" /> </object-type> <object-type name="QErrorMessage"/> @@ -3663,11 +3760,22 @@ </extra-includes> <modify-function signature="setMimeData(QMimeData *, QClipboard::Mode)"> <modify-argument index="1"> - <!-- TODO: mybe this is not the best solution --> + <!-- TODO: maybe this is not the best solution --> <parent index="this" action="add"/> </modify-argument> </modify-function> - <modify-function signature="text(QString&,QClipboard::Mode)const" remove="all" /> + <modify-function signature="text(QString&,QClipboard::Mode)const"> + <modify-argument index="2"> + <replace-default-expression with="QClipboard::Clipboard"/> + </modify-argument> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2); + %PYARG_0 = Shiboken::makeTuple(retval_, %1); + </inject-code> + </modify-function> </object-type> <object-type name="QAbstractScrollArea"> <modify-function signature="setViewport(QWidget *)"> @@ -3923,6 +4031,22 @@ <modify-function signature="valueChanged(const QString &)"> <rename to="valueStringChanged"/> </modify-function> + <modify-function signature="fixup(QString &)const"> + <modify-argument index="return"> + <replace-type modified-type="QString"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_QString"/> + </inject-code> + </modify-function> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> </object-type> <object-type name="QTextBrowser"> <modify-function signature="highlighted(const QString &)"> @@ -3933,6 +4057,22 @@ <modify-function signature="valueChanged(const QString &)"> <rename to="valueStringChanged"/> </modify-function> + <modify-function signature="fixup(QString &)const"> + <modify-argument index="return"> + <replace-type modified-type="QString"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_QString"/> + </inject-code> + </modify-function> + <modify-function signature="validate(QString &, int &)const"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + <insert-template name="return_tuple_QValidator_QString_int"/> + </inject-code> + </modify-function> </object-type> <object-type name="QButtonGroup"> <modify-function signature="addButton(QAbstractButton *)"> diff --git a/PySide/QtWebKit/typesystem_webkit.xml b/PySide/QtWebKit/typesystem_webkit.xml index dd3b5ba73..a08b1837a 100644 --- a/PySide/QtWebKit/typesystem_webkit.xml +++ b/PySide/QtWebKit/typesystem_webkit.xml @@ -46,7 +46,17 @@ </object-type> <object-type name="QWebSettings"/> - <object-type name="QWebPage"/> + <object-type name="QWebPage"> + <modify-function signature="javaScriptPrompt(QWebFrame*,const QString &,const QString &,QString*)"> + <modify-argument index="return"> + <replace-type modified-type="PyObject"/> + </modify-argument> + <inject-code class="target" position="end"> + %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4); + %PYARG_0 = Shiboken::makeTuple(retval_, %4); + </inject-code> + </modify-function> + </object-type> <object-type name="QWebHistory"/> <object-type name="QWebHistoryInterface"/> <object-type name="QWebPluginFactory"/> diff --git a/PySide/typesystem_templates.xml b/PySide/typesystem_templates.xml index 46911fac7..8bc9eb5ba 100644 --- a/PySide/typesystem_templates.xml +++ b/PySide/typesystem_templates.xml @@ -148,5 +148,19 @@ _ret = %CPPSELF.%FUNCTION_NAME(%1, &a, &b); %PYARG_0 = Shiboken::makeTuple(_ret, a, b); </template> + + <template name="return_QString"> + %PYARG_0 = %CONVERTTOPYTHON[QString](%1); + </template> + + <template name="return_tuple_QValidator_QString_int"> + %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2); + %PYARG_0 = Shiboken::makeTuple(retval_, %1, %2); + </template> + + <template name="return_for_QFileDialog"> + %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2); + %PYARG_0 = Shiboken::makeTuple(retval_, %1, %2); + </template> </typesystem> diff --git a/tests/QtGui/CMakeLists.txt b/tests/QtGui/CMakeLists.txt index d2d89ee98..5d1cec422 100644 --- a/tests/QtGui/CMakeLists.txt +++ b/tests/QtGui/CMakeLists.txt @@ -1,3 +1,4 @@ +PYSIDE_TEST(api2_test.py) PYSIDE_TEST(add_action_test.py) PYSIDE_TEST(customproxywidget_test.py) PYSIDE_TEST(float_to_int_implicit_conversion_test.py) diff --git a/tests/QtGui/api2_test.py b/tests/QtGui/api2_test.py new file mode 100644 index 000000000..e458d8bbf --- /dev/null +++ b/tests/QtGui/api2_test.py @@ -0,0 +1,60 @@ +'''Test cases for PySide API2 support''' + + +import unittest + +from PySide.QtCore import QObject +from PySide.QtGui import * + +from helper import UsesQApplication + +class WidgetValidatorQInt(QWidget, QIntValidator): + def __init__(self, parent=None): + QWidget.__init__(self, parent) + QIntValidator.__init__(self, parent) + +class WidgetValidatorQSpinBox(QSpinBox): + def __init__(self, parent=None): + QSpinBox.__init__(self, parent) + + def fixup(self, text): + print "It was called!" + +class DoubleQObjectInheritanceTest(UsesQApplication): + + def testDouble(self): + '''Double inheritance from QObject classes''' + + obj = WidgetValidatorQInt() + + #QIntValidator methods + state, string, number = obj.validate('Test', 0) + self.assertEqual(state, QValidator.Invalid) + state, string, number = obj.validate('33', 0) + self.assertEqual(state, QValidator.Acceptable) + + def testQSpinBox(self): + obj = WidgetValidatorQSpinBox() + + obj.setRange(1, 10) + obj.setValue(0) + print "Value:", obj.value() + +class QClipboardTest(UsesQApplication): + + def testQClipboard(self): + clip = QClipboard() + clip.setText("Testing this thing!") + + text, subtype = clip.text("") + self.assertEqual(subtype, "plain") + self.assertEqual(text, "Testing this thing!") + +#class QFileDialog(UsesQApplication): +# +# def testQFileDialog(self): +# string, filtr = QFileDialog.getOpenFileName() +# print string, filtr + +if __name__ == '__main__': + unittest.main() diff --git a/tests/QtGui/qobject_mi_test.py b/tests/QtGui/qobject_mi_test.py index 8ccc1d35d..28b3cbd16 100644 --- a/tests/QtGui/qobject_mi_test.py +++ b/tests/QtGui/qobject_mi_test.py @@ -29,8 +29,10 @@ class DoubleQObjectInheritanceTest(UsesQApplication): self.assertFalse(obj.isVisible()) #QIntValidator methods - self.assertEqual(obj.validate('aaaa', 0), QValidator.Invalid) - self.assertEqual(obj.validate('33', 0), QValidator.Acceptable) + state, string, number = obj.validate('aaaa', 0) + self.assertEqual(state, QValidator.Invalid) + state, string, number = obj.validate('33', 0) + self.assertEqual(state, QValidator.Acceptable) if __name__ == '__main__': |