diff options
Diffstat (limited to 'src/app/UserAction/kraction.h')
-rw-r--r-- | src/app/UserAction/kraction.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/src/app/UserAction/kraction.h b/src/app/UserAction/kraction.h new file mode 100644 index 0000000..b801e91 --- /dev/null +++ b/src/app/UserAction/kraction.h @@ -0,0 +1,170 @@ +// +// C++ Interface: kraction +// +// Description: +// +// +// Author: Krusader Krew <http://www.krusader.org>, (C) 2004, 2006 +// +// Copyright: See COPYING file that comes with this distribution +// +// + +#ifndef KRACTION_H +#define KRACTION_H + +#include <tdeaction.h> +#include <tdeprocess.h> +#include <kdialogbase.h> +#include "kractionbase.h" + +class UserActionProperties; +class TQTextEdit; +class TDEActionCollection; +class TQDomElement; +class TQDomDocument; + +/** + * This subclass of TDEAction extends it with an individual executor and a struct UserActionProperties. It is used to integrate useractions into KDE's TDEAction-System + * @author Jonas Bähr (http://www.jonas-baehr.de) + */ +class KrAction: public TDEAction, public KrActionBase { + TQ_OBJECT + + public: + KrAction( TDEActionCollection *parent, const char* name ); + ~KrAction(); + + /** + * This chekcs if the KrAction is for a specific file / location available + * @param currentURL Check for this file + * @return true if the KrAction if available + */ + bool isAvailable( const KURL& currentURL ); + + bool xmlRead( const TQDomElement& element ); + TQDomElement xmlDump( TQDomDocument& doc ) const; + + void setName( const char* ) { /* empty reimplementation to prevent a name-change */ }; + + TQString category() const { return _category; }; + void setCategory( const TQString& category ) { _category = category; }; + + TQString command() const { return _command; }; + void setCommand( const TQString& command ) { _command = command; }; + + TQString user() const { return _user; }; + void setUser( const TQString& user ) { _user = user; }; + + TQString startpath() const { return _startpath; }; + void setStartpath( const TQString& startpath ) { _startpath = startpath; }; + + ExecType execType() const { return _execType; }; + void setExecType( ExecType execType ) { _execType = execType; }; + + bool acceptURLs() const { return _acceptURLs; }; + void setAcceptURLs(const bool& acceptURLs) { _acceptURLs = acceptURLs; }; + + bool confirmExecution() const { return _confirmExecution; }; + void setConfirmExecution(const bool& confirmExecution) { _confirmExecution = confirmExecution; }; + + TQStringList showonlyProtocol() const { return _showonlyProtocol; }; + void setShowonlyProtocol( const TQStringList& showonlyProtocol ) { _showonlyProtocol = showonlyProtocol; }; + + TQStringList showonlyPath() const { return _showonlyPath; }; + void setShowonlyPath( const TQStringList& showonlyPath ) { _showonlyPath = showonlyPath; }; + + TQStringList showonlyMime() const { return _showonlyMime; }; + void setShowonlyMime( const TQStringList& showonlyMime ) { _showonlyMime = showonlyMime; }; + + TQStringList showonlyFile() const { return _showonlyFile; }; + void setShowonlyFile( const TQStringList& showonlyFile ) { _showonlyFile = showonlyFile; }; + + bool doSubstitution() const { + return true; + } + + TQString text() const { + return TDEAction::text(); + } + + public slots: + void exec() { + KrActionBase::exec(); + } + + + private: + void readCommand( const TQDomElement& element ); + TQDomElement dumpCommand( TQDomDocument& doc ) const; + + void readAvailability( const TQDomElement& element ); + TQDomElement dumpAvailability( TQDomDocument& doc ) const; + + TQString _category; + TQString _command; + TQString _user; + TQString _startpath; + ExecType _execType; + bool _acceptURLs; + bool _confirmExecution; + TQStringList _showonlyProtocol; + TQStringList _showonlyPath; + TQStringList _showonlyMime; + TQStringList _showonlyFile; + +}; + +class TQFont; +/** + * This displays the output of a process + * @author Shie Erlich, Jonas Bähr + */ +class KrActionProcDlg: public KDialogBase { + TQ_OBJECT + + public: + KrActionProcDlg( TQString caption, bool enableStderr = false, TQWidget *parent = 0 ); + + protected slots: + void addStderr( TDEProcess *proc, char *buffer, int buflen ); + void addStdout( TDEProcess *proc, char *buffer, int buflen ); + void toggleFixedFont( bool state ); + void slotUser1(); ///< This is used to save the buffer to disc + + private: + TQTextEdit *_stdout, *_stderr, *_currentTextEdit; + TQFont normalFont, fixedFont; + private slots: + void currentTextEditChanged(); +}; + +/** + * This executes a command of a UserAction + * @author Shie Erlich, Jonas Bähr + * @todo jonas: call a list of commands separately (I began it but it doesn't work) + */ +class KrActionProc: public TQObject { + TQ_OBJECT + + public: + + KrActionProc( KrActionBase* action ); + virtual ~KrActionProc(); + void start( TQString cmdLine ); + void start( TQStringList cmdLineList ); + + protected slots: + void kill() { _proc->kill( SIGINT ); } + void processExited( TDEProcess *proc ); + + private: + KrActionBase* _action; + TDEProcess *_proc; + TQString _stdout; + TQString _stderr; + KrActionProcDlg *_output; +}; + + +#endif //KRACTION_H |