diff options
Diffstat (limited to 'quanta/treeviews/scripttreeview.h')
-rw-r--r-- | quanta/treeviews/scripttreeview.h | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/quanta/treeviews/scripttreeview.h b/quanta/treeviews/scripttreeview.h new file mode 100644 index 00000000..7cf2b145 --- /dev/null +++ b/quanta/treeviews/scripttreeview.h @@ -0,0 +1,220 @@ +/*************************************************************************** + scripttreeview.h - description + ------------------- + begin : Thu Sep 16 2003 + copyright : (C) 2003-2004 by Andras Mantia <[email protected]> + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; version 2 of the License. * + * * + ***************************************************************************/ +#ifndef SCRIPTTREEVIEW_H +#define SCRIPTTREEVIEW_H + +//own includes +#include "basetreeview.h" + +/** + * @short treeview with all in Quanta available scripts. + * + * You can manage and excecute scripts from here. + * + * There are local and global scripts in different branches. + * + * For every script should exist an .info file! + * + * The .info file is an xhtml file with the extention .info and + * must be in one folder together with the script. + * + * Inside of your .info file should be an options tag like this + * example: + * + * <options editor="kmdr-editor" interpreter="kmdr-executor" /> + * + * Here is defined which program is used for editing and executing the script. + * + * @author Andras Mantia <[email protected]> + */ +class ScriptTreeView : public BaseTreeView { + Q_OBJECT + + +public: + ScriptTreeView(QWidget *parent, const char *name = 0L); + ~ScriptTreeView(); + +protected slots: + + /** + * displays the RBM + * + * + * @param listView KListView where the event comes from + * + * @param item QListViewItem where the mousepointer is hovering + * + * @param point QPoint coordinates of the event + * + */ + virtual void slotMenu(KListView *listView, QListViewItem *item, const QPoint &point); + + /** + * slot of QListView + * + * shows the .info file for the script + * + * @param item the selected QListViewItem + */ + virtual void slotSelectFile(QListViewItem *item); + + /** + * slot for the RBM + * + * invokes the editor for a script + */ + void slotEditScript(); + + /** + * slot for the RBM + * + * opens the script in Quanta + * + * if @ref infoOptionValue can not find the definition of the editor + * in the .info file the script will be opened in Quanta + */ + void slotEditInQuanta(); + + /** + * slot for the RBM + * + * opens the .info file of the script in Quanta + */ + void slotEditDescription(); + + /** + * slot for the RBM + * + * excecutes the script + * + * If @ref infoOptionValue can not find the definition of the interpreter + * in the .info file you will get a open-with dialog to choose a program. + */ + void slotRun(); + + /** + * slot for the RBM + * + * opens an dialog to assign an action to this script + */ + void slotAssignAction(); + + /** + * slot for the RBM + * + * packs and sends the script as attachment to an email + */ + void slotSendScriptInMail(); + + /** + * slot for the RBM + * + * packs and uploads the script to the main server + */ + void slotUploadScript(); + + /** + * slot for the RBM + * + * shows .info file for the script + * + * calls @ref slotSelectFile + */ + void slotProperties(); + +protected: + + /** + * don't need this in the class but it is abstract in the base class + * so I need to implement it + */ + virtual KFileTreeBranch* newBranch(const KURL& url) + { + Q_UNUSED(url) + return 0l; + }; + +signals: + + /** + * emited from @ref slotSelectFile to display the .info file + */ + void openFileInPreview(const KURL&); + + /** + * emited from @ref slotAssignAction to open the assignment dialog + */ + void assignActionToScript(const KURL&, const QString&); + + /** + * emited to make the script describtion visible + */ + void showPreviewWidget(bool); + + /** + * emitted to request downloading of a script from the main server + */ + void downloadScript(); + + /** + * request to upload the @ref fileName script tarball + */ + void uploadScript(const QString& fileName); + +private: + /** + * make the default constructor private to force the use of the other one + */ + ScriptTreeView() { }; + + /** + * creates the URL of the .info file + * + * @param url URL of the script file + * @param htmlVersion if true returns the HTML version of the file + * + * @return URL of the matching .info file (no check is done if the file exists) + */ + KURL infoFile(const KURL& url, bool htmlVersion = false); + + /** + * query options from the .info file + * + * inside of your .info file only the first options tag is located + * + * @param infoURL URL of the .info file + * + * @param optionName name of the option you want to query + * + * @return the value of the option + */ + QString infoOptionValue(const KURL& infoURL, const QString& optionName); + + /** Create a script tarball which can be uploaded or sent in email. Returns + * the name of the created file or QString::null if creation has failed. + */ + QString createScriptTarball(); + + /** + * remember the menu for manipulation + */ + KPopupMenu *m_fileMenu; + KPopupMenu *m_folderMenu; + + int m_downloadMenuId; +}; + +#endif |