File indexing completed on 2024-05-05 05:05:28
0001 /****************************************************************************** 0002 Copyright (C) 2011-2012 by Holger Danielsson (holger.danielsson@versanet.de) 0003 ******************************************************************************/ 0004 0005 /************************************************************************** 0006 * * 0007 * This program is free software; you can redistribute it and/or modify * 0008 * it under the terms of the GNU General Public License as published by * 0009 * the Free Software Foundation; either version 2 of the License, or * 0010 * (at your option) any later version. * 0011 * * 0012 ***************************************************************************/ 0013 0014 #ifndef KILE_SCRIPT_OBJECT_H 0015 #define KILE_SCRIPT_OBJECT_H 0016 0017 #include <QObject> 0018 #include <QAction> 0019 #include <QMap> 0020 #include <QStringList> 0021 #include <QUrl> 0022 0023 #include <KParts/MainWindow> 0024 0025 class KileInfo; 0026 class KileMainWindow; 0027 0028 0029 namespace KileScript { 0030 0031 ////////////////////////////////// KileAlert object ////////////////////////////////////// 0032 0033 class KileAlert : public QObject 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 KileAlert(QObject *parent, KParts::MainWindow *mainWindow); 0039 virtual ~KileAlert() {} 0040 0041 Q_INVOKABLE void information(const QString &text, const QString &caption = QString()); 0042 Q_INVOKABLE void sorry(const QString &text, const QString &caption = QString()); 0043 Q_INVOKABLE void error(const QString &text, const QString &caption = QString()); 0044 Q_INVOKABLE QString question(const QString &text, const QString &caption = QString()); 0045 Q_INVOKABLE QString warning(const QString &text, const QString &caption = QString()); 0046 0047 private: 0048 KParts::MainWindow *m_mainWindow; 0049 }; 0050 0051 ////////////////////////////////// KileInput object ////////////////////////////////////// 0052 0053 class KileInput : public QObject 0054 { 0055 Q_OBJECT 0056 0057 public: 0058 explicit KileInput(QObject *parent); 0059 virtual ~KileInput() {} 0060 0061 // get input values 0062 Q_INVOKABLE QString getListboxItem(const QString &caption, const QString &label, const QStringList &list); 0063 Q_INVOKABLE QString getText(const QString &caption, const QString &label); 0064 Q_INVOKABLE QString getLatexCommand(const QString &caption, const QString &label); 0065 Q_INVOKABLE int getInteger(const QString &caption, const QString &label, int min = INT_MIN, int max = INT_MAX); 0066 Q_INVOKABLE int getPosInteger(const QString &caption, const QString &label, int min = 1, int max = INT_MAX); 0067 0068 private: 0069 KileMainWindow *m_mainWindow; 0070 QString getItem(const QString& caption, const QString& label, const QStringList &itemlist); 0071 QStringList checkCaptionAndLabel(const QString& caption, const QString& label); 0072 }; 0073 0074 ////////////////////////////////// KileWizard object ////////////////////////////////////// 0075 0076 class KileWizard : public QObject 0077 { 0078 Q_OBJECT 0079 0080 public: 0081 KileWizard(QObject *parent, KileInfo *kileInfo, const QMap<QString,QAction *> *scriptActions); 0082 virtual ~KileWizard() {} 0083 0084 // wizards 0085 Q_INVOKABLE void tabular(); 0086 Q_INVOKABLE void array(); 0087 Q_INVOKABLE void tabbing(); 0088 Q_INVOKABLE void floatEnvironment(); 0089 Q_INVOKABLE void mathEnvironment(); 0090 Q_INVOKABLE void postscript(); 0091 Q_INVOKABLE void pdf(); 0092 0093 private: 0094 KileInfo *m_kileInfo; 0095 const QMap<QString,QAction *> *m_scriptActions; 0096 0097 bool triggerAction(const QString &name); 0098 0099 }; 0100 0101 ////////////////////////////////// KileJavaScript object ////////////////////////////////////// 0102 0103 class KileJavaScript : public QObject 0104 { 0105 Q_OBJECT 0106 0107 public: 0108 explicit KileJavaScript(QObject *parent); 0109 virtual ~KileJavaScript() {} 0110 0111 void setScriptname(const QString &name) { 0112 m_scriptname = name; 0113 } 0114 0115 Q_INVOKABLE QString name() const { 0116 return m_scriptname; 0117 } 0118 Q_INVOKABLE QString caption(); 0119 0120 private: 0121 QString m_scriptname; 0122 0123 }; 0124 0125 ////////////////////////////////// KileFile object ////////////////////////////////////// 0126 0127 class KileFile : public QObject 0128 { 0129 Q_OBJECT 0130 0131 public: 0132 0133 enum AccessResult { 0134 ACCESS_OK = 0, 0135 ACCESS_FAILED, 0136 ACCESS_DENIED 0137 }; 0138 0139 KileFile(QObject *parent, KileInfo *kileInfo); 0140 virtual ~KileFile() {} 0141 0142 // Read the contents of a file. If no filename is given, getOpenFileName() is called first 0143 Q_INVOKABLE QMap<QString, QVariant> read(const QString& filename) const; 0144 Q_INVOKABLE QMap<QString, QVariant> read() const; 0145 0146 // Write text into a file. If no filename is given, getSaveFileName() is called first 0147 Q_INVOKABLE QMap<QString, QVariant> write(const QString& filename, const QString& text) const; 0148 Q_INVOKABLE QMap<QString, QVariant> write(const QString& text) const; 0149 0150 // Open/Save dialogs from KFileDialog 0151 Q_INVOKABLE QString getOpenFileName(const QUrl &url = QUrl(), const QString& filter = QString()); 0152 Q_INVOKABLE QString getSaveFileName(const QUrl &url = QUrl(), const QString& filter = QString()); 0153 0154 private: 0155 KileInfo *m_kileInfo; 0156 0157 QMap<QString, QVariant> actionCancelled() const; 0158 }; 0159 0160 ////////////////////////////////// KileScript object ////////////////////////////////////// 0161 0162 class KileScriptObject : public QObject 0163 { 0164 Q_OBJECT 0165 0166 Q_PROPERTY(QObject* alert READ getAlert) 0167 Q_PROPERTY(QObject* input READ getInput) 0168 Q_PROPERTY(QObject* wizard READ getWizard) 0169 Q_PROPERTY(QObject* script READ getScript) 0170 Q_PROPERTY(QObject* file READ getFile) 0171 0172 public: 0173 KileScriptObject(QObject *parent, KileInfo *kileInfo, const QMap<QString,QAction *> *scriptActions); 0174 virtual ~KileScriptObject() {} 0175 0176 QObject* getAlert() { 0177 return m_kileAlert; 0178 } 0179 QObject* getInput() { 0180 return m_kileInput; 0181 } 0182 QObject* getWizard() { 0183 return m_kileWizard; 0184 } 0185 QObject* getScript() { 0186 return m_kileScript; 0187 } 0188 QObject* getFile() { 0189 return m_kileFile; 0190 } 0191 0192 void setScriptname(const QString &name); 0193 0194 private: 0195 KileInfo* m_kileInfo; 0196 0197 KileAlert *m_kileAlert; 0198 KileInput *m_kileInput; 0199 KileWizard *m_kileWizard; 0200 KileJavaScript *m_kileScript; 0201 KileFile *m_kileFile; 0202 }; 0203 0204 } 0205 0206 #endif 0207