From c85ce954582eba5761e895641e4e5dbf6dd8f4cc Mon Sep 17 00:00:00 2001 From: Hugo Parente Lima Date: Tue, 10 May 2011 18:11:55 -0300 Subject: Use add-function on QCoreApplication and QApplication constructors. This was needed after a fix in the shiboken generator regarding the tp_init initialization. --- PySide/QtCore/glue/qcoreapplication_init.cpp | 34 ++++++---------------------- PySide/QtCore/typesystem_core.xml | 5 ++++ PySide/QtGui/glue/qapplication_init.cpp | 31 ++++++------------------- PySide/QtGui/typesystem_gui_common.xml | 5 ++++ 4 files changed, 24 insertions(+), 51 deletions(-) diff --git a/PySide/QtCore/glue/qcoreapplication_init.cpp b/PySide/QtCore/glue/qcoreapplication_init.cpp index 15e3e1118..c92f03e0b 100644 --- a/PySide/QtCore/glue/qcoreapplication_init.cpp +++ b/PySide/QtCore/glue/qcoreapplication_init.cpp @@ -2,43 +2,23 @@ static int QCoreApplicationArgCount; static char** QCoreApplicationArgValues; -int Sbk_QCoreApplication_Init(PyObject* self, PyObject* args, PyObject*) +void QCoreApplication_constructor(PyObject* self, PyObject* args, QCoreApplicationWrapper** cptr) { - if (Shiboken::Object::isUserType(self) && !Shiboken::ObjectType::canCallConstructor(self->ob_type, Shiboken::SbkType())) - return -1; - - if (QCoreApplication::instance()) { PyErr_SetString(PyExc_RuntimeError, "A QCoreApplication instance already exists."); - return -1; + return; } int numArgs = PyTuple_GET_SIZE(args); - if (numArgs != 1) { + if (numArgs != 1 + || !Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QCoreApplicationArgCount, &QCoreApplicationArgValues, "PySideApp")) { PyErr_BadArgument(); - return -1; + return; } - if (!Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QCoreApplicationArgCount, &QCoreApplicationArgValues, "PySideApp")) { - PyErr_BadArgument(); - return -1; - } - - SbkObject* sbkSelf = reinterpret_cast(self); - QCoreApplicationWrapper* cptr = new QCoreApplicationWrapper(QCoreApplicationArgCount, QCoreApplicationArgValues); - Shiboken::Object::setCppPointer(sbkSelf, - Shiboken::SbkType(), - cptr); - - Shiboken::Object::setValidCpp(sbkSelf, true); - Shiboken::Object::setHasCppWrapper(sbkSelf, true); - Shiboken::Object::releaseOwnership(sbkSelf); - - Shiboken::BindingManager::instance().registerWrapper(sbkSelf, cptr); - PySide::Signal::updateSourceObject(self); - cptr->metaObject(); + *cptr = new QCoreApplicationWrapper(QCoreApplicationArgCount, QCoreApplicationArgValues); + Shiboken::Object::releaseOwnership(reinterpret_cast(self)); PySide::registerCleanupFunction(&PySide::destroyQCoreApplication); Py_INCREF(self); - return 1; } diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 224d9c692..d778d4e38 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2294,6 +2294,11 @@ in a more convenient form by the :meth:`~QCoreApplication.arguments()` method. + + + QCoreApplication_constructor(%PYSELF, args, &%0); + + diff --git a/PySide/QtGui/glue/qapplication_init.cpp b/PySide/QtGui/glue/qapplication_init.cpp index 581e4dadf..16c7fef7a 100644 --- a/PySide/QtGui/glue/qapplication_init.cpp +++ b/PySide/QtGui/glue/qapplication_init.cpp @@ -5,38 +5,22 @@ static int QApplicationArgCount; static char** QApplicationArgValues; static const char QAPP_MACRO[] = "qApp"; -int Sbk_QApplication_Init(PyObject* self, PyObject* args, PyObject*) +void QApplication_constructor(PyObject* self, PyObject* args, QApplicationWrapper** cptr) { - if (Shiboken::Object::isUserType(self) && !Shiboken::ObjectType::canCallConstructor(self->ob_type, Shiboken::SbkType())) - return -1; - if (QApplication::instance()) { PyErr_SetString(PyExc_RuntimeError, "A QApplication instance already exists."); - return -1; + return; } int numArgs = PyTuple_GET_SIZE(args); - if (numArgs != 1) { - PyErr_BadArgument(); - return -1; - } - - if (!Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QApplicationArgCount, &QApplicationArgValues, "PySideApp")) { + if (numArgs != 1 + || !Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QApplicationArgCount, &QApplicationArgValues, "PySideApp")) { PyErr_BadArgument(); - return -1; + return; } - SbkObject* sbkSelf = reinterpret_cast(self); - QApplicationWrapper* cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues); - Shiboken::Object::setCppPointer(sbkSelf, - Shiboken::SbkType(), - cptr); - Shiboken::Object::setValidCpp(sbkSelf, true); - Shiboken::Object::setHasCppWrapper(sbkSelf, true); - Shiboken::Object::releaseOwnership(sbkSelf); - Shiboken::BindingManager::instance().registerWrapper(sbkSelf, cptr); - PySide::Signal::updateSourceObject(self); - cptr->metaObject(); + *cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues); + Shiboken::Object::releaseOwnership(reinterpret_cast(self)); // Verify if qApp is in main module PyObject* globalsDict = PyEval_GetGlobals(); @@ -49,5 +33,4 @@ int Sbk_QApplication_Init(PyObject* self, PyObject* args, PyObject*) PyObject_SetAttrString(moduleQtGui, QAPP_MACRO, self); PySide::registerCleanupFunction(&PySide::destroyQCoreApplication); Py_INCREF(self); - return 1; } diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml index 30c4add40..a0089a080 100644 --- a/PySide/QtGui/typesystem_gui_common.xml +++ b/PySide/QtGui/typesystem_gui_common.xml @@ -5286,6 +5286,11 @@ + + + QApplication_constructor(%PYSELF, args, &%0); + + -- cgit v1.2.3