embeddedpyqt / src / embpyqt / embeddedpyqt.h

#ifndef EMBEDDEDPYQT_H
#define EMBEDDEDPYQT_H

#include <QObject>
#include <QMetaObject>
#include <QMap>
#include <QStringList>
#include "pythonize.h"

#define RAISE(type, msg) EmbeddedPyQt::instance()->raiseException(type, msg);
#define REGISTER_CLASS(cls) EmbeddedPyQt::instance()->registerMetaObject(cls::staticMetaObject);
#define REGISTER_INSTANCE(obj) EmbeddedPyQt::instance()->registerObject(obj);


class EmbeddedPyQt : public QObject
{
    Q_OBJECT

public:
    explicit EmbeddedPyQt(QObject *parent = 0);
    void init(const QString &filename);
    static EmbeddedPyQt *instance();
signals:
    void executionRequested(const QString &command, bool globalContext);

public slots:
    void deleteLater();
    void raiseException(const QString &type, const QString &message);
    void clearException();
    void* metaObjectByName(const QString &name);
    QObject* objectByName(const QString &name);
    QStringList availableClasses();
    QStringList availableObjects();
    void registerMetaObject(const QMetaObject &mo);
    void registerObject(const QObject &obj);
    void execute(const QString &command, bool globalContext);

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


#endif // EMBEDDEDPYQT_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.