Warning, file /office/kile/src/scripting/kilescriptobject.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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