#ifndef AXSCRIPTENGINE_H #define AXSCRIPTENGINE_H #include #include #include #include #include #include class BridgeApp; class BridgeForm; class BridgeEvent; class BridgeMenu; class AbstractAxMenuItem; class AxScriptManager; struct ScriptContext { QString name; QJSValue scriptObject; QList objects; QList actions; QList menuSessionMain; QList menuSessionAccess; }; class AxScriptEngine : public QObject { Q_OBJECT AxScriptManager* scriptManager; std::unique_ptr jsEngine; std::unique_ptr bridgeApp; std::unique_ptr bridgeForm; std::unique_ptr bridgeEvent; std::unique_ptr bridgeMenu; public: ScriptContext context; explicit AxScriptEngine(AxScriptManager* script_manager, const QString &name = "", QObject *parent = nullptr); ~AxScriptEngine() override; QJSEngine* engine() const; BridgeApp* app() const; BridgeForm* form() const; BridgeEvent* event() const; BridgeMenu* menu() const; AxScriptManager* manager() const; void registerObject(QObject* obj); void registerAction(QAction* action); void registerMenu(const QString &type, AbstractAxMenuItem* menu); bool execute(const QString &code); QList getMenuItems(const QString &type); }; #endif //AXSCRIPTENGINE_H