// // C++ Interface: kraction // // Description: // // // Author: Krusader Krew , (C) 2004, 2006 // // Copyright: See COPYING file that comes with this distribution // // #ifndef KRACTION_H #define KRACTION_H #include #include #include #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