Changes needed to compile PySide with libshiboken v1.0

Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
          Lauro Moura <lauro.neto@openbossa.org>
This commit is contained in:
Hugo Parente Lima 2010-11-10 20:01:04 -02:00
commit 23c1b92073
9 changed files with 40 additions and 43 deletions

View file

@ -5,7 +5,7 @@ static int QApplicationArgCount;
static char** QApplicationArgValues; static char** QApplicationArgValues;
static const char QAPP_MACRO[] = "qApp"; static const char QAPP_MACRO[] = "qApp";
int SbkQApplication_Init(PyObject* self, PyObject* args, PyObject*) int Sbk_QApplication_Init(PyObject* self, PyObject* args, PyObject*)
{ {
if (Shiboken::isUserType(self) && !Shiboken::canCallConstructor(self->ob_type, Shiboken::SbkType<QApplication>())) if (Shiboken::isUserType(self) && !Shiboken::canCallConstructor(self->ob_type, Shiboken::SbkType<QApplication>()))
return -1; return -1;
@ -21,19 +21,19 @@ int SbkQApplication_Init(PyObject* self, PyObject* args, PyObject*)
return -1; return -1;
} }
if (!PySequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QApplicationArgCount, &QApplicationArgValues, "PySideApp")) { if (!Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QApplicationArgCount, &QApplicationArgValues, "PySideApp")) {
PyErr_BadArgument(); PyErr_BadArgument();
return -1; return -1;
} }
SbkObject* sbkSelf = reinterpret_cast<SbkObject*>(self);
QApplicationWrapper* cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues); QApplicationWrapper* cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues);
Shiboken::setCppPointer(reinterpret_cast<SbkBaseWrapper*>(self), Shiboken::Wrapper::setCppPointer(sbkSelf,
Shiboken::SbkType<QApplication>(), Shiboken::SbkType<QApplication>(),
cptr); cptr);
SbkBaseWrapper_setValidCppObject(self, 1); Shiboken::Wrapper::setValidCpp(sbkSelf, true);
SbkBaseWrapper *sbkSelf = reinterpret_cast<SbkBaseWrapper*>(self); Shiboken::Wrapper::setHasCppWrapper(sbkSelf, true);
sbkSelf->containsCppWrapper = 1; Shiboken::Wrapper::releaseOwnership(sbkSelf);
sbkSelf->hasOwnership = 0;
Shiboken::BindingManager::instance().registerWrapper(sbkSelf, cptr); Shiboken::BindingManager::instance().registerWrapper(sbkSelf, cptr);
PySide::Signal::updateSourceObject(self); PySide::Signal::updateSourceObject(self);
cptr->metaObject(); cptr->metaObject();

View file

@ -18,7 +18,7 @@ inline void addLayoutOwnership(QLayout *layout, QWidget *widget)
//keep the reference while the layout is orphan //keep the reference while the layout is orphan
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(layout)); Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(layout));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget)); Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true); Shiboken::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
} else { } else {
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent)); Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget)); Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(widget));
@ -34,7 +34,7 @@ inline void addLayoutOwnership(QLayout *layout, QLayout *other)
//keep the reference while the layout is orphan //keep the reference while the layout is orphan
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout)); Shiboken::AutoDecRef pyParent(Shiboken::Converter<QLayout*>::toPython(layout));
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other)); Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(other));
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true); Shiboken::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
return; return;
} }

View file

@ -1,6 +1,5 @@
inline PyObject* inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut)
addActionWithPyObject(QMenu *self, const QIcon& icon, const QString& text, PyObject *callback, const QKeySequence &shortcut)
{ {
QAction* act = new QAction(text, self); QAction* act = new QAction(text, self);

View file

@ -8,8 +8,7 @@ static QString retrieveObjectName(PyObject *obj)
/** /**
* Tranfer objects ownership from layout to widget * Tranfer objects ownership from layout to widget
**/ **/
static inline void static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
qwidgetReparentLayout(QWidget *parent, QLayout *layout)
{ {
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent)); Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
@ -36,11 +35,10 @@ qwidgetReparentLayout(QWidget *parent, QLayout *layout)
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(layout)); Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(layout));
Shiboken::setParent(pyParent, pyChild); Shiboken::setParent(pyParent, pyChild);
//remove previous references //remove previous references
Shiboken::keepReference(reinterpret_cast<Shiboken::SbkBaseWrapper*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None); Shiboken::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
} }
static inline void static inline void qwidgetSetLayout(QWidget *self, QLayout *layout)
qwidgetSetLayout(QWidget *self, QLayout *layout)
{ {
if (!layout || self->layout()) if (!layout || self->layout())
return; return;

View file

@ -8,7 +8,7 @@ inline bool Converter<QPixmap>::isConvertible(PyObject* pyobj)
{ {
if (ValueTypeConverter<QPixmap>::isConvertible(pyobj)) if (ValueTypeConverter<QPixmap>::isConvertible(pyobj))
return true; return true;
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>()); SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType<QPixmap>());
bool isVariant = Converter<QVariant>::checkType(pyobj); bool isVariant = Converter<QVariant>::checkType(pyobj);
if (isVariant) { if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj)); QVariant var(Converter<QVariant>::toCpp(pyobj));
@ -24,7 +24,7 @@ inline bool Converter<QPixmap>::isConvertible(PyObject* pyobj)
inline QPixmap Converter<QPixmap>::toCpp(PyObject* pyobj) inline QPixmap Converter<QPixmap>::toCpp(PyObject* pyobj)
{ {
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>()); SbkObjectType* shiboType = reinterpret_cast<SbkObjectType*>(SbkType<QPixmap>());
bool isVariant = Converter<QVariant>::checkType(pyobj); bool isVariant = Converter<QVariant>::checkType(pyobj);
if (isVariant) { if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj)); QVariant var(Converter<QVariant>::toCpp(pyobj));

View file

@ -526,7 +526,7 @@
<add-function signature="value()" return-type="QTreeWidgetItem*"> <add-function signature="value()" return-type="QTreeWidgetItem*">
<inject-code> <inject-code>
%PYARG_0 = %CONVERTTOPYTHON[QTreeWidgetItem*](%CPPSELF.operator*()); %PYARG_0 = %CONVERTTOPYTHON[QTreeWidgetItem*](%CPPSELF.operator*());
SbkBaseWrapper_setOwnership(%PYARG_0, false); Shiboken::Wrapper::releaseOwnership(%PYARG_0);
</inject-code> </inject-code>
</add-function> </add-function>
<enum-type name="IteratorFlag" flags="QTreeWidgetItemIterator::IteratorFlags"/> <enum-type name="IteratorFlag" flags="QTreeWidgetItemIterator::IteratorFlags"/>
@ -1140,7 +1140,7 @@
<enum-type name="PanelModality"/> <enum-type name="PanelModality"/>
<inject-code class="target" position="end"> <inject-code class="target" position="end">
PyObject* userTypeConstant = PyInt_FromLong(QGraphicsItem::UserType); PyObject* userTypeConstant = PyInt_FromLong(QGraphicsItem::UserType);
PyDict_SetItemString(SbkQGraphicsItem_Type.super.ht_type.tp_dict, "UserType", userTypeConstant); PyDict_SetItemString(Sbk_QGraphicsItem_Type.super.ht_type.tp_dict, "UserType", userTypeConstant);
</inject-code> </inject-code>
<modify-function signature="setParentItem(QGraphicsItem *)"> <modify-function signature="setParentItem(QGraphicsItem *)">
<modify-argument index="this"> <modify-argument index="this">
@ -3300,7 +3300,7 @@
<modify-function signature="setStyle(QStyle*)"> <modify-function signature="setStyle(QStyle*)">
<inject-code class="target" position="end"> <inject-code class="target" position="end">
Shiboken::keepReference(reinterpret_cast&lt;Shiboken::SbkBaseWrapper*&gt;(%PYSELF), "__style__", %PYARG_1); Shiboken::keepReference(reinterpret_cast&lt;SbkObject*&gt;(%PYSELF), "__style__", %PYARG_1);
</inject-code> </inject-code>
</modify-function> </modify-function>
<modify-function signature="style()const"> <modify-function signature="style()const">
@ -3312,9 +3312,9 @@
if (appStyle == myStyle) { if (appStyle == myStyle) {
Shiboken::AutoDecRef pyApp(%CONVERTTOPYTHON[QApplication*](qApp)); Shiboken::AutoDecRef pyApp(%CONVERTTOPYTHON[QApplication*](qApp));
Shiboken::setParent(pyApp, %PYARG_0); Shiboken::setParent(pyApp, %PYARG_0);
SbkBaseWrapper_setOwnership(%PYARG_0, false); Shiboken::Wrapper::releaseOwnership(%PYARG_0);
} else { } else {
Shiboken::keepReference(reinterpret_cast&lt;Shiboken::SbkBaseWrapper*&gt;(%PYSELF), "__style__", %PYARG_0); Shiboken::keepReference(reinterpret_cast&lt;SbkObject*&gt;(%PYSELF), "__style__", %PYARG_0);
} }
} }
</inject-code> </inject-code>

View file

@ -39,8 +39,8 @@
<define-ownership class="target" owner="default"/> <define-ownership class="target" owner="default"/>
</modify-argument> </modify-argument>
<inject-code position="end"> <inject-code position="end">
Shiboken::SbkBaseWrapper* _pyReturn = reinterpret_cast&lt;Shiboken::SbkBaseWrapper*&gt;(%PYARG_0); SbkObject* _pyReturn = reinterpret_cast&lt;SbkObject*&gt;(%PYARG_0);
if (!_pyReturn->parentInfo) if (!Shiboken::Wrapper::hasParentInfo(_pyReturn))
Shiboken::setParent(%PYSELF, %PYARG_0); Shiboken::setParent(%PYSELF, %PYARG_0);
</inject-code> </inject-code>
</modify-function> </modify-function>

View file

@ -86,11 +86,11 @@
PySideSignal* signal_item; PySideSignal* signal_item;
signal_item = PySide::Signal::newObject("capabilitiesChanged", "void", NULL); signal_item = PySide::Signal::newObject("capabilitiesChanged", "void", NULL);
PyDict_SetItemString(SbkPhonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "capabilitiesChanged", (PyObject*)signal_item); PyDict_SetItemString(Sbk_Phonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "capabilitiesChanged", (PyObject*)signal_item);
Py_DECREF(signal_item); Py_DECREF(signal_item);
signal_item = PySide::Signal::newObject("availableAudioOutputDevicesChanged", "void", NULL); signal_item = PySide::Signal::newObject("availableAudioOutputDevicesChanged", "void", NULL);
PyDict_SetItemString( SbkPhonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "availableAudioOutputDevicesChanged", (PyObject*)signal_item); PyDict_SetItemString( Sbk_Phonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "availableAudioOutputDevicesChanged", (PyObject*)signal_item);
Py_DECREF(signal_item); Py_DECREF(signal_item);
</inject-code> </inject-code>
</object-type> </object-type>

View file

@ -182,8 +182,8 @@
%PYARG_0 = Shiboken::makeTuple(retval_, %4); %PYARG_0 = Shiboken::makeTuple(retval_, %4);
</template> </template>
<template name="set_qapp_parent_for_orphan"> <template name="set_qapp_parent_for_orphan">
Shiboken::SbkBaseWrapper* _pySelf = reinterpret_cast&lt;Shiboken::SbkBaseWrapper*&gt;(%PYARG_0); SbkObject* _pySelf = reinterpret_cast&lt;SbkObject*&gt;(%PYARG_0);
if (!_pySelf->parentInfo) if (!Shiboken::Wrapper::hasParentInfo(_pySelf))
Shiboken::setParent(%CONVERTTOPYTHON[QApplication*](qApp), %PYARG_0); Shiboken::setParent(%CONVERTTOPYTHON[QApplication*](qApp), %PYARG_0);
</template> </template>
<!-- templates for __reduce__ --> <!-- templates for __reduce__ -->