From 2a87b74bfea936691db2eb97a8ab2788277869b6 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Tue, 1 Nov 2011 18:42:47 -0300 Subject: Replaced TypeResolver by SbkConverter and SpecificConverter. Also updated QtGui's WId conversion to Python 3. --- libpyside/pysidemetafunction.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'libpyside/pysidemetafunction.cpp') diff --git a/libpyside/pysidemetafunction.cpp b/libpyside/pysidemetafunction.cpp index 271ab4375..17fe83996 100644 --- a/libpyside/pysidemetafunction.cpp +++ b/libpyside/pysidemetafunction.cpp @@ -169,10 +169,10 @@ bool call(QObject* self, int methodIndex, PyObject* args, PyObject** retVal) continue; } - Shiboken::TypeResolver* typeResolver = Shiboken::TypeResolver::get(typeName); - if (typeResolver) { - if (Shiboken::TypeResolver::getType(typeName) == Shiboken::TypeResolver::ValueType) { - int typeId = QMetaType::type(typeName); + Shiboken::Conversions::SpecificConverter converter(typeName); + if (converter) { + int typeId = QMetaType::type(typeName); + if (!Shiboken::Conversions::pythonTypeIsObjectType(converter)) { if (!typeId) { PyErr_Format(PyExc_TypeError, "Value types used on meta functions (including signals) need to be " "registered on meta type: %s", typeName.data()); @@ -181,8 +181,15 @@ bool call(QObject* self, int methodIndex, PyObject* args, PyObject** retVal) methValues[i] = QVariant(typeId, (void*) 0); } methArgs[i] = methValues[i].data(); - if (i != 0) // Don't do this for return type - typeResolver->toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i - 1), &methArgs[i]); + if (i == 0) // Don't do this for return type + continue; + if (typeId == QVariant::String) { + QString tmp; + converter.toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i - 1), &tmp); + methValues[i] = tmp; + } else { + converter.toCpp(PySequence_Fast_GET_ITEM(sequence.object(), i - 1), methArgs[i]); + } } else { PyErr_Format(PyExc_TypeError, "Unknown type used to call meta function (that may be a signal): %s", argTypes[i].constData()); break; @@ -195,10 +202,10 @@ bool call(QObject* self, int methodIndex, PyObject* args, PyObject** retVal) if (retVal) { if (methArgs[0]) { - static Shiboken::TypeResolver* qVariantTypeResolver = Shiboken::TypeResolver::get("QVariant"); - Q_ASSERT(qVariantTypeResolver); - - *retVal = qVariantTypeResolver->toPython(&methValues[0]); + static SbkConverter* qVariantTypeConverter = Shiboken::Conversions::getConverter("QVariant"); + Q_ASSERT(qVariantTypeConverter); + *retVal = Shiboken::Conversions::copyToPython(qVariantTypeConverter, &methValues[0]); + SbkDbg() << (*retVal); } else { *retVal = Py_None; Py_INCREF(*retVal); -- cgit v1.2.3