diff options
-rw-r--r-- | PySide/QtCore/qstring_conversions.h | 10 | ||||
-rw-r--r-- | PySide/QtGui/qpixmap_conversion.h | 8 | ||||
-rw-r--r-- | PySide/QtGui/typesystem_gui_common.xml | 2 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 2 |
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} ) |