Implemented Signal constructor base on QMethod list.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
parent
ff03bd56ff
commit
363ecb3461
2 changed files with 28 additions and 0 deletions
|
|
@ -608,6 +608,33 @@ bool signalConnect(PyObject* source, const char* signal, PyObject* callback)
|
||||||
return PyObject_CallObject(pyMethod, pyArgs);
|
return PyObject_CallObject(pyMethod, pyArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject* signalNewFromMethod(PyObject* source, const QList<QMetaMethod>& methodList)
|
||||||
|
{
|
||||||
|
PySideSignalInstanceData *root = 0;
|
||||||
|
PySideSignalInstanceData *previous = 0;
|
||||||
|
foreach(QMetaMethod m, methodList) {
|
||||||
|
PySideSignalInstanceData *item = PyObject_New(PySideSignalInstanceData, &PySideSignalInstanceType);
|
||||||
|
if (!root)
|
||||||
|
root = item;
|
||||||
|
|
||||||
|
if (previous)
|
||||||
|
previous->d->next = reinterpret_cast<PyObject*>(item);
|
||||||
|
|
||||||
|
item->d = new PySideSignalInstanceDataPrivate;
|
||||||
|
PySideSignalInstanceDataPrivate* selfPvt = item->d;
|
||||||
|
selfPvt->source = source;
|
||||||
|
const char* cppSignature = m.signature();
|
||||||
|
// separe SignalName
|
||||||
|
selfPvt->signalName = strdup(cppSignature);
|
||||||
|
char* endName = strchr(selfPvt->signalName, '(');
|
||||||
|
endName = '\0';
|
||||||
|
selfPvt->signature = strdup(cppSignature);
|
||||||
|
selfPvt->homonymousMethod = 0;
|
||||||
|
selfPvt->next = 0;
|
||||||
|
}
|
||||||
|
return reinterpret_cast<PyObject*>(root);
|
||||||
|
}
|
||||||
|
|
||||||
PyObject* signalNew(const char* name, ...)
|
PyObject* signalNew(const char* name, ...)
|
||||||
{
|
{
|
||||||
va_list listSignatures;
|
va_list listSignatures;
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ namespace PySide
|
||||||
{
|
{
|
||||||
|
|
||||||
PYSIDE_API PyObject* signalNew(const char* name, ...);
|
PYSIDE_API PyObject* signalNew(const char* name, ...);
|
||||||
|
PYSIDE_API PyObject* signalNewFromMethod(PyObject* source, const QList<QMetaMethod>& method);
|
||||||
PYSIDE_API void signalUpdateSource(PyObject* source);
|
PYSIDE_API void signalUpdateSource(PyObject* source);
|
||||||
PYSIDE_API void addSignalToWrapper(Shiboken::SbkBaseWrapperType* wrapperType, const char* signalName, PyObject* signal);
|
PYSIDE_API void addSignalToWrapper(Shiboken::SbkBaseWrapperType* wrapperType, const char* signalName, PyObject* signal);
|
||||||
PYSIDE_API PyObject* getSignalSource(PySideSignalInstanceData* signal);
|
PYSIDE_API PyObject* getSignalSource(PySideSignalInstanceData* signal);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue