1 #ifndef QtScriptEngine_h
2 #define QtScriptEngine_h
3 
4 #include <map>
5 #include <set>
6 #include <vector>
7 
8 #include "IScriptEngine.h"
9 #include "ADM_muxerInternal.h"
10 #include "ADM_coreVideoEncoderInternal.h"
11 #include "audioencoderInternal.h"
12 
13 struct QMetaObject;
14 class QScriptContext;
15 class QScriptEngine;
16 class QScriptValue;
17 class QString;
18 
19 namespace ADM_qtScript
20 {
21     class AudioEncoder;
22     class Muxer;
23     class VideoEncoder;
24     class AdmScriptMapper;
25 
26     class QtScriptEngine : public IScriptEngine
27     {
28     private:
29         IEditor *_editor;
30         std::set<eventHandlerFunc*> _eventHandlerSet;
31         ADM_qtScript::AdmScriptMapper *_mapper;
32 
33         void copyEnumsToScriptObject(QScriptEngine *engine, const QMetaObject *metaObject, QScriptValue *object);
34         static QScriptValue executeFunction(QScriptContext *context, QScriptEngine *engine);
35         static QScriptValue includeFunction(QScriptContext *context, QScriptEngine *engine);
36         static QScriptValue printFunction(QScriptContext *context, QScriptEngine *engine);
37         void registerAudioEncoderPlugins(QScriptEngine *engine);
38         void registerMuxerPlugins(QScriptEngine *engine, std::map<ADM_dynMuxer*, ADM_qtScript::Muxer*>* muxers);
39 		void registerDialogClasses(QScriptEngine *engine);
40         void registerScriptClasses(
41             QScriptEngine *engine, std::map<ADM_dynMuxer*, ADM_qtScript::Muxer*>* muxers,
42             std::map<ADM_videoEncoder6*, ADM_qtScript::VideoEncoder*>* videoEncoders);
43         void registerScriptEnums(
44             QScriptEngine *engine, const QString& parentPropertyName, const QMetaObject* metaObject);
45         void registerVideoEncoderPlugins(
46             QScriptEngine *engine, std::map<ADM_videoEncoder6*, ADM_qtScript::VideoEncoder*>* encoders);
47         void registerVideoFilterPlugins(QScriptEngine *engine);
48         bool runScript(const QString& script, const QString& name, RunMode mode);
49 
50     public:
51         QtScriptEngine();
52         ~QtScriptEngine();
53 
54         void callEventHandlers(EventType eventType, const char *fileName, int lineNo, const char *message);
55         Capabilities capabilities();
56         IScriptWriter* createScriptWriter();
57 		std::string defaultFileExtension();
58         IEditor* editor();
59         void initialise(IEditor *videoBody);
60         std::string name();
61         int maturityRanking();
62 		void openDebuggerShell();
63         void registerEventHandler(eventHandlerFunc *func);
64         std::string referenceUrl();
65         bool runScript(std::string script, RunMode mode);
66         bool runScriptFile(std::string name, RunMode mode);
67         void unregisterEventHandler(eventHandlerFunc *func);
68     };
69 }
70 #endif
71