aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:30:36 -0400
commit3565aad630864ecdbe53fdaa501ea708555b3c7c (patch)
treec743e4ad0bad39ebdb2f514c7cc52d34a257ebbe /SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h
parent1fdc150116cad39aae5c5da407c3312b47a59e3a (diff)
New upstream version 3.4.4+dfsg.upstream/3.4.4+dfsg
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h52
1 files changed, 35 insertions, 17 deletions
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 <QHash>
#include <QVariant>
#include <QCache>
-#include <QScriptValue>
-#include <QScriptProgram>
+#include <QJSValue>
+#include <QThreadStorage>
-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<QVariant>& 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<QVariant>& args, Db* db, bool locking = false, QString* errorMessage = nullptr);
- QVariant evaluate(Context* context, const QString& code, const QList<QVariant>& args, Db* db, bool locking = false);
+ QVariant evaluate(const QString& code, const FunctionInfo& funcInfo, const QList<QVariant>& args, Db* db, bool locking = false, QString* errorMessage = nullptr);
+ QVariant evaluate(Context* context, const QString& code, const FunctionInfo& funcInfo, const QList<QVariant>& 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<QString,QScriptProgram> scriptCache;
+ QJSEngine* engine = nullptr;
+ QCache<QString, QJSValue> 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<QVariant>& 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<QVariant>& args, Db* db, bool locking);
+ ContextQt* getMainContext();
static const constexpr int cacheSize = 5;
- ContextQt* mainContext = nullptr;
+ QThreadStorage<ContextQt*> mainContext;
QList<Context*> contexts;
- QMutex* mainEngineMutex = nullptr;
+ QList<ContextQt*> 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