#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 AxMenuItem { AbstractAxMenuItem* menu; QSet agents; QSet listenerts; QSet os; }; struct ScriptContext { QString name; QJSValue scriptObject; QList objects; QList actions; QList menuSessionMain; QList menuSessionAgent; QList menuSessionBrowser; QList menuSessionAccess; QList menuFileBrowser; QList menuDownloadRunning; QList menuDownloadStopped; QList menuDownloadFinished; }; 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, const QSet &list_agents, const QSet &list_os, const QSet &list_listeners); bool execute(const QString &code); QList getMenuItems(const QString &type); public slots: void engineError(const QString &message); }; #endif