mirror of
https://github.com/fralx/LimeReport.git
synced 2025-11-07 00:21:24 +03:00
QJSEngine has been added
This commit is contained in:
@@ -39,11 +39,15 @@
|
||||
#include <QScriptable>
|
||||
#include <QFont>
|
||||
|
||||
|
||||
//#include <QJSEngine>
|
||||
|
||||
#ifdef HAVE_UI_LOADER
|
||||
#include <QDialog>
|
||||
#endif
|
||||
|
||||
#include "base/lrsingleton.h"
|
||||
#include "lrglobal.h"
|
||||
#include "lrscriptenginemanagerintf.h"
|
||||
#include "lrcollection.h"
|
||||
|
||||
@@ -53,7 +57,7 @@ class DataSourceManager;
|
||||
|
||||
struct ScriptFunctionDesc{
|
||||
enum FuncType {Native,Script};
|
||||
QScriptValue scriptValue;
|
||||
ScriptValueType scriptValue;
|
||||
QString name;
|
||||
QString description;
|
||||
QString category;
|
||||
@@ -169,22 +173,91 @@ private:
|
||||
QString m_initScript;
|
||||
};
|
||||
|
||||
class JSFunctionDesc{
|
||||
public:
|
||||
JSFunctionDesc(){}
|
||||
JSFunctionDesc(const QString& functionName,
|
||||
const QString& functionCategory,
|
||||
const QString& functionDescription,
|
||||
const QString& functionManagerName,
|
||||
QObject* functionManger,
|
||||
const QString& functionScriptWrapper
|
||||
): m_name(functionName), m_category(functionCategory), m_description(functionDescription),
|
||||
m_managerName(functionManagerName), m_manager(functionManger), m_scriptWrapper(functionScriptWrapper)
|
||||
{}
|
||||
QString name() const;
|
||||
void setName(const QString &name);
|
||||
|
||||
QString category() const;
|
||||
void setCategory(const QString &category);
|
||||
|
||||
QString description() const;
|
||||
void setDescription(const QString &description);
|
||||
|
||||
QString managerName() const;
|
||||
void setManagerName(const QString &managerName);
|
||||
|
||||
QObject *manager() const;
|
||||
void setManager(QObject *manager);
|
||||
|
||||
QString scriptWrapper() const;
|
||||
void setScriptWrapper(const QString &scriptWrapper);
|
||||
|
||||
private:
|
||||
QString m_name;
|
||||
QString m_category;
|
||||
QString m_description;
|
||||
QString m_managerName;
|
||||
QObject* m_manager;
|
||||
QString m_scriptWrapper;
|
||||
};
|
||||
|
||||
class ScriptFunctionsManager : public QObject{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ScriptFunctionsManager(QObject* parent = 0):QObject(parent){}
|
||||
Q_INVOKABLE QVariant calcGroupFunction(const QString& name, const QString& fieldName, const QString& bandName);
|
||||
Q_INVOKABLE QVariant line(const QString& bandName);
|
||||
Q_INVOKABLE QVariant numberFormat(QVariant value, const char &format, int precision, const QString &locale);
|
||||
Q_INVOKABLE QVariant dateFormat(QVariant value, const QString& format);
|
||||
Q_INVOKABLE QVariant timeFormat(QVariant value, const QString& format);
|
||||
Q_INVOKABLE QVariant dateTimeFormat(QVariant value, const QString& format);
|
||||
Q_INVOKABLE QVariant date();
|
||||
Q_INVOKABLE QVariant now();
|
||||
Q_INVOKABLE QVariant currencyFormat(QVariant value, const QString& locale);
|
||||
Q_INVOKABLE QVariant currencyUSBasedFormat(QVariant value, const QString& currencySymbol);
|
||||
Q_INVOKABLE void setVariable(const QString& name, QVariant value);
|
||||
Q_INVOKABLE QVariant color(const QString& color){ return QColor(color);}
|
||||
#ifdef USE_QJSENGINE
|
||||
Q_INVOKABLE QFont font(const QString& family, int pointSize = -1, bool bold = false, bool italic = false, bool underLine = false);
|
||||
#endif
|
||||
Q_INVOKABLE QFont font(QVariantMap params);
|
||||
ScriptEngineManager *scriptEngineManager() const;
|
||||
void setScriptEngineManager(ScriptEngineManager *scriptEngineManager);
|
||||
static QColor createQColor(const QString& color){ return QColor(color);}
|
||||
private:
|
||||
ScriptEngineManager* m_scriptEngineManager;
|
||||
};
|
||||
|
||||
class ScriptEngineManager : public QObject, public Singleton<ScriptEngineManager>, public IScriptEngineManager
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QScriptEngine* scriptEngine(){return m_scriptEngine;}
|
||||
~ScriptEngineManager();
|
||||
friend class Singleton<ScriptEngineManager>;
|
||||
ScriptEngineType* scriptEngine(){return m_scriptEngine;}
|
||||
~ScriptEngineManager();
|
||||
bool isFunctionExists(const QString& functionName) const;
|
||||
void deleteFunction(const QString& functionsName);
|
||||
bool addFunction(const QString& name, QScriptEngine::FunctionSignature function,
|
||||
const QString& category="", const QString& description="");
|
||||
|
||||
bool addFunction(const JSFunctionDesc& functionsDescriber);
|
||||
#ifndef USE_QJSENGINE
|
||||
bool addFunction(const QString &name, QScriptEngine::FunctionSignature function, const QString &category, const QString &description);
|
||||
#endif
|
||||
bool addFunction(const QString &name, const QString& script,
|
||||
const QString &category="", const QString &description="");
|
||||
const QString& lastError() const {return m_lastError;}
|
||||
QStringList functionsNames();
|
||||
const QList<ScriptFunctionDesc>& functionsDescriber(){return m_functions;}
|
||||
const QList<ScriptFunctionDesc>& functionsDescribers(){return m_functions;}
|
||||
ScriptEngineModel* model(){return m_model;}
|
||||
void setContext(ScriptEngineContext* context){m_context=context;}
|
||||
DataSourceManager* dataManager() const {return m_dataManager;}
|
||||
@@ -195,14 +268,25 @@ protected:
|
||||
bool containsFunction(const QString &functionName);
|
||||
private:
|
||||
Q_DISABLE_COPY(ScriptEngineManager)
|
||||
bool createLineFunction();
|
||||
bool createNumberFomatFunction();
|
||||
bool createDateFormatFunction();
|
||||
bool createTimeFormatFunction();
|
||||
bool createDateTimeFormatFunction();
|
||||
bool createDateFunction();
|
||||
bool createNowFunction();
|
||||
bool createCurrencyFormatFunction();
|
||||
bool createCurrencyUSBasedFormatFunction();
|
||||
bool createSetVariableFunction();
|
||||
private:
|
||||
ScriptEngineManager();
|
||||
QScriptEngine* m_scriptEngine;
|
||||
ScriptEngineType* m_scriptEngine;
|
||||
QString m_lastError;
|
||||
QList<ScriptFunctionDesc> m_functions;
|
||||
ScriptEngineModel* m_model;
|
||||
ScriptEngineContext* m_context;
|
||||
DataSourceManager* m_dataManager;
|
||||
ScriptFunctionsManager* m_functionManager;
|
||||
};
|
||||
|
||||
class ScriptExtractor
|
||||
|
||||
Reference in New Issue
Block a user