You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
krusader/krusader/UserAction/kraction.h

171 lines
5.0 KiB

//
// 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 <kprocess.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