aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PySide/QtCore/qstring_conversions.h10
-rw-r--r--PySide/QtGui/qpixmap_conversion.h8
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml2
-rw-r--r--tests/CMakeLists.txt2
4 files changed, 20 insertions, 2 deletions
diff --git a/PySide/QtCore/qstring_conversions.h b/PySide/QtCore/qstring_conversions.h
index 9a33d08d7..0456421da 100644
--- a/PySide/QtCore/qstring_conversions.h
+++ b/PySide/QtCore/qstring_conversions.h
@@ -1,6 +1,7 @@
namespace Shiboken {
inline bool Converter< QString >::isConvertible(PyObject* pyobj)
{
+ SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QString>());
return PyString_Check(pyobj)
|| PyUnicode_Check(pyobj)
|| SbkQByteArray_Check(pyobj)
@@ -10,11 +11,13 @@ inline bool Converter< QString >::isConvertible(PyObject* pyobj)
&& PyType_HasFeature(pyobj->ob_type, Py_TPFLAGS_HAVE_GETCHARBUFFER)
&& pyobj->ob_type->tp_as_buffer->bf_getcharbuffer)
#endif
- || SbkQChar_Check(pyobj);
+ || SbkQChar_Check(pyobj)
+ || (shiboType->ext_isconvertible && shiboType->ext_isconvertible(pyobj));
}
inline QString Converter< QString >::toCpp(PyObject* pyobj)
{
+ SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QString>());
if (SbkQChar_Check(pyobj)) {
return QString(Converter< QChar >::toCpp(pyobj));
} else if (SbkQByteArray_Check(pyobj)) {
@@ -50,6 +53,11 @@ inline QString Converter< QString >::toCpp(PyObject* pyobj)
return QString(data);
}
#endif
+ else if (shiboType->ext_isconvertible && shiboType->ext_tocpp && shiboType->ext_isconvertible(pyobj)) {
+ QString* cptr = reinterpret_cast<QString*>(shiboType->ext_tocpp(pyobj));
+ std::auto_ptr<QString> cptr_auto_ptr(cptr);
+ return *cptr;
+ }
return *Converter<QString*>::toCpp(pyobj);
}
}
diff --git a/PySide/QtGui/qpixmap_conversion.h b/PySide/QtGui/qpixmap_conversion.h
index cad242b95..e3973b98c 100644
--- a/PySide/QtGui/qpixmap_conversion.h
+++ b/PySide/QtGui/qpixmap_conversion.h
@@ -1,12 +1,15 @@
namespace Shiboken {
inline bool Converter< QPixmap >::isConvertible(PyObject* pyobj)
{
+ SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>());
bool isVariant = SbkQVariant_Check(pyobj);
if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj));
return var.type() == QVariant::Pixmap;
} else if (SbkQSize_Check(pyobj) || SbkQString_Check(pyobj)) {
return true;
+ } else if (shiboType->ext_isconvertible) {
+ return shiboType->ext_isconvertible(pyobj);
}
return false;
@@ -14,6 +17,7 @@ inline bool Converter< QPixmap >::isConvertible(PyObject* pyobj)
inline QPixmap Converter< QPixmap >::toCpp(PyObject* pyobj)
{
+ SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>());
bool isVariant = SbkQVariant_Check(pyobj);
if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj));
@@ -22,6 +26,10 @@ inline QPixmap Converter< QPixmap >::toCpp(PyObject* pyobj)
return QPixmap(Shiboken::Converter<QSize& >::toCpp(pyobj));
} else if (SbkQString_Check(pyobj)) {
return QPixmap(Shiboken::Converter<QString& >::toCpp(pyobj));
+ } else if (shiboType->ext_isconvertible && shiboType->ext_tocpp && shiboType->ext_isconvertible(pyobj)) {
+ QPixmap* cptr = reinterpret_cast<QPixmap*>(shiboType->ext_tocpp(pyobj));
+ std::auto_ptr<QPixmap> cptr_auto_ptr(cptr);
+ return *cptr;
}
return *Converter<QPixmap*>::toCpp(pyobj);
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml
index 948e16f66..41824d8a0 100644
--- a/PySide/QtGui/typesystem_gui_common.xml
+++ b/PySide/QtGui/typesystem_gui_common.xml
@@ -525,6 +525,8 @@
</value-type>
<value-type name="QKeySequence">
<modify-function signature="operator=(QKeySequence)" remove="all"/>
+ <!-- TODO: QVariant operator temporarily removed due to compilation problems. -->
+ <modify-function signature="operator QVariant()const" remove="all"/>
<modify-function signature="operator int()const" remove="all"/>
<modify-function signature="operator[](uint)const" remove="all"/>
</value-type>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 2a1d422ce..044823247 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,7 +1,7 @@
file(GLOB TEST_FILES */*_test.py)
-set(test_blacklist "qtgui_qstring_qkeysequence")
+set(test_blacklist "")
foreach(test_file ${TEST_FILES})
string(REGEX MATCH "/([^/]+)//?([^/]+)_test.py" test_name ${test_file} )