diff options
author | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-06-18 19:37:21 -0300 |
---|---|---|
committer | Luciano Wolf <luciano.wolf@openbossa.org> | 2010-06-21 17:38:41 -0300 |
commit | 54b69c3595cadfbfa5f65849d4dd106718920976 (patch) | |
tree | acad023984f3be17d0e0db72206eedc446038604 /PySide | |
parent | 928e0b2795244d18a87764effe3d2a94504ac272 (diff) |
Adding qInstallMsgHandler() method support.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Hugo Parente Lima <hugo.lima@openbossa.org>
Diffstat (limited to 'PySide')
-rw-r--r-- | PySide/QtCore/typesystem_core.xml | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 8b1bab61d..337697304 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -718,6 +718,38 @@ #include <pyside.h> </inject-code> + <inject-code class="native" position="beginning"> + // Define a global variable to handle qInstallMsgHandler callback + static PyObject* qtmsghandler = 0; + + void + msghandlercallback(QtMsgType type, const char* msg) + { + Shiboken::AutoDecRef arglist(Shiboken::makeTuple(type, msg)); + Shiboken::AutoDecRef ret(PyObject_CallObject(qtmsghandler, arglist)); + } + </inject-code> + <add-function signature="qInstallMsgHandler(PyObject)" return-type="PyObject"> + <inject-code class="target" position="beginning"> + if (%PYARG_1 == Py_None) { + qInstallMsgHandler(0); + %PYARG_0 = qtmsghandler ? qtmsghandler : Py_None; + qtmsghandler = 0; + } else if (!PyCallable_Check(%PYARG_1)) { + PyErr_SetString(PyExc_TypeError, "parameter must be callable"); + } else { + %PYARG_0 = qtmsghandler ? qtmsghandler : Py_None; + Py_INCREF(%PYARG_1); + qtmsghandler = %PYARG_1; + qInstallMsgHandler(msghandlercallback); + } + + if (%PYARG_0 == Py_None) + Py_INCREF(%PYARG_0); + + </inject-code> + </add-function> + <value-type name="QElapsedTimer" since="4.7"/> <object-type name="QAbstractTableModel" polymorphic-id-expression="qobject_cast<QAbstractTableModel*>(%1)"> |