aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuciano Wolf <luciano.wolf@openbossa.org>2010-06-14 16:56:36 -0300
committerLuciano Wolf <luciano.wolf@openbossa.org>2010-06-15 20:41:41 -0300
commite0c46d67613fe8c38c3bee6b99ae58260cb33260 (patch)
tree6036525d0bd39b7a4aa46507092d4d98eda9e80f
parent0eb8d670c240b5ea621dba6271139f30cc97790a (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.xml158
-rw-r--r--PySide/QtWebKit/typesystem_webkit.xml12
-rw-r--r--PySide/typesystem_templates.xml14
-rw-r--r--tests/QtGui/CMakeLists.txt1
-rw-r--r--tests/QtGui/api2_test.py60
-rw-r--r--tests/QtGui/qobject_mi_test.py6
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 &amp;, int &amp;)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 &amp;, int &amp;)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 &amp;, int &amp;)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 &amp;)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 &amp;, int &amp;)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 &amp;)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 &amp;, int &amp;)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 &amp;)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 &amp;, int &amp;)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&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes"/>
- <modify-function signature="getOpenFileName(QWidget*, const QString&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes"/>
- <modify-function signature="getSaveFileName(QWidget*, const QString&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes"/>
+ <modify-function signature="getOpenFileNames(QWidget*, const QString&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" 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&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" 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&amp;, const QString&amp;, const QString&amp;, QString*, QFlags&lt;QFileDialog::Option&gt;)" 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&amp;, const QString&amp;, QFlags&lt;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&amp;,QClipboard::Mode)const" remove="all" />
+ <modify-function signature="text(QString&amp;,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 &amp;)">
<rename to="valueStringChanged"/>
</modify-function>
+ <modify-function signature="fixup(QString &amp;)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 &amp;, int &amp;)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 &amp;)">
@@ -3933,6 +4057,22 @@
<modify-function signature="valueChanged(const QString &amp;)">
<rename to="valueStringChanged"/>
</modify-function>
+ <modify-function signature="fixup(QString &amp;)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 &amp;, int &amp;)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 &amp;,const QString &amp;,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, &amp;a, &amp;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__':