From 3565aad630864ecdbe53fdaa501ea708555b3c7c Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sun, 30 Apr 2023 18:30:36 -0400 Subject: New upstream version 3.4.4+dfsg. --- .../coreSQLiteStudio/plugins/scriptingqt.h | 52 +++++++++++++++------- 1 file changed, 35 insertions(+), 17 deletions(-) (limited to 'SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h') diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h b/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h index 125789a..a7e156c 100644 --- a/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h +++ b/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h @@ -6,33 +6,35 @@ #include #include #include -#include -#include +#include +#include -class QScriptEngine; class QMutex; -class QScriptContext; class ScriptingQtDbProxy; +class ScriptingQtConsole; class ScriptingQt : public BuiltInPlugin, public DbAwareScriptingPlugin { Q_OBJECT - SQLITESTUDIO_PLUGIN_TITLE("Qt scripting") - SQLITESTUDIO_PLUGIN_DESC("Qt scripting support.") - SQLITESTUDIO_PLUGIN_VERSION(10000) + SQLITESTUDIO_PLUGIN_TITLE("JavaScript scripting") + SQLITESTUDIO_PLUGIN_DESC("JavaScript scripting support.") + SQLITESTUDIO_PLUGIN_VERSION(10100) SQLITESTUDIO_PLUGIN_AUTHOR("sqlitestudio.pl") public: ScriptingQt(); ~ScriptingQt(); + static QJSValueList toValueList(QJSEngine* engine, const QList& values); + static QVariant convertVariant(const QVariant& value, bool wrapStrings = false); + QString getLanguage() const; Context* createContext(); void releaseContext(Context* context); void resetContext(Context* context); - QVariant evaluate(const QString& code, const QList& args, Db* db, bool locking = false, QString* errorMessage = nullptr); - QVariant evaluate(Context* context, const QString& code, const QList& args, Db* db, bool locking = false); + QVariant evaluate(const QString& code, const FunctionInfo& funcInfo, const QList& args, Db* db, bool locking = false, QString* errorMessage = nullptr); + QVariant evaluate(Context* context, const QString& code, const FunctionInfo& funcInfo, const QList& args, Db* db, bool locking = false); void setVariable(Context* context, const QString& name, const QVariant& value); QVariant getVariable(Context* context, const QString& name); bool hasError(Context* context) const; @@ -50,23 +52,39 @@ class ScriptingQt : public BuiltInPlugin, public DbAwareScriptingPlugin ContextQt(); ~ContextQt(); - QScriptEngine* engine = nullptr; - QCache scriptCache; + QJSEngine* engine = nullptr; + QCache scriptCache; QString error; ScriptingQtDbProxy* dbProxy = nullptr; - QScriptValue dbProxyScriptValue; + ScriptingQtConsole* console = nullptr; + QJSValue dbProxyScriptValue; }; ContextQt* getContext(ScriptingPlugin::Context* context) const; - QScriptValue getFunctionValue(ContextQt* ctx, const QString& code); - QVariant evaluate(ContextQt* ctx, QScriptContext* engineContext, const QString& code, const QList& args, Db* db, bool locking); - QVariant convertVariant(const QVariant& value, bool wrapStrings = false); + QJSValue getFunctionValue(ContextQt* ctx, const QString& code, const FunctionInfo& funcInfo); + QVariant evaluate(ContextQt* ctx, const QString& code, const FunctionInfo& funcInfo, const QList& args, Db* db, bool locking); + ContextQt* getMainContext(); static const constexpr int cacheSize = 5; - ContextQt* mainContext = nullptr; + QThreadStorage mainContext; QList contexts; - QMutex* mainEngineMutex = nullptr; + QList managedMainContexts; + QMutex* managedMainContextsMutex = nullptr; +}; + +class ScriptingQtConsole : public QObject +{ + Q_OBJECT + + public: + ScriptingQtConsole(QJSEngine* engine); + + private: + QJSEngine* engine = nullptr; + + public slots: + QJSValue log(const QJSValue& value); }; #endif // SCRIPTINGQT_H -- cgit v1.2.3