|
PythonQt
|
internal PythonQt details More...
#include <PythonQt.h>
Public Types | |
| enum | DecoratorTypes { StaticDecorator = 1 , ConstructorDecorator = 2 , DestructorDecorator = 4 , InstanceDecorator = 8 , AllDecorators = 0xffff } |
Public Member Functions | |
| PythonQtPrivate () | |
| ~PythonQtPrivate () override | |
| void | setTaskDoneCallback (const PythonQtObjectPtr &callable) |
| PythonQtObjectPtr | checkAndRunCoroutine (const PythonQtObjectPtr &object) |
| Runs the given coroutine (via asyncio), returns a scheduled task if it object is a coroutine. | |
| PythonQtObjectPtr | createAsyncioFuture () |
| Creates a new asyncio.Future object. | |
| const QStringList & | sharedLibrarySuffixes () |
| get the suffixes that are used for shared libraries | |
| bool | isPythonQtObjectPtrMetaId (int id) |
| returns if the id is the id for PythonQtObjectPtr | |
| bool | isPythonQtSafeObjectPtrMetaId (int id) |
| returns if the id is the id for PythonQtSafeObjectPtr | |
| bool | isPythonQtAnyObjectPtrMetaId (int id) |
| returns if the id is either PythonQtObjectPtr or PythonQtSafeObjectPtr | |
| void | addWrapperPointer (void *obj, PythonQtInstanceWrapper *wrapper) |
| add the wrapper pointer (for reuse if the same obj appears while wrapper still exists) | |
| void | removeWrapperPointer (void *obj) |
| remove the wrapper ptr again | |
| void | shellClassDeleted (void *shellClass) |
| called by destructor of shells to allow invalidation of the Python wrapper | |
| void * | unwrapForeignWrapper (const QByteArray &classname, PyObject *obj) |
| try to unwrap the given object to a C++ pointer using the foreign wrapper factories | |
| bool | addParentClass (const char *typeName, const char *parentTypeName, int upcastingOffset) |
| add parent class relation | |
| void | addPolymorphicHandler (const char *typeName, PythonQtPolymorphicHandlerCB *cb) |
| add a handler for polymorphic downcasting | |
| PythonQtClassInfo * | lookupClassInfoAndCreateIfNotPresent (const char *typeName) |
| lookup existing classinfo and return new if not yet present | |
| bool | addSignalHandler (QObject *sender, const char *signal, PyObject *callable) |
| add a signal handler | |
| bool | removeSignalHandler (QObject *sender, const char *signal, PyObject *callable=nullptr) |
| remove a signal handler for given callable (or all callables on that signal if callable is NULL) | |
| void | removeSignalReceiver (PythonQtSignalReceiver *receiver) |
| called when a signal receiver is deleted to remove it from the hash map | |
| PyObject * | wrapQObject (QObject *obj) |
| wrap the given QObject into a Python object (or return existing wrapper!) | |
| PyObject * | wrapPtr (void *ptr, const QByteArray &name, bool passOwnership=false) |
| void | registerClass (const QMetaObject *metaobject, const char *package=nullptr, PythonQtQObjectCreatorFunctionCB *wrapperCreator=nullptr, PythonQtShellSetInstanceWrapperCB *shell=nullptr, PyObject *module=nullptr, int typeSlots=0) |
| registers a QObject derived class to PythonQt (this is implicitly called by addObject as well) | |
| void | registerCPPClass (const char *typeName, const char *parentTypeName=nullptr, const char *package=nullptr, PythonQtQObjectCreatorFunctionCB *wrapperCreator=nullptr, PythonQtShellSetInstanceWrapperCB *shell=nullptr, PyObject *module=nullptr, int typeSlots=0) |
| void | registerGlobalNamespace (const char *typeName, const char *package, PythonQtQObjectCreatorFunctionCB *wrapperCreator, const QMetaObject &metaObject, PyObject *module=nullptr) |
| Same as above, but all enums of the created wrapper will also be added to the given package and to the "Qt" package. | |
| void | registerQObjectClassNames (const QStringList &names) |
| void | addDecorators (QObject *o, int decoTypes) |
| add a decorator object | |
| PythonQtClassWrapper * | createNewPythonQtClassWrapper (PythonQtClassInfo *info, PyObject *module, const QByteArray &pythonClassName) |
| helper method that creates a PythonQtClassWrapper object (returns a new reference) | |
| PythonQtInstanceWrapper * | createNewPythonQtInstanceWrapper (QObject *obj, PythonQtClassInfo *info, void *wrappedPtr=nullptr) |
| helper method that creates a PythonQtInstanceWrapper object and registers it in the object map | |
| PythonQtClassInfo * | getClassInfo (const QMetaObject *meta) |
| get the class info for a meta object (if available) | |
| PythonQtClassInfo * | getClassInfo (const QByteArray &className) |
| get the class info for a meta object (if available) | |
| void | registerLazyClass (const QByteArray &name, const QByteArray &moduleToImport) |
| PythonQtObjectPtr | createModule (const QString &name, PyObject *pycode) |
| creates the new module from the given pycode | |
| PythonQtClassInfo * | currentClassInfoForClassWrapperCreation () |
| get the current class info (for the next PythonQtClassWrapper that is created) and reset it to NULL again | |
| void | handleVirtualOverloadReturnError (const char *signature, const PythonQtMethodInfo *methodInfo, PyObject *result) |
| called by virtual overloads when a python return value can not be converted to the required Qt type | |
| PythonQtObjectPtr | pythonQtModule () const |
| get access to the PythonQt module | |
| PythonQt::ProfilingCB * | profilingCB () const |
| returns the profiling callback, which may be NULL | |
| QString | getSignature (PyObject *object) |
| determines the signature of the given callable object (similar as pydoc) | |
| bool | isMethodDescriptor (PyObject *object) const |
| returns true if the object is a method descriptor (same as inspect.ismethoddescriptor() in inspect.py) | |
| const QMetaObject * | getDynamicMetaObject (PythonQtInstanceWrapper *wrapper, const QMetaObject *prototypeMetaObject) |
| get the dynamic meta object for the given wrapper. It will contain the signals/slots that have been added in Python | |
| const QMetaObject * | setupDynamicMetaObjectChain (PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject) |
| recursively creates the dynamic meta object chain down to the Qt class wrapper. | |
| const QMetaObject * | buildDynamicMetaObject (PythonQtClassWrapper *type, const QMetaObject *prototypeMetaObject) |
| builds and returns the dynamic meta object for the given type, derived from prototypeMetaObject. | |
| int | handleMetaCall (QObject *object, PythonQtInstanceWrapper *wrapper, QMetaObject::Call call, int id, void **args) |
| redirected from shell classes, tries to call the given meta call on the Python wrapper. | |
| void | callMethodInPython (QMetaMethod &method, PythonQtInstanceWrapper *wrapper, void **args) |
| calls the given method on Python function with same name. | |
Static Public Member Functions | |
| static PyObject * | wrapMemoryAsBuffer (const void *data, Py_ssize_t size) |
| create a read-only buffer object from the given memory | |
| static PyObject * | wrapMemoryAsBuffer (void *data, Py_ssize_t size) |
| create a read-write buffer object from the given memory | |
| static PyObject * | createEnumValueInstance (PyObject *enumType, unsigned int enumValue) |
| create a new instance of the given enum type with given value (returns a new reference) | |
| static PyObject * | createNewPythonQtEnumWrapper (const char *enumName, PyObject *parentObject) |
| helper that creates a new int derived class that represents the enum of the given name (returns a new reference) | |
| static PyObject * | dummyTuple () |
| the dummy tuple (which is empty and may be used to detected that a wrapper is called from internal wrapper creation | |
Friends | |
| class | PythonQt |
internal PythonQt details
Definition at line 669 of file PythonQt.h.
| Enumerator | |
|---|---|
| StaticDecorator | |
| ConstructorDecorator | |
| DestructorDecorator | |
| InstanceDecorator | |
| AllDecorators | |
Definition at line 678 of file PythonQt.h.
| PythonQtPrivate::PythonQtPrivate | ( | ) |
|
override |
| void PythonQtPrivate::addDecorators | ( | QObject * | o, |
| int | decoTypes ) |
add a decorator object
| bool PythonQtPrivate::addParentClass | ( | const char * | typeName, |
| const char * | parentTypeName, | ||
| int | upcastingOffset ) |
add parent class relation
| void PythonQtPrivate::addPolymorphicHandler | ( | const char * | typeName, |
| PythonQtPolymorphicHandlerCB * | cb ) |
add a handler for polymorphic downcasting
| bool PythonQtPrivate::addSignalHandler | ( | QObject * | sender, |
| const char * | signal, | ||
| PyObject * | callable ) |
add a signal handler
| void PythonQtPrivate::addWrapperPointer | ( | void * | obj, |
| PythonQtInstanceWrapper * | wrapper ) |
add the wrapper pointer (for reuse if the same obj appears while wrapper still exists)
| const QMetaObject * PythonQtPrivate::buildDynamicMetaObject | ( | PythonQtClassWrapper * | type, |
| const QMetaObject * | prototypeMetaObject ) |
builds and returns the dynamic meta object for the given type, derived from prototypeMetaObject.
| void PythonQtPrivate::callMethodInPython | ( | QMetaMethod & | method, |
| PythonQtInstanceWrapper * | wrapper, | ||
| void ** | args ) |
calls the given method on Python function with same name.
| PythonQtObjectPtr PythonQtPrivate::checkAndRunCoroutine | ( | const PythonQtObjectPtr & | object | ) |
Runs the given coroutine (via asyncio), returns a scheduled task if it object is a coroutine.
| PythonQtObjectPtr PythonQtPrivate::createAsyncioFuture | ( | ) |
Creates a new asyncio.Future object.
|
static |
create a new instance of the given enum type with given value (returns a new reference)
| PythonQtObjectPtr PythonQtPrivate::createModule | ( | const QString & | name, |
| PyObject * | pycode ) |
creates the new module from the given pycode
| PythonQtClassWrapper * PythonQtPrivate::createNewPythonQtClassWrapper | ( | PythonQtClassInfo * | info, |
| PyObject * | module, | ||
| const QByteArray & | pythonClassName ) |
helper method that creates a PythonQtClassWrapper object (returns a new reference)
|
static |
helper that creates a new int derived class that represents the enum of the given name (returns a new reference)
| PythonQtInstanceWrapper * PythonQtPrivate::createNewPythonQtInstanceWrapper | ( | QObject * | obj, |
| PythonQtClassInfo * | info, | ||
| void * | wrappedPtr = nullptr ) |
helper method that creates a PythonQtInstanceWrapper object and registers it in the object map
| PythonQtClassInfo * PythonQtPrivate::currentClassInfoForClassWrapperCreation | ( | ) |
get the current class info (for the next PythonQtClassWrapper that is created) and reset it to NULL again
|
static |
the dummy tuple (which is empty and may be used to detected that a wrapper is called from internal wrapper creation
| PythonQtClassInfo * PythonQtPrivate::getClassInfo | ( | const QByteArray & | className | ) |
get the class info for a meta object (if available)
| PythonQtClassInfo * PythonQtPrivate::getClassInfo | ( | const QMetaObject * | meta | ) |
get the class info for a meta object (if available)
Referenced by PythonQtConvertListOfKnownClassToPythonList(), and PythonQtConvertPythonListToListOfKnownClass().
| const QMetaObject * PythonQtPrivate::getDynamicMetaObject | ( | PythonQtInstanceWrapper * | wrapper, |
| const QMetaObject * | prototypeMetaObject ) |
get the dynamic meta object for the given wrapper. It will contain the signals/slots that have been added in Python
| QString PythonQtPrivate::getSignature | ( | PyObject * | object | ) |
determines the signature of the given callable object (similar as pydoc)
| int PythonQtPrivate::handleMetaCall | ( | QObject * | object, |
| PythonQtInstanceWrapper * | wrapper, | ||
| QMetaObject::Call | call, | ||
| int | id, | ||
| void ** | args ) |
redirected from shell classes, tries to call the given meta call on the Python wrapper.
| void PythonQtPrivate::handleVirtualOverloadReturnError | ( | const char * | signature, |
| const PythonQtMethodInfo * | methodInfo, | ||
| PyObject * | result ) |
called by virtual overloads when a python return value can not be converted to the required Qt type
| bool PythonQtPrivate::isMethodDescriptor | ( | PyObject * | object | ) | const |
returns true if the object is a method descriptor (same as inspect.ismethoddescriptor() in inspect.py)
|
inline |
returns if the id is either PythonQtObjectPtr or PythonQtSafeObjectPtr
Definition at line 704 of file PythonQt.h.
|
inline |
returns if the id is the id for PythonQtObjectPtr
Definition at line 700 of file PythonQt.h.
|
inline |
returns if the id is the id for PythonQtSafeObjectPtr
Definition at line 702 of file PythonQt.h.
| PythonQtClassInfo * PythonQtPrivate::lookupClassInfoAndCreateIfNotPresent | ( | const char * | typeName | ) |
lookup existing classinfo and return new if not yet present
|
inline |
returns the profiling callback, which may be NULL
Definition at line 822 of file PythonQt.h.
|
inline |
get access to the PythonQt module
Definition at line 819 of file PythonQt.h.
| void PythonQtPrivate::registerClass | ( | const QMetaObject * | metaobject, |
| const char * | package = nullptr, | ||
| PythonQtQObjectCreatorFunctionCB * | wrapperCreator = nullptr, | ||
| PythonQtShellSetInstanceWrapperCB * | shell = nullptr, | ||
| PyObject * | module = nullptr, | ||
| int | typeSlots = 0 ) |
registers a QObject derived class to PythonQt (this is implicitly called by addObject as well)
| void PythonQtPrivate::registerCPPClass | ( | const char * | typeName, |
| const char * | parentTypeName = nullptr, | ||
| const char * | package = nullptr, | ||
| PythonQtQObjectCreatorFunctionCB * | wrapperCreator = nullptr, | ||
| PythonQtShellSetInstanceWrapperCB * | shell = nullptr, | ||
| PyObject * | module = nullptr, | ||
| int | typeSlots = 0 ) |
add a wrapper object for the given QMetaType typeName, also does an addClassDecorators() to add constructors for variants (ownership of wrapper is passed to PythonQt)
Make sure that you have done a qRegisterMetaType first, if typeName is a user type!
This will add a wrapper object that is used to make calls to the given classname typeName. All slots that take a pointer to typeName as the first argument will be callable from Python on a variant object that contains such a type.
| void PythonQtPrivate::registerGlobalNamespace | ( | const char * | typeName, |
| const char * | package, | ||
| PythonQtQObjectCreatorFunctionCB * | wrapperCreator, | ||
| const QMetaObject & | metaObject, | ||
| PyObject * | module = nullptr ) |
Same as above, but all enums of the created wrapper will also be added to the given package and to the "Qt" package.
| void PythonQtPrivate::registerLazyClass | ( | const QByteArray & | name, |
| const QByteArray & | moduleToImport ) |
register a class name that causes lazy loading of the moduleToImport when PythonQt encounters the type
| void PythonQtPrivate::registerQObjectClassNames | ( | const QStringList & | names | ) |
as an alternative to registerClass, you can tell PythonQt the names of QObject derived classes and it will register the classes when it first sees a pointer to such a derived class
| bool PythonQtPrivate::removeSignalHandler | ( | QObject * | sender, |
| const char * | signal, | ||
| PyObject * | callable = nullptr ) |
remove a signal handler for given callable (or all callables on that signal if callable is NULL)
| void PythonQtPrivate::removeSignalReceiver | ( | PythonQtSignalReceiver * | receiver | ) |
called when a signal receiver is deleted to remove it from the hash map
| void PythonQtPrivate::removeWrapperPointer | ( | void * | obj | ) |
remove the wrapper ptr again
| void PythonQtPrivate::setTaskDoneCallback | ( | const PythonQtObjectPtr & | callable | ) |
Set a callable that is used as the argument for the add_done_callback for the Task created by checkAndRunCoroutine
| const QMetaObject * PythonQtPrivate::setupDynamicMetaObjectChain | ( | PythonQtClassWrapper * | type, |
| const QMetaObject * | prototypeMetaObject ) |
recursively creates the dynamic meta object chain down to the Qt class wrapper.
|
inline |
get the suffixes that are used for shared libraries
Definition at line 697 of file PythonQt.h.
| void PythonQtPrivate::shellClassDeleted | ( | void * | shellClass | ) |
called by destructor of shells to allow invalidation of the Python wrapper
| void * PythonQtPrivate::unwrapForeignWrapper | ( | const QByteArray & | classname, |
| PyObject * | obj ) |
try to unwrap the given object to a C++ pointer using the foreign wrapper factories
|
static |
create a read-only buffer object from the given memory
|
static |
create a read-write buffer object from the given memory
| PyObject * PythonQtPrivate::wrapPtr | ( | void * | ptr, |
| const QByteArray & | name, | ||
| bool | passOwnership = false ) |
| PyObject * PythonQtPrivate::wrapQObject | ( | QObject * | obj | ) |
wrap the given QObject into a Python object (or return existing wrapper!)
|
friend |