aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pyside.cpp
diff options
context:
space:
mode:
authorCristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io>2021-07-15 14:09:44 +0200
committerCristián Maureira-Fredes <Cristian.Maureira-Fredes@qt.io>2021-08-17 23:15:52 +0200
commit6d07b7256c350835917d30cf74c8180592b80452 (patch)
treec13d2ce473aa8a5c78936ef0119ccaddc8d61a7b /sources/pyside6/libpyside/pyside.cpp
parentea358c8fbb7a12369565d4f797a75738f7dd76ef (diff)
Implement qmlRegisterSingletonInstance
Using a similar approach to the qmlRegisterSingletonType, but wrapping the instance (QObject) into a SingletonFunctor as described in Qt/C++. Add helper function PySide::isQObjectDerived Task-number: PYSIDE-487 Change-Id: Id0fd9da0351a9ba58eae006d7d882f9815f06742 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/libpyside/pyside.cpp')
-rw-r--r--sources/pyside6/libpyside/pyside.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp
index 14b86f322..990b45694 100644
--- a/sources/pyside6/libpyside/pyside.cpp
+++ b/sources/pyside6/libpyside/pyside.cpp
@@ -656,6 +656,17 @@ bool registerInternalQtConf()
return isRegistered;
}
+bool isQObjectDerived(PyTypeObject *pyType, bool raiseError) {
+ static PyTypeObject *qobjectType = Shiboken::Conversions::getPythonTypeObject("QObject*");
+
+ if (!PyType_IsSubtype(pyType, qobjectType)) {
+ if (raiseError)
+ PyErr_Format(PyExc_TypeError, "A type inherited from %s expected, got %s.",
+ qobjectType->tp_name, pyType->tp_name);
+ return false;
+ }
+ return true;
+}
} //namespace PySide