From 7167ce41b61d2ba2cdb526777a4233eb84a3b66a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sat, 6 Dec 2014 17:33:25 -0500 Subject: Imported Upstream version 2.99.6 --- .../coreSQLiteStudio/plugins/scriptingqt.h | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h (limited to 'SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h') diff --git a/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h b/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h new file mode 100644 index 0000000..125789a --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/plugins/scriptingqt.h @@ -0,0 +1,72 @@ +#ifndef SCRIPTINGQT_H +#define SCRIPTINGQT_H + +#include "builtinplugin.h" +#include "scriptingplugin.h" +#include +#include +#include +#include +#include + +class QScriptEngine; +class QMutex; +class QScriptContext; +class ScriptingQtDbProxy; + +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_AUTHOR("sqlitestudio.pl") + + public: + ScriptingQt(); + ~ScriptingQt(); + + 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); + void setVariable(Context* context, const QString& name, const QVariant& value); + QVariant getVariable(Context* context, const QString& name); + bool hasError(Context* context) const; + QString getErrorMessage(Context* context) const; + QString getIconPath() const; + bool init(); + void deinit(); + + private: + using DbAwareScriptingPlugin::evaluate; + + class ContextQt : public ScriptingPlugin::Context + { + public: + ContextQt(); + ~ContextQt(); + + QScriptEngine* engine = nullptr; + QCache scriptCache; + QString error; + ScriptingQtDbProxy* dbProxy = nullptr; + QScriptValue 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); + + static const constexpr int cacheSize = 5; + + ContextQt* mainContext = nullptr; + QList contexts; + QMutex* mainEngineMutex = nullptr; +}; + +#endif // SCRIPTINGQT_H -- cgit v1.2.3