diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-08-16 18:21:25 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-08-16 19:04:49 -0300 |
commit | aedea32f131a553a9db0670cd89c43d171244951 (patch) | |
tree | 323bb2b08df8dc9ba7b60ec42b89b30ec722f3c7 /libpyside | |
parent | 2d24d300d8ef7e65489051f2f6d3d7d213d4a86a (diff) |
Implemented help function to connect signal with python callback.
Updated QAction unittest to work with signal connection on constructor.
Reviewer: Hugo Parente <hugo.lima@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libpyside')
-rw-r--r-- | libpyside/qsignal.cpp | 18 | ||||
-rw-r--r-- | libpyside/qsignal.h | 1 |
2 files changed, 18 insertions, 1 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 |