pysidesignal: trivial fixes
Fix typos and coding style Signed-off-by: Paulo Alcantara <pcacjr@gmail.com> Reviewed-by: Luciano Wolf <luciano.wolf@openbossa.org> Reviewed-by: Hugo Parente Lima <hugo.pl@gmail.com>
This commit is contained in:
parent
508e59c091
commit
66f4ccbe5d
1 changed files with 61 additions and 59 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sbkpython.h>
|
#include <sbkpython.h>
|
||||||
#include "pysidesignal.h"
|
#include "pysidesignal.h"
|
||||||
#include "pysidesignal_p.h"
|
#include "pysidesignal_p.h"
|
||||||
|
|
@ -31,12 +32,12 @@
|
||||||
#define SIGNAL_INSTANCE_NAME "SignalInstance"
|
#define SIGNAL_INSTANCE_NAME "SignalInstance"
|
||||||
#define QT_SIGNAL_SENTINEL '2'
|
#define QT_SIGNAL_SENTINEL '2'
|
||||||
|
|
||||||
|
namespace PySide {
|
||||||
namespace PySide { namespace Signal {
|
namespace Signal {
|
||||||
//aux
|
//aux
|
||||||
static char* buildSignature(const char*, const char*);
|
static char* buildSignature(const char*, const char*);
|
||||||
static void appendSignature(PySideSignal*, char*);
|
static void appendSignature(PySideSignal*, char*);
|
||||||
static void instanceInitialize(PySideSignalInstance*, PyObject*, PySideSignal*, PyObject *, int);
|
static void instanceInitialize(PySideSignalInstance*, PyObject*, PySideSignal*, PyObject*, int);
|
||||||
static char* parseSignature(PyObject*);
|
static char* parseSignature(PyObject*);
|
||||||
static PyObject* buildQtCompatible(const char*);
|
static PyObject* buildQtCompatible(const char*);
|
||||||
}
|
}
|
||||||
|
|
@ -45,14 +46,14 @@ namespace PySide { namespace Signal {
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
|
||||||
//Signal methods
|
// Signal methods
|
||||||
static int signalTpInit(PyObject*, PyObject*, PyObject*);
|
static int signalTpInit(PyObject*, PyObject*, PyObject*);
|
||||||
static void signalFree(void*);
|
static void signalFree(void*);
|
||||||
static void signalInstanceFree(void*);
|
static void signalInstanceFree(void*);
|
||||||
static PyObject* signalGetItem(PyObject* self, PyObject* key);
|
static PyObject* signalGetItem(PyObject* self, PyObject* key);
|
||||||
static PyObject* signalToString(PyObject* self);
|
static PyObject* signalToString(PyObject* self);
|
||||||
|
|
||||||
//Signal Instance methods
|
// Signal Instance methods
|
||||||
static PyObject* signalInstanceConnect(PyObject*, PyObject*, PyObject*);
|
static PyObject* signalInstanceConnect(PyObject*, PyObject*, PyObject*);
|
||||||
static PyObject* signalInstanceDisconnect(PyObject*, PyObject*);
|
static PyObject* signalInstanceDisconnect(PyObject*, PyObject*);
|
||||||
static PyObject* signalInstanceEmit(PyObject*, PyObject*);
|
static PyObject* signalInstanceEmit(PyObject*, PyObject*);
|
||||||
|
|
@ -221,8 +222,8 @@ PyTypeObject PySideSignalInstanceType = {
|
||||||
|
|
||||||
int signalTpInit(PyObject* self, PyObject* args, PyObject* kwds)
|
int signalTpInit(PyObject* self, PyObject* args, PyObject* kwds)
|
||||||
{
|
{
|
||||||
static PyObject *emptyTuple = 0;
|
static PyObject* emptyTuple = 0;
|
||||||
static const char *kwlist[] = {"name", 0};
|
static const char* kwlist[] = {"name", 0};
|
||||||
char* argName = 0;
|
char* argName = 0;
|
||||||
|
|
||||||
if (emptyTuple == 0)
|
if (emptyTuple == 0)
|
||||||
|
|
@ -233,13 +234,13 @@ int signalTpInit(PyObject* self, PyObject* args, PyObject* kwds)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
bool tupledArgs = false;
|
bool tupledArgs = false;
|
||||||
PySideSignal *data = reinterpret_cast<PySideSignal*>(self);
|
PySideSignal* data = reinterpret_cast<PySideSignal*>(self);
|
||||||
if (argName) {
|
if (argName) {
|
||||||
data->signalName = strdup(argName);
|
data->signalName = strdup(argName);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(Py_ssize_t i = 0, i_max = PyTuple_Size(args); i < i_max; i++) {
|
for (Py_ssize_t i = 0, i_max = PyTuple_Size(args); i < i_max; i++) {
|
||||||
PyObject *arg = PyTuple_GET_ITEM(args, i);
|
PyObject* arg = PyTuple_GET_ITEM(args, i);
|
||||||
if (PySequence_Check(arg) && !Shiboken::String::check(arg)) {
|
if (PySequence_Check(arg) && !Shiboken::String::check(arg)) {
|
||||||
tupledArgs = true;
|
tupledArgs = true;
|
||||||
PySide::Signal::appendSignature(data, PySide::Signal::parseSignature(arg));
|
PySide::Signal::appendSignature(data, PySide::Signal::parseSignature(arg));
|
||||||
|
|
@ -252,12 +253,12 @@ int signalTpInit(PyObject* self, PyObject* args, PyObject* kwds)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void signalFree(void *self)
|
void signalFree(void* self)
|
||||||
{
|
{
|
||||||
PyObject *pySelf = reinterpret_cast<PyObject*>(self);
|
PyObject* pySelf = reinterpret_cast<PyObject*>(self);
|
||||||
PySideSignal *data = reinterpret_cast<PySideSignal*>(self);
|
PySideSignal* data = reinterpret_cast<PySideSignal*>(self);
|
||||||
|
|
||||||
for(int i = 0, i_max = data->signaturesSize; i < i_max; i++) {
|
for (int i = 0, i_max = data->signaturesSize; i < i_max; i++) {
|
||||||
if (data->signatures[i])
|
if (data->signatures[i])
|
||||||
free(data->signatures[i]);
|
free(data->signatures[i]);
|
||||||
}
|
}
|
||||||
|
|
@ -319,26 +320,26 @@ void signalInstanceFree(void* self)
|
||||||
|
|
||||||
PyObject* signalInstanceConnect(PyObject* self, PyObject* args, PyObject* kwds)
|
PyObject* signalInstanceConnect(PyObject* self, PyObject* args, PyObject* kwds)
|
||||||
{
|
{
|
||||||
PyObject *slot = 0;
|
PyObject* slot = 0;
|
||||||
PyObject *type = 0;
|
PyObject* type = 0;
|
||||||
static const char *kwlist[] = {"slot", "type", 0};
|
static const char* kwlist[] = {"slot", "type", 0};
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwds,
|
if (!PyArg_ParseTupleAndKeywords(args, kwds,
|
||||||
"O|O:"SIGNAL_INSTANCE_NAME, (char**) kwlist, &slot, &type))
|
"O|O:"SIGNAL_INSTANCE_NAME, (char**) kwlist, &slot, &type))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
PySideSignalInstance *source = reinterpret_cast<PySideSignalInstance*>(self);
|
PySideSignalInstance* source = reinterpret_cast<PySideSignalInstance*>(self);
|
||||||
Shiboken::AutoDecRef pyArgs(PyList_New(0));
|
Shiboken::AutoDecRef pyArgs(PyList_New(0));
|
||||||
|
|
||||||
bool match = false;
|
bool match = false;
|
||||||
if (slot->ob_type == &PySideSignalInstanceType) {
|
if (slot->ob_type == &PySideSignalInstanceType) {
|
||||||
PySideSignalInstance *sourceWalk = source;
|
PySideSignalInstance* sourceWalk = source;
|
||||||
PySideSignalInstance *targetWalk;
|
PySideSignalInstance* targetWalk;
|
||||||
|
|
||||||
//find best match
|
//find best match
|
||||||
while(sourceWalk && !match) {
|
while (sourceWalk && !match) {
|
||||||
targetWalk = reinterpret_cast<PySideSignalInstance*>(slot);
|
targetWalk = reinterpret_cast<PySideSignalInstance*>(slot);
|
||||||
while(targetWalk && !match) {
|
while (targetWalk && !match) {
|
||||||
if (QMetaObject::checkConnectArgs(sourceWalk->d->signature, targetWalk->d->signature)) {
|
if (QMetaObject::checkConnectArgs(sourceWalk->d->signature, targetWalk->d->signature)) {
|
||||||
PyList_Append(pyArgs, sourceWalk->d->source);
|
PyList_Append(pyArgs, sourceWalk->d->source);
|
||||||
Shiboken::AutoDecRef sourceSignature(PySide::Signal::buildQtCompatible(sourceWalk->d->signature));
|
Shiboken::AutoDecRef sourceSignature(PySide::Signal::buildQtCompatible(sourceWalk->d->signature));
|
||||||
|
|
@ -377,19 +378,19 @@ PyObject* signalInstanceConnect(PyObject* self, PyObject* args, PyObject* kwds)
|
||||||
Py_XDECREF(result);
|
Py_XDECREF(result);
|
||||||
}
|
}
|
||||||
if (!PyErr_Occurred())
|
if (!PyErr_Occurred())
|
||||||
PyErr_Format(PyExc_RuntimeError, "Fail to connect signal %s.", source->d->signature);
|
PyErr_Format(PyExc_RuntimeError, "Failed to connect signal %s.", source->d->signature);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject* signalInstanceEmit(PyObject* self, PyObject* args)
|
PyObject* signalInstanceEmit(PyObject* self, PyObject* args)
|
||||||
{
|
{
|
||||||
PySideSignalInstance *source = reinterpret_cast<PySideSignalInstance*>(self);
|
PySideSignalInstance* source = reinterpret_cast<PySideSignalInstance*>(self);
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyArgs(PyList_New(0));
|
Shiboken::AutoDecRef pyArgs(PyList_New(0));
|
||||||
Shiboken::AutoDecRef sourceSignature(PySide::Signal::buildQtCompatible(source->d->signature));
|
Shiboken::AutoDecRef sourceSignature(PySide::Signal::buildQtCompatible(source->d->signature));
|
||||||
|
|
||||||
PyList_Append(pyArgs, sourceSignature);
|
PyList_Append(pyArgs, sourceSignature);
|
||||||
for(Py_ssize_t i = 0, max = PyTuple_Size(args); i < max; i++)
|
for (Py_ssize_t i = 0, max = PyTuple_Size(args); i < max; i++)
|
||||||
PyList_Append(pyArgs, PyTuple_GetItem(args, i));
|
PyList_Append(pyArgs, PyTuple_GetItem(args, i));
|
||||||
|
|
||||||
Shiboken::AutoDecRef pyMethod(PyObject_GetAttrString(source->d->source, "emit"));
|
Shiboken::AutoDecRef pyMethod(PyObject_GetAttrString(source->d->source, "emit"));
|
||||||
|
|
@ -406,15 +407,16 @@ PyObject* signalInstanceGetItem(PyObject* self, PyObject* key)
|
||||||
free(sigKey);
|
free(sigKey);
|
||||||
const char* sigName = data->d->signalName;
|
const char* sigName = data->d->signalName;
|
||||||
|
|
||||||
while(data) {
|
while (data) {
|
||||||
if (strcmp(data->d->signature, sig) == 0) {
|
if (strcmp(data->d->signature, sig) == 0) {
|
||||||
free(sig);
|
free(sig);
|
||||||
PyObject *result = reinterpret_cast<PyObject*>(data);
|
PyObject* result = reinterpret_cast<PyObject*>(data);
|
||||||
Py_INCREF(result);
|
Py_INCREF(result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
data = reinterpret_cast<PySideSignalInstance*>(data->d->next);
|
data = reinterpret_cast<PySideSignalInstance*>(data->d->next);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyErr_Format(PyExc_IndexError, "Signature %s not found for signal: %s", sig, sigName);
|
PyErr_Format(PyExc_IndexError, "Signature %s not found for signal: %s", sig, sigName);
|
||||||
free(sig);
|
free(sig);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -433,7 +435,7 @@ PyObject* signalInstanceDisconnect(PyObject* self, PyObject* args)
|
||||||
|
|
||||||
bool match = false;
|
bool match = false;
|
||||||
if (slot->ob_type == &PySideSignalInstanceType) {
|
if (slot->ob_type == &PySideSignalInstanceType) {
|
||||||
PySideSignalInstance *target = reinterpret_cast<PySideSignalInstance*>(slot);
|
PySideSignalInstance* target = reinterpret_cast<PySideSignalInstance*>(slot);
|
||||||
if (QMetaObject::checkConnectArgs(source->d->signature, target->d->signature)) {
|
if (QMetaObject::checkConnectArgs(source->d->signature, target->d->signature)) {
|
||||||
PyList_Append(pyArgs, source->d->source);
|
PyList_Append(pyArgs, source->d->source);
|
||||||
Shiboken::AutoDecRef source_signature(PySide::Signal::buildQtCompatible(source->d->signature));
|
Shiboken::AutoDecRef source_signature(PySide::Signal::buildQtCompatible(source->d->signature));
|
||||||
|
|
@ -467,7 +469,7 @@ PyObject* signalInstanceDisconnect(PyObject* self, PyObject* args)
|
||||||
Py_DECREF(result);
|
Py_DECREF(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyErr_Format(PyExc_RuntimeError, "Fail to disconnect signal %s.", source->d->signature);
|
PyErr_Format(PyExc_RuntimeError, "Failed to disconnect signal %s.", source->d->signature);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -503,7 +505,6 @@ PyObject* signalInstanceCall(PyObject* self, PyObject* args, PyObject* kw)
|
||||||
return PyCFunction_Call(homonymousMethod, args, kw);
|
return PyCFunction_Call(homonymousMethod, args, kw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static PyObject* metaSignalCheck(PyObject* klass, PyObject* args)
|
static PyObject* metaSignalCheck(PyObject* klass, PyObject* args)
|
||||||
{
|
{
|
||||||
if (PyType_IsSubtype(args->ob_type, &PySideSignalInstanceType))
|
if (PyType_IsSubtype(args->ob_type, &PySideSignalInstanceType))
|
||||||
|
|
@ -514,7 +515,8 @@ static PyObject* metaSignalCheck(PyObject* klass, PyObject* args)
|
||||||
|
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
|
|
||||||
namespace PySide { namespace Signal {
|
namespace PySide {
|
||||||
|
namespace Signal {
|
||||||
|
|
||||||
void init(PyObject* module)
|
void init(PyObject* module)
|
||||||
{
|
{
|
||||||
|
|
@ -542,7 +544,7 @@ bool checkType(PyObject* pyObj)
|
||||||
|
|
||||||
void updateSourceObject(PyObject* source)
|
void updateSourceObject(PyObject* source)
|
||||||
{
|
{
|
||||||
PyTypeObject * objType = reinterpret_cast<PyTypeObject *>(PyObject_Type(source));
|
PyTypeObject* objType = reinterpret_cast<PyTypeObject*>(PyObject_Type(source));
|
||||||
|
|
||||||
Py_ssize_t pos = 0;
|
Py_ssize_t pos = 0;
|
||||||
PyObject* value;
|
PyObject* value;
|
||||||
|
|
@ -562,13 +564,13 @@ void updateSourceObject(PyObject* source)
|
||||||
char* getTypeName(PyObject* type)
|
char* getTypeName(PyObject* type)
|
||||||
{
|
{
|
||||||
if (PyType_Check(type)) {
|
if (PyType_Check(type)) {
|
||||||
char *typeName = NULL;
|
char* typeName = NULL;
|
||||||
if (PyType_IsSubtype(reinterpret_cast<PyTypeObject*>(type), reinterpret_cast<PyTypeObject*>(&SbkObject_Type))) {
|
if (PyType_IsSubtype(reinterpret_cast<PyTypeObject*>(type), reinterpret_cast<PyTypeObject*>(&SbkObject_Type))) {
|
||||||
SbkObjectType* objType = reinterpret_cast<SbkObjectType*>(type);
|
SbkObjectType* objType = reinterpret_cast<SbkObjectType*>(type);
|
||||||
typeName = strdup(Shiboken::ObjectType::getOriginalName(objType));
|
typeName = strdup(Shiboken::ObjectType::getOriginalName(objType));
|
||||||
} else {
|
} else {
|
||||||
// Translate python types to Qt names
|
// Translate python types to Qt names
|
||||||
PyTypeObject *objType = reinterpret_cast<PyTypeObject*>(type);
|
PyTypeObject* objType = reinterpret_cast<PyTypeObject*>(type);
|
||||||
if (Shiboken::String::checkType(objType))
|
if (Shiboken::String::checkType(objType))
|
||||||
typeName = strdup("QString");
|
typeName = strdup("QString");
|
||||||
else if (objType == &PyInt_Type)
|
else if (objType == &PyInt_Type)
|
||||||
|
|
@ -593,7 +595,7 @@ char* getTypeName(PyObject* type)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* buildSignature(const char *name, const char *signature)
|
char* buildSignature(const char* name, const char* signature)
|
||||||
{
|
{
|
||||||
QByteArray signal(name);
|
QByteArray signal(name);
|
||||||
signal += '(';
|
signal += '(';
|
||||||
|
|
@ -602,13 +604,13 @@ char* buildSignature(const char *name, const char *signature)
|
||||||
return strdup(QMetaObject::normalizedSignature(signal));
|
return strdup(QMetaObject::normalizedSignature(signal));
|
||||||
}
|
}
|
||||||
|
|
||||||
char* parseSignature(PyObject *args)
|
char* parseSignature(PyObject* args)
|
||||||
{
|
{
|
||||||
char *signature = 0;
|
char* signature = 0;
|
||||||
if (args && (Shiboken::String::check(args) || !PySequence_Check(args)))
|
if (args && (Shiboken::String::check(args) || !PySequence_Check(args)))
|
||||||
return getTypeName(args);
|
return getTypeName(args);
|
||||||
|
|
||||||
for(Py_ssize_t i = 0, i_max = PySequence_Size(args); i < i_max; i++) {
|
for (Py_ssize_t i = 0, i_max = PySequence_Size(args); i < i_max; i++) {
|
||||||
Shiboken::AutoDecRef arg(PySequence_ITEM(args, i));
|
Shiboken::AutoDecRef arg(PySequence_ITEM(args, i));
|
||||||
char* typeName = getTypeName(arg);
|
char* typeName = getTypeName(arg);
|
||||||
if (typeName) {
|
if (typeName) {
|
||||||
|
|
@ -630,14 +632,14 @@ void appendSignature(PySideSignal* self, char* signature)
|
||||||
self->signaturesSize++;
|
self->signaturesSize++;
|
||||||
|
|
||||||
if (self->signaturesSize > 1) {
|
if (self->signaturesSize > 1) {
|
||||||
self->signatures = (char**) realloc(self->signatures, sizeof(char**) * self->signaturesSize);
|
self->signatures = (char**)realloc(self->signatures, sizeof(char**) * self->signaturesSize);
|
||||||
} else {
|
} else {
|
||||||
self->signatures = (char**) malloc(sizeof(char**));
|
self->signatures = (char**)malloc(sizeof(char**));
|
||||||
}
|
}
|
||||||
self->signatures[self->signaturesSize-1] = signature;
|
self->signatures[self->signaturesSize - 1] = signature;
|
||||||
}
|
}
|
||||||
|
|
||||||
PySideSignalInstance* initialize(PySideSignal* self, PyObject* name, PyObject *object)
|
PySideSignalInstance* initialize(PySideSignal* self, PyObject* name, PyObject* object)
|
||||||
{
|
{
|
||||||
PySideSignalInstance* instance = PyObject_New(PySideSignalInstance, &PySideSignalInstanceType);
|
PySideSignalInstance* instance = PyObject_New(PySideSignalInstance, &PySideSignalInstanceType);
|
||||||
instanceInitialize(instance, name, self, object, 0);
|
instanceInitialize(instance, name, self, object, 0);
|
||||||
|
|
@ -681,7 +683,7 @@ bool connect(PyObject* source, const char* signal, PyObject* callback)
|
||||||
Shiboken::AutoDecRef pyArgs(PyTuple_Pack(3, source, pySignature.object(), callback));
|
Shiboken::AutoDecRef pyArgs(PyTuple_Pack(3, source, pySignature.object(), callback));
|
||||||
PyObject* result = PyObject_CallObject(pyMethod, pyArgs);
|
PyObject* result = PyObject_CallObject(pyMethod, pyArgs);
|
||||||
if (result == Py_False) {
|
if (result == Py_False) {
|
||||||
PyErr_Format(PyExc_RuntimeError, "Fail to connect signal %s, to python callable object.", signal);
|
PyErr_Format(PyExc_RuntimeError, "Failed to connect signal %s, to python callable object.", signal);
|
||||||
Py_DECREF(result);
|
Py_DECREF(result);
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -690,10 +692,10 @@ bool connect(PyObject* source, const char* signal, PyObject* callback)
|
||||||
|
|
||||||
PySideSignalInstance* newObjectFromMethod(PyObject* source, const QList<QMetaMethod>& methodList)
|
PySideSignalInstance* newObjectFromMethod(PyObject* source, const QList<QMetaMethod>& methodList)
|
||||||
{
|
{
|
||||||
PySideSignalInstance *root = 0;
|
PySideSignalInstance* root = 0;
|
||||||
PySideSignalInstance *previous = 0;
|
PySideSignalInstance* previous = 0;
|
||||||
foreach(QMetaMethod m, methodList) {
|
foreach(QMetaMethod m, methodList) {
|
||||||
PySideSignalInstance *item = PyObject_New(PySideSignalInstance, &PySideSignalInstanceType);
|
PySideSignalInstance* item = PyObject_New(PySideSignalInstance, &PySideSignalInstanceType);
|
||||||
if (!root)
|
if (!root)
|
||||||
root = item;
|
root = item;
|
||||||
|
|
||||||
|
|
@ -728,7 +730,7 @@ PySideSignal* newObject(const char* name, ...)
|
||||||
va_start(listSignatures, name);
|
va_start(listSignatures, name);
|
||||||
sig = va_arg(listSignatures, char*);
|
sig = va_arg(listSignatures, char*);
|
||||||
|
|
||||||
while(sig != NULL) {
|
while (sig != NULL) {
|
||||||
if (strcmp(sig, "void") == 0)
|
if (strcmp(sig, "void") == 0)
|
||||||
appendSignature(self, strdup(""));
|
appendSignature(self, strdup(""));
|
||||||
else
|
else
|
||||||
|
|
@ -783,7 +785,7 @@ void registerSignals(SbkObjectType* pyObj, const QMetaObject* metaObject)
|
||||||
{
|
{
|
||||||
typedef QHash<QByteArray, QList<QByteArray> > SignalSigMap;
|
typedef QHash<QByteArray, QList<QByteArray> > SignalSigMap;
|
||||||
SignalSigMap signalsFound;
|
SignalSigMap signalsFound;
|
||||||
for(int i = metaObject->methodOffset(), max = metaObject->methodCount(); i < max; ++i) {
|
for (int i = metaObject->methodOffset(), max = metaObject->methodCount(); i < max; ++i) {
|
||||||
QMetaMethod method = metaObject->method(i);
|
QMetaMethod method = metaObject->method(i);
|
||||||
|
|
||||||
if (method.methodType() == QMetaMethod::Signal) {
|
if (method.methodType() == QMetaMethod::Signal) {
|
||||||
|
|
@ -809,12 +811,12 @@ void registerSignals(SbkObjectType* pyObj, const QMetaObject* metaObject)
|
||||||
SignalSigMap::mapped_type::const_iterator endJ = it.value().end();
|
SignalSigMap::mapped_type::const_iterator endJ = it.value().end();
|
||||||
for (; j != endJ; ++j)
|
for (; j != endJ; ++j)
|
||||||
appendSignature(self, strdup(j->constData()));
|
appendSignature(self, strdup(j->constData()));
|
||||||
|
|
||||||
_addSignalToWrapper(pyObj, it.key(), self);
|
_addSignalToWrapper(pyObj, it.key(), self);
|
||||||
Py_DECREF((PyObject*) self);
|
Py_DECREF((PyObject*) self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PyObject* buildQtCompatible(const char* signature)
|
PyObject* buildQtCompatible(const char* signature)
|
||||||
{
|
{
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
|
|
@ -838,10 +840,9 @@ const char* getSignature(PySideSignalInstance* signal)
|
||||||
return signal->d->signature;
|
return signal->d->signature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char** getSignatures(PyObject* signal, int* size)
|
||||||
const char** getSignatures(PyObject* signal, int *size)
|
|
||||||
{
|
{
|
||||||
PySideSignal *self = reinterpret_cast<PySideSignal*>(signal);
|
PySideSignal* self = reinterpret_cast<PySideSignal*>(signal);
|
||||||
*size = self->signaturesSize;
|
*size = self->signaturesSize;
|
||||||
return (const char**) self->signatures;
|
return (const char**) self->signatures;
|
||||||
}
|
}
|
||||||
|
|
@ -888,10 +889,10 @@ QString getCallbackSignature(const char* signal, QObject* receiver, PyObject* ca
|
||||||
|
|
||||||
if (receiver) {
|
if (receiver) {
|
||||||
//Search for signature on metaobject
|
//Search for signature on metaobject
|
||||||
const QMetaObject *mo = receiver->metaObject();
|
const QMetaObject* mo = receiver->metaObject();
|
||||||
QByteArray prefix(functionName);
|
QByteArray prefix(functionName);
|
||||||
prefix += '(';
|
prefix += '(';
|
||||||
for(int i=0; i < mo->methodCount(); i++) {
|
for (int i = 0; i < mo->methodCount(); i++) {
|
||||||
QMetaMethod me = mo->method(i);
|
QMetaMethod me = mo->method(i);
|
||||||
if ((strncmp(me.signature(), prefix, prefix.size()) == 0) &&
|
if ((strncmp(me.signature(), prefix, prefix.size()) == 0) &&
|
||||||
QMetaObject::checkConnectArgs(signal, me.signature())) {
|
QMetaObject::checkConnectArgs(signal, me.signature())) {
|
||||||
|
|
@ -908,7 +909,7 @@ QString getCallbackSignature(const char* signal, QObject* receiver, PyObject* ca
|
||||||
numArgs = 0;
|
numArgs = 0;
|
||||||
}
|
}
|
||||||
} else if (PyCallable_Check(callback)) {
|
} else if (PyCallable_Check(callback)) {
|
||||||
functionName = "__callback"+QByteArray::number((qlonglong)callback);
|
functionName = "__callback" + QByteArray::number((qlonglong)callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
Q_ASSERT(!functionName.isEmpty());
|
Q_ASSERT(!functionName.isEmpty());
|
||||||
|
|
@ -949,14 +950,15 @@ bool checkQtSignal(const char* signal)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString codeCallbackName(PyObject* callback, const QString& funcName)
|
QString codeCallbackName(PyObject* callback, const QString& funcName)
|
||||||
{
|
{
|
||||||
if (PyMethod_Check(callback)) {
|
if (PyMethod_Check(callback)) {
|
||||||
PyObject *self = PyMethod_GET_SELF(callback);
|
PyObject* self = PyMethod_GET_SELF(callback);
|
||||||
PyObject *func = PyMethod_GET_FUNCTION(callback);
|
PyObject* func = PyMethod_GET_FUNCTION(callback);
|
||||||
return funcName + QString::number(quint64(self), 16) + QString::number(quint64(func), 16);
|
return funcName + QString::number(quint64(self), 16) + QString::number(quint64(func), 16);
|
||||||
} else
|
} else {
|
||||||
return funcName + QString::number(quint64(callback), 16);
|
return funcName + QString::number(quint64(callback), 16);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} //namespace Signal
|
} //namespace Signal
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue