embeddedpyqt / experimental / pyqtwrapper.h

#ifndef PYQTWRAPPER_H
#define PYQTWRAPPER_H

#include <QObject>
#include <QMetaObject>
#include <QMap>
#include <QStringList>

#define REGISTER_CLASS(cls) PyQtWrapper::instance()->registerMetaObject(cls::staticMetaObject);
#define REGISTER_INSTANCE(obj) PyQtWrapper::instance()->registerObject(obj);


class PyQtWrapper : public QObject
{
    Q_OBJECT

public:
    explicit PyQtWrapper(QObject *parent = 0);
    static PyQtWrapper *instance();

public slots:
    void deleteLater();
    void* metaObjectByName(const QString &name);
    QObject* objectByName(const QString &name);
    QStringList availableClasses();
    QStringList availableObjects();
    void registerMetaObject(const QMetaObject &mo);
    void registerObject(const QObject &obj);

private:
    static PyQtWrapper *_instance;
    QMap<QString,const QMetaObject*> classes;
    QMap<QString,const QObject*> objects;
};


#endif // PYQTWRAPPER_H
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.