diff options
-rw-r--r-- | libpyside/qsignal.cpp | 18 | ||||
-rw-r--r-- | libpyside/qsignal.h | 1 | ||||
-rw-r--r-- | tests/QtGui/qaction_test.py | 2 |
3 files changed, 19 insertions, 2 deletions
diff --git a/libpyside/qsignal.cpp b/libpyside/qsignal.cpp index ec0610bb6..c6a824074 100644 --- a/libpyside/qsignal.cpp +++ b/libpyside/qsignal.cpp @@ -448,12 +448,28 @@ PyObject* signal_instance_connect(PyObject* self, PyObject* args, PyObject* kwds if (match) { Shiboken::AutoDecRef tupleArgs(PyList_AsTuple(pyArgs)); Shiboken::AutoDecRef pyMethod(PyObject_GetAttrString(source->source, "connect")); - return PyObject_CallObject(pyMethod, tupleArgs); + return PyObject_CallObject(pyMethod, tupleArgs); } return 0; } +bool signal_connect(PyObject* source, const char* signal, PyObject* callback) +{ + Shiboken::AutoDecRef pyMethod(PyObject_GetAttrString(source, "connect")); + if (pyMethod.isNull()) + return false; + + Shiboken::AutoDecRef pyArgs(PyList_New(0)); + Shiboken::AutoDecRef pySignature(PyString_FromString(signal)); + PyList_Append(pyArgs, source); + PyList_Append(pyArgs, pySignature); + PyList_Append(pyArgs, callback); + Shiboken::AutoDecRef tupleArgs(PyList_AsTuple(pyArgs)); + + return PyObject_CallObject(pyMethod, tupleArgs); +} + PyObject* signal_instance_disconnect(PyObject* self, PyObject* args) { SignalInstanceData *source = reinterpret_cast<SignalInstanceData*>(self); diff --git a/libpyside/qsignal.h b/libpyside/qsignal.h index 63eded132..b20834367 100644 --- a/libpyside/qsignal.h +++ b/libpyside/qsignal.h @@ -59,6 +59,7 @@ extern "C" PYSIDE_API PyAPI_FUNC(PyObject*) signalNew(const char* name, ...); PYSIDE_API void signalUpdateSource(PyObject* source); +PYSIDE_API bool signal_connect(PyObject* source, const char* signal, PyObject* callback); } //namespace PySide diff --git a/tests/QtGui/qaction_test.py b/tests/QtGui/qaction_test.py index ff7efbe50..b6a45d18b 100644 --- a/tests/QtGui/qaction_test.py +++ b/tests/QtGui/qaction_test.py @@ -5,7 +5,7 @@ from helper import UsesQApplication class QPainterDrawText(UsesQApplication): - def _cb(self, checked): + def _cb(self): self._called = True def testSignal(self): |