QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RScriptHandler.h
Go to the documentation of this file.
1
20#ifndef RSCRIPTHANDLER_H
21#define RSCRIPTHANDLER_H
22
23#include "core_global.h"
24
25#include <QList>
26#include <QMetaType>
27#include <QString>
28
29#include "RDocumentInterface.h"
30#include "RScriptAction.h"
31#include "RMainWindow.h"
32
33class RAction;
34class RDocument;
36class RFileImporterAdapter;
37class RGuiAction;
38class RMainWindow;
39class RScriptAction;
40class RScriptHandler;
41
42
43#ifndef RDEFAULT_QSTRING
44#define RDEFAULT_QSTRING QString()
45#endif
46
47#ifndef RDEFAULT_QSTRINGLIST
48#define RDEFAULT_QSTRINGLIST QStringList()
49#endif
50
51
59
60public:
61
63
64 virtual ~RScriptHandler() { }
65
70 virtual QList<QString> getSupportedFileExtensions() = 0;
71
72 virtual void init(bool main = false);
73
74 virtual void autostart(const QString& autostartFile = RDEFAULT_QSTRING, const QStringList& arguments = RDEFAULT_QSTRINGLIST);
75
79 virtual void doScript(const QString& scriptFile, const QStringList& arguments = RDEFAULT_QSTRINGLIST) = 0;
80
84 virtual QVariant eval(const QString& script, const QString& fileName = RDEFAULT_QSTRING) = 0;
85
89 virtual QVariant evalGlobal(const QString& script, const QString& fileName = RDEFAULT_QSTRING) = 0;
90
94 virtual RFileImporterAdapter* createFileImporter(const QString& className, RDocument& document) = 0;
95
100 virtual bool isRunning() = 0;
101
102 virtual void abort() = 0;
103
104 virtual bool hasUncaughtExceptions() = 0;
105
106 static void triggerActionApplicationLevel(const QString& scriptFile, RGuiAction* guiAction = NULL);
107
111 virtual void createActionDocumentLevel(const QString& scriptFile, RGuiAction* guiAction, RDocumentInterface* documentInterface = NULL) = 0;
112 virtual void createActionApplicationLevel(const QString& scriptFile, RGuiAction* guiAction) = 0;
113
121 template<class T>
122 void createActionDocumentLevelT(const QString& scriptFile,
123 RGuiAction* guiAction, RDocumentInterface* documentInterface) {
124 if (documentInterface == NULL) {
125 documentInterface = RMainWindow::getDocumentInterfaceStatic();
126 if (documentInterface == NULL) {
127 qWarning("RScriptHandler::createActionDocumentLevelT(): No document interface given or found.");
128 return;
129 }
130 }
131
132 RScriptAction* a = new T(scriptFile, guiAction);
133 a->setDocumentInterface(documentInterface);
134 documentInterface->setCurrentAction(a);
135 }
136
145 template<class T>
146 void createActionApplicationLevelT(const QString& scriptFile, RGuiAction* guiAction) {
147 T action(scriptFile, guiAction);
148 action.beginEvent();
149 action.finishEvent();
150 }
151
152protected:
153 static QString autostartScriptName;
154};
155
157
158#endif
int main()
Definition main.cpp:3
void init(void basePath)
Definition AddBlockInit.js:2
#define RDEFAULT_QSTRING
Definition RDebug.h:41
Q_DECLARE_METATYPE(RMath *)
#define RDEFAULT_QSTRINGLIST
Definition RObject.h:47
Abstract base class for all action classes.
Definition RAction.h:57
virtual void setDocumentInterface(RDocumentInterface *di)
Definition RAction.h:108
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Interface for interaction between a graphics document and a user.
Definition RDocumentInterface.h:97
void setCurrentAction(RAction *action)
Sets the current action.
Definition RDocumentInterface.cpp:410
Abstract base class for GUI action classes.
Definition RGuiAction.h:62
Base class for an MDI main application window.
Definition RMainWindow.h:74
static RDocumentInterface * getDocumentInterfaceStatic()
Definition RMainWindow.cpp:183
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RScriptAction.h:34
Abstract base class for all script handlers.
Definition RScriptHandler.h:58
virtual QVariant evalGlobal(const QString &script, const QString &fileName=RDEFAULT_QSTRING)=0
Evaluates the given script code in a global context.
virtual RFileImporterAdapter * createFileImporter(const QString &className, RDocument &document)=0
Creates a file importer from the given class name and for the given document.
void createActionDocumentLevelT(const QString &scriptFile, RGuiAction *guiAction, RDocumentInterface *documentInterface)
Creates a new document level action by instantiating class T and attaching the action to the document...
Definition RScriptHandler.h:122
virtual bool isRunning()=0
virtual ~RScriptHandler()
Definition RScriptHandler.h:64
virtual void createActionDocumentLevel(const QString &scriptFile, RGuiAction *guiAction, RDocumentInterface *documentInterface=NULL)=0
Creates a script based action for this script handler.
virtual bool hasUncaughtExceptions()=0
virtual QVariant eval(const QString &script, const QString &fileName=RDEFAULT_QSTRING)=0
Evaluates the given script code.
virtual void abort()=0
virtual void createActionApplicationLevel(const QString &scriptFile, RGuiAction *guiAction)=0
virtual void doScript(const QString &scriptFile, const QStringList &arguments=RDEFAULT_QSTRINGLIST)=0
Runs the given script file.
RScriptHandler()
Definition RScriptHandler.h:62
static QString autostartScriptName
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RScriptHandler.h:153
virtual QList< QString > getSupportedFileExtensions()=0
void createActionApplicationLevelT(const QString &scriptFile, RGuiAction *guiAction)
Creates a new application level action by instantiating class T.
Definition RScriptHandler.h:146
#define QCADCORE_EXPORT
Definition core_global.h:10
#define NULL
Definition opennurbs_system.h:256