QCAD
Open Source 2D CAD
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 "RNonCopyable.h"
30 #include "RDocumentInterface.h"
31 #include "RAction.h"
32 #include "RGuiAction.h"
33 #include "RScriptAction.h"
34 #include "RMainWindow.h"
35 
36 class RFileImporterAdapter;
37 
38 #ifndef RDEFAULT_QSTRING
39 #define RDEFAULT_QSTRING QString()
40 #endif
41 
42 #ifndef RDEFAULT_QSTRINGLIST
43 #define RDEFAULT_QSTRINGLIST QStringList()
44 #endif
45 
46 
54 
55 public:
56 
58 
59  virtual ~RScriptHandler() { }
60 
65  virtual QList<QString> getSupportedFileExtensions() = 0;
66 
67  virtual void init(const QString& autostartFile = QString::null, const QStringList& arguments = RDEFAULT_QSTRINGLIST);
68 
72  virtual void doScript(const QString& scriptFile, const QStringList& arguments = RDEFAULT_QSTRINGLIST) = 0;
73 
77  virtual QVariant eval(const QString& script, const QString& fileName = RDEFAULT_QSTRING) = 0;
78 
82  virtual QVariant evalGlobal(const QString& script, const QString& fileName = RDEFAULT_QSTRING) = 0;
83 
87  virtual RFileImporterAdapter* createFileImporter(const QString& className, RDocument& document) = 0;
88 
93  virtual bool isRunning() = 0;
94 
95  virtual void abort() = 0;
96 
97  virtual bool hasUncaughtExceptions() = 0;
98 
99  static void triggerActionApplicationLevel(const QString& scriptFile, RGuiAction* guiAction = NULL);
100 
104  virtual void createActionDocumentLevel(const QString& scriptFile, RGuiAction* guiAction, RDocumentInterface* documentInterface = NULL) = 0;
105  virtual void createActionApplicationLevel(const QString& scriptFile, RGuiAction* guiAction) = 0;
106 
114  template<class T>
115  void createActionDocumentLevelT(const QString& scriptFile,
116  RGuiAction* guiAction, RDocumentInterface* documentInterface) {
117  if (documentInterface == NULL) {
118  documentInterface = RMainWindow::getDocumentInterfaceStatic();
119  if (documentInterface == NULL) {
120  qWarning("RScriptHandler::createActionDocumentLevelT(): No document interface given or found.");
121  return;
122  }
123  }
124 
125  RScriptAction* a = new T(scriptFile, guiAction);
126  a->setDocumentInterface(documentInterface);
127  documentInterface->setCurrentAction(a);
128  }
129 
138  template<class T>
139  void createActionApplicationLevelT(const QString& scriptFile, RGuiAction* guiAction) {
140  T action(scriptFile, guiAction);
141  action.beginEvent();
142  action.finishEvent();
143  }
144 
145 protected:
146  static QString autostartScriptName;
147 };
148 
150 
151 #endif
RDEFAULT_QSTRINGLIST
#define RDEFAULT_QSTRINGLIST
Definition: RObject.h:44
RScriptHandler::createActionDocumentLevel
virtual void createActionDocumentLevel(const QString &scriptFile, RGuiAction *guiAction, RDocumentInterface *documentInterface=NULL)=0
Creates a script based action for this script handler.
RScriptHandler::isRunning
virtual bool isRunning()=0
RScriptHandler::doScript
virtual void doScript(const QString &scriptFile, const QStringList &arguments=RDEFAULT_QSTRINGLIST)=0
Runs the given script file.
RDocumentInterface.h
RScriptHandler::createFileImporter
virtual RFileImporterAdapter * createFileImporter(const QString &className, RDocument &document)=0
Creates a file importer from the given class name and for the given document.
RScriptHandler::RScriptHandler
RScriptHandler()
Definition: RScriptHandler.h:57
RGuiAction
Abstract base class for GUI action classes.
Definition: RGuiAction.h:64
RScriptAction
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RScriptAction.h:35
RScriptHandler::createActionApplicationLevel
virtual void createActionApplicationLevel(const QString &scriptFile, RGuiAction *guiAction)=0
RScriptHandler::createActionDocumentLevelT
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:115
RDEFAULT_QSTRING
#define RDEFAULT_QSTRING
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RDebug.h:48
RGuiAction.h
RNonCopyable.h
RAction::setDocumentInterface
void setDocumentInterface(RDocumentInterface *di)
Definition: RAction.h:113
RScriptHandler::eval
virtual QVariant eval(const QString &script, const QString &fileName=RDEFAULT_QSTRING)=0
Evaluates the given script code.
RScriptHandler::abort
virtual void abort()=0
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(RMath *)
RScriptHandler::getSupportedFileExtensions
virtual QList< QString > getSupportedFileExtensions()=0
core_global.h
RDocumentInterface::setCurrentAction
void setCurrentAction(RAction *action)
Sets the current action.
Definition: RDocumentInterface.cpp:363
RDocument
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition: RDocument.h:72
RScriptAction.h
RScriptHandler::autostartScriptName
static QString autostartScriptName
Copyright (c) 2011-2018 by Andrew Mustun.
Definition: RScriptHandler.h:146
RScriptHandler::~RScriptHandler
virtual ~RScriptHandler()
Definition: RScriptHandler.h:59
RMainWindow.h
RScriptHandler
Abstract base class for all script handlers.
Definition: RScriptHandler.h:53
RScriptHandler::hasUncaughtExceptions
virtual bool hasUncaughtExceptions()=0
RMainWindow::getDocumentInterfaceStatic
static RDocumentInterface * getDocumentInterfaceStatic()
Definition: RMainWindow.cpp:179
init
void init(void basePath)
Definition: AddBlockInit.js:2
RScriptHandler::createActionApplicationLevelT
void createActionApplicationLevelT(const QString &scriptFile, RGuiAction *guiAction)
Creates a new application level action by instantiating class T.
Definition: RScriptHandler.h:139
RAction.h
RDocumentInterface
Interface for interaction between a graphics document and a user.
Definition: RDocumentInterface.h:85
RScriptHandler::evalGlobal
virtual QVariant evalGlobal(const QString &script, const QString &fileName=RDEFAULT_QSTRING)=0
Evaluates the given script code in a global context.
QCADCORE_EXPORT
#define QCADCORE_EXPORT
Definition: core_global.h:10