QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RScriptHandlerEcma.h
Go to the documentation of this file.
1 #ifndef RSCRIPTHANDLERECMA_H
2 #define RSCRIPTHANDLERECMA_H
3 
4 #include <QString>
5 #include <QtScript>
6 #include <QMainWindow>
7 
8 #include "RScriptHandler.h"
9 #include "RDocumentInterface.h"
10 #include "RGuiAction.h"
11 
12 class QScriptEngineDebugger;
13 
14 
20 class RScriptHandlerEcma: public QObject, public RScriptHandler {
21 Q_OBJECT
22 
23 public:
25  virtual ~RScriptHandlerEcma();
26 
27  static RScriptHandler* factory();
28 
29  static QList<QString> getSupportedFileExtensionsStatic();
30  QList<QString> getSupportedFileExtensions();
31 
32  virtual void doScript(const QString& scriptFile,const QStringList& arguments = QStringList());
33  virtual void eval(const QString& script, const QString& fileName = QString());
34  virtual RFileImporterAdapter* createFileImporter(const QString& className, RDocument& document);
35 
36  virtual bool isRunning();
37  virtual void abort();
38  virtual bool hasUncaughtExceptions();
39 
40  virtual void createActionDocumentLevel(const QString& scriptFile,
41  RGuiAction* guiAction, RDocumentInterface* documentInterface);
42  virtual void createActionApplicationLevel(const QString& scriptFile,
43  RGuiAction* guiAction);
44 
45  void initGlobalVariables(const QString& scriptFile);
46 
47  QScriptEngine& getScriptEngine() {
48  return *engine;
49  }
50 
51  static QScriptValue ecmaInclude(QScriptContext* context,
52  QScriptEngine* engine);
53  static QScriptValue ecmaPrint(QScriptContext* context,
54  QScriptEngine* engine);
55  static QScriptValue ecmaDebug(QScriptContext* context,
56  QScriptEngine* engine);
57  static QScriptValue ecmaWarning(QScriptContext* context,
58  QScriptEngine* engine);
59  static QScriptValue ecmaCritical(QScriptContext* context,
60  QScriptEngine* engine);
61  static QScriptValue ecmaMessageHandler(QScriptContext* context,
62  QScriptEngine* engine, RS::MessageType type);
63  static QScriptValue ecmaGray(QScriptContext* context,
64  QScriptEngine* engine);
65  static QScriptValue ecmaQtEscape(QScriptContext* context,
66  QScriptEngine* engine);
67  static QScriptValue ecmaDestroy(QScriptContext* context,
68  QScriptEngine* engine);
69  static QScriptValue ecmaQPainterDestroy(QScriptContext* context,
70  QScriptEngine* engine);
71  static QScriptValue ecmaQPrinterDestroy(QScriptContext* context,
72  QScriptEngine* engine);
73  static QScriptValue ecmaQXmlResultItemsDestroy(QScriptContext* context,
74  QScriptEngine* engine);
75  static QScriptValue ecmaQXmlStreamWriterDestroy(QScriptContext* context,
76  QScriptEngine* engine);
77  static QScriptValue ecmaQObjectFindChild(QScriptContext* context,
78  QScriptEngine* engine);
79  static QScriptValue ecmaQObjectGetChildren(QScriptContext* context,
80  QScriptEngine* engine);
81 // static QScriptValue ecmaQDateTimeToString(QScriptContext *context,
82 // QScriptEngine *engine);
83  static QScriptValue ecmaQDomNodeAppendChild(QScriptContext* context,
84  QScriptEngine* engine);
85  static QScriptValue ecmaQDomNodeRemoveChild(QScriptContext* context,
86  QScriptEngine* engine);
87  static QScriptValue ecmaAttachDebugger(QScriptContext* context,
88  QScriptEngine* engine);
89  static QScriptValue ecmaDetachDebugger(QScriptContext* context,
90  QScriptEngine* engine);
91  static QScriptValue ecmaCollectGarbage(QScriptContext* context,
92  QScriptEngine* engine);
93  static QScriptValue ecmaQLayoutGetWidth(QScriptContext* context,
94  QScriptEngine* engine);
95  static QScriptValue ecmaQByteArrayToString(QScriptContext *context,
96  QScriptEngine *engine);
97  static QScriptValue ecmaQUrlQueryItems(QScriptContext *context,
98  QScriptEngine *engine);
99  static QScriptValue ecmaMSleep(QScriptContext* context,
100  QScriptEngine* engine);
101  static QScriptValue ecmaArguments(QScriptContext* context,
102  QScriptEngine* engine);
103  static QScriptValue ecmaGetObjectId(QScriptContext* context,
104  QScriptEngine* engine);
105  static QScriptValue ecmaImportExtension(QScriptContext *context,
106  QScriptEngine *engine);
107  static QScriptValue ecmaIsDeleted(QScriptContext *context,
108  QScriptEngine *engine);
109  static QScriptValue ecmaSerialize(QScriptContext *context,
110  QScriptEngine *engine);
111  static QScriptValue ecmaBlockEvents(QScriptContext* context,
112  QScriptEngine* engine);
113  static QScriptValue ecmaUnblockEvents(QScriptContext* context,
114  QScriptEngine* engine);
115  static QScriptValue ecmaGetOpt(QScriptContext* context,
116  QScriptEngine* engine);
117  static QScriptValue ecmaAddApplicationFont(QScriptContext* context,
118  QScriptEngine* engine);
119  static QScriptValue ecmaDownload(QScriptContext* context,
120  QScriptEngine* engine);
122  QScriptContext* context, QScriptEngine* engine);
123 
124  static bool eventFilter(void *message);
125 
126  static QScriptValue throwError(const QString& message,
127  QScriptContext* context);
128 
129 public slots:
130  void triggerActionApplicationLevel(const QString& scriptFile) {
132  }
134  if (engine == NULL) {
135  qWarning("REcmaHandler::installTranslationFunctions: "
136  "engine is NULL");
137  return;
138  }
139  engine->installTranslatorFunctions();
140  }
141  void exceptionHandler(const QScriptValue& exception);
142 
143 protected:
144  QString readScript(const QString& fileName);
145 
146 private:
147  QScriptEngine* engine;
148  QScriptEngineDebugger* debugger;
149 
150  static bool translatorInstalled;
151  static QAbstractEventDispatcher::EventFilter defaultEventFilter;
152 };
153 
155 
156 #endif // RECMASCRIPTHANDLER_H