Changeset View
Changeset View
Standalone View
Standalone View
templates/scriptabletags/scriptabletags.h
Show All 18 Lines | |||||
19 | */ | 19 | */ | ||
20 | 20 | | |||
21 | #ifndef SCRIPTABLETAGS_H | 21 | #ifndef SCRIPTABLETAGS_H | ||
22 | #define SCRIPTABLETAGS_H | 22 | #define SCRIPTABLETAGS_H | ||
23 | 23 | | |||
24 | #include "node.h" | 24 | #include "node.h" | ||
25 | #include "taglibraryinterface.h" | 25 | #include "taglibraryinterface.h" | ||
26 | 26 | | |||
27 | // #include <QtScript/QScriptEngine> | 27 | #include <QtQml/QJSValue> | ||
28 | 28 | | |||
29 | // #include <QtScript/QSharedPointer> | 29 | // #include <QtQml/QSharedPointer> | ||
30 | // typedef QSharedPointer<QScriptEngine> ScriptEnginePointer; | 30 | // typedef QSharedPointer<QJSEngine> ScriptEnginePointer; | ||
31 | 31 | | |||
32 | class QScriptEngine; | 32 | QT_FORWARD_DECLARE_CLASS(QJSEngine) | ||
33 | 33 | | |||
34 | namespace Grantlee | 34 | namespace Grantlee | ||
35 | { | 35 | { | ||
36 | class Engine; | 36 | class Engine; | ||
37 | class Parser; | 37 | class Parser; | ||
38 | 38 | | |||
39 | class ScriptableHelperFunctions : public QObject | ||||
40 | { | ||||
41 | Q_OBJECT | ||||
42 | QJSEngine *m_scriptEngine; | ||||
43 | public: | ||||
44 | ScriptableHelperFunctions(QJSEngine *scriptEngine) : m_scriptEngine(scriptEngine) { } | ||||
45 | | ||||
46 | Q_INVOKABLE QJSValue markSafeFunction(QJSValue inputValue); | ||||
47 | Q_INVOKABLE QJSValue ScriptableFilterExpressionConstructor(QString name, QObject *parserObj = nullptr); | ||||
48 | Q_INVOKABLE QJSValue ScriptableNodeConstructor(QJSValue callContext); | ||||
49 | Q_INVOKABLE QJSValue ScriptableVariableConstructor(QString name); | ||||
50 | Q_INVOKABLE QJSValue ScriptableTemplateConstructor(QString content, QString name, QObject *parent); | ||||
51 | }; | ||||
52 | | ||||
39 | class ScriptableTagLibrary : public QObject, public TagLibraryInterface | 53 | class ScriptableTagLibrary : public QObject, public TagLibraryInterface | ||
40 | { | 54 | { | ||
41 | Q_OBJECT | 55 | Q_OBJECT | ||
42 | Q_INTERFACES(Grantlee::TagLibraryInterface) | 56 | Q_INTERFACES(Grantlee::TagLibraryInterface) | ||
43 | Q_PLUGIN_METADATA(IID "org.grantlee.TagLibraryInterface") | 57 | Q_PLUGIN_METADATA(IID "org.grantlee.TagLibraryInterface") | ||
44 | public: | 58 | public: | ||
45 | ScriptableTagLibrary(QObject *parent = 0); | 59 | ScriptableTagLibrary(QObject *parent = 0); | ||
46 | 60 | | |||
47 | QHash<QString, AbstractNodeFactory *> nodeFactories(const QString &name | 61 | QHash<QString, AbstractNodeFactory *> nodeFactories(const QString &name | ||
48 | = QString()) override; | 62 | = QString()) override; | ||
49 | 63 | | |||
50 | QHash<QString, Filter *> filters(const QString &name = QString()) override; | 64 | QHash<QString, Filter *> filters(const QString &name = QString()) override; | ||
51 | 65 | | |||
52 | public Q_SLOTS: | 66 | public Q_SLOTS: | ||
53 | void addFactory(const QString &factoryName, const QString &tagname); | 67 | void addFactory(const QString &factoryName, const QString &tagname); | ||
54 | void addFilter(const QString &filterName); | 68 | void addFilter(const QString &filterName); | ||
55 | 69 | | |||
56 | protected: | 70 | protected: | ||
57 | bool evaluateScript(const QString &name); | 71 | bool evaluateScript(const QString &name); | ||
58 | QHash<QString, AbstractNodeFactory *> getFactories(); | 72 | QHash<QString, AbstractNodeFactory *> getFactories(); | ||
59 | QHash<QString, Filter *> getFilters(); | 73 | QHash<QString, Filter *> getFilters(); | ||
60 | 74 | | |||
61 | private: | 75 | private: | ||
62 | // ScriptEnginePointer m_scriptEngine; | 76 | // ScriptEnginePointer m_scriptEngine; | ||
63 | QScriptEngine *m_scriptEngine; | 77 | QJSEngine *m_scriptEngine; | ||
78 | QJSValue m_functions; | ||||
64 | QHash<QString, AbstractNodeFactory *> m_nodeFactories; | 79 | QHash<QString, AbstractNodeFactory *> m_nodeFactories; | ||
65 | QHash<QString, QString> m_factoryNames; | 80 | QHash<QString, QString> m_factoryNames; | ||
66 | QStringList m_filterNames; | 81 | QStringList m_filterNames; | ||
67 | QHash<QString, Filter *> m_filters; | 82 | QHash<QString, Filter *> m_filters; | ||
68 | }; | 83 | }; | ||
69 | } | 84 | } | ||
70 | 85 | | |||
71 | #endif | 86 | #endif |