aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-08-16 18:21:25 -0300
committerRenato Filho <renato.filho@openbossa.org>2010-08-16 19:04:49 -0300
commitaedea32f131a553a9db0670cd89c43d171244951 (patch)
tree323bb2b08df8dc9ba7b60ec42b89b30ec722f3c7 /libpyside
parent2d24d300d8ef7e65489051f2f6d3d7d213d4a86a (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.cpp18
-rw-r--r--libpyside/qsignal.h1
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