diff options
Diffstat (limited to 'PySide/QtGui/qpixmap_conversion.h')
-rw-r--r-- | PySide/QtGui/qpixmap_conversion.h | 8 |
1 files changed, 8 insertions, 0 deletions
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); |