1 /* 2 For general Scribus (>=1.3.2) copyright and licensing information please refer 3 to the COPYING file provided with the program. Following this notice may exist 4 a copyright and/or license notice that predates the release of Scribus 1.3.2 5 for which a new license (GPL+exception) is in place. 6 */ 7 #ifndef SCRIPTERIMPL_H 8 #define SCRIPTERIMPL_H 9 10 #include <QObject> 11 #include <QtDebug> 12 13 #include "scribus.h" 14 #include "scribusdoc.h" 15 #include "scribuscore.h" 16 #include "scpaths.h" 17 #include "pythonize.h" 18 #include "api_prefs.h" 19 #include "api_printer.h" 20 #include "api_imageexport.h" 21 #include "api_layer.h" 22 #include "api_page.h" 23 #include "api_dialogs.h" 24 #include "api_window.h" 25 #include "api_document.h" 26 #include "api_color.h" 27 28 // XXX make this INTO method inside a new util.cpp 29 #define RAISE(msg) QApplication::instance()->setProperty("MIKRO_EXCEPTION", QVariant(msg)) 30 #define COLLECTOR ScripterImpl::instance()->collector() 31 #define SCRIPTER ScripterImpl::instance() 32 33 class QString; 34 class ScribusDoc; 35 36 //Q_DECLARE_METATYPE(QList<QVariant*>) 37 38 class ScripterImpl : public QObject 39 { 40 Q_OBJECT 41 Q_PROPERTY(QObject* collector READ collector); 42 Q_PROPERTY(QString language READ language); 43 Q_PROPERTY(QObject* activeDocument READ activeDocument); 44 Q_PROPERTY(QObject* activeWindow READ activeWindow); 45 Q_PROPERTY(QList<QVariant> colors READ colors); 46 Q_PROPERTY(QList<QVariant> fontInfo READ fontInfo); 47 Q_PROPERTY(QList<QVariant> extendedFontInfo READ xFontInfo); 48 49 public: 50 ScripterImpl(); 51 ~ScripterImpl(); 52 static ScripterImpl *instance(); 53 bool init(); 54 bool cleanup(); 55 void addToMainWindowMenu(ScribusMainWindow *mainwin); collector()56 QObject *collector() 57 { 58 return collected; 59 }; 60 61 public slots: 62 void aboutScripter(); 63 QObject *openDocument(const QString & filename); 64 QObject *newDocument( 65 double topMargin, double bottomMargin, 66 double leftMargin, double rightMargin, 67 double pageWidth, double pageHeight, 68 int orientation, int firstPageNr, int unit, int pagesType, 69 int facingPages, int firstPageOrder, int numPages); 70 QObject *fromVariant(const QVariant& v); 71 bool test(); 72 73 signals: 74 void createMenu(QMainWindow *mainwin); 75 76 private: 77 /* 78 collected is used for dumb garbage collection. 79 Use it as a parent to make sure that your object gets deleted 80 inside the scripting environment if it is not needed anymore. 81 */ 82 QObject *collected; 83 Pythonize *python; 84 static ScripterImpl *_instance; 85 QString path; 86 bool runScript(const QString & filename); 87 QString language(); 88 QObject *activeDocument(); 89 QObject *activeWindow(); 90 QList<QVariant> colors(); 91 QList<QVariant> fontInfo(); 92 QList<QVariant> xFontInfo(); 93 }; 94 95 #endif 96