Canorus 0.0
externprogram.h
Go to the documentation of this file.
1
8#ifndef _EXTERN_PROGRAM_H_
9#define _EXTERN_PROGRAM_H_
10
11// Includes
12#include <QObject>
13#include <QProcess>
14#include <QStringList>
15
16// Forward declarations
17
18// This class is used to run a program in the background
19// and to get it's input/output via signals
20
21// Class definition
23{
24 Q_OBJECT
25
26public:
27 CAExternProgram( bool bRcvStdErr = true, bool bRcvStdOut = true );
29
30 void setProgramName( const QString &roProgram );
31 void setProgramPath( const QString &roPath );
32 // Warning: Setting all parameters overwrites all
33 // parameters added via addParameter method!
34 void setParameters( const QStringList &roParams );
35 void inline setParamDelimiter( QString oDelimiter = " " )
36 { _oParamDelimiter = oDelimiter; }
37
38 inline const QStringList &getParameters() { return _oParameters; }
39 inline bool getRunning()
40 { return _poExternProgram->state() == QProcess::Running; }
41 inline const QString &getParamDelimiter() { return _oParamDelimiter; }
42 int getExitState();
43
44 void addParameter( const QString &roParam, bool bAddDelimiter = true );
45 inline void clearParameters() { _oParameters.clear(); }
46 bool execProgram( const QString &roCwd = "." );
47 inline bool waitForFinished ( int iMSecs ) { return _poExternProgram->waitForFinished( iMSecs ); }
48
49signals:
50 void nextOutput( const QByteArray &roData );
51 void programExited( int iExitCode );
52
53protected slots:
54 void rcvProgramStdOut() { rcvProgramOutput( _poExternProgram->readAllStandardOutput() ); }
55 void rcvProgramStdErr() { rcvProgramOutput( _poExternProgram->readAllStandardError() ); }
56 void programError( QProcess::ProcessError ) { programExited(); }
57 void programFinished( int, QProcess::ExitStatus ) { programExited(); }
58
59protected:
60 void rcvProgramOutput( const QByteArray &roData );
61 void programExited();
62
63 // References to the real objects(!)
64 QProcess *_poExternProgram; // Process object running the watched program
65 QString _oProgramName; // Program name to be run
66 QString _oProgramPath; // Program path being added to the program name
67 QStringList _oParameters; // List of program parameters
68 QString _oParamDelimiter; // delimiter between the single parameters
69 bool _bRcvStdErr; // 'true': Receive program output from stderr
70};
71
72#endif // _EXTERN_PROGRAM_
73
Start a program as extern background process.
Definition: externprogram.h:23
bool _bRcvStdErr
Definition: externprogram.h:69
QString _oProgramPath
Definition: externprogram.h:66
const QStringList & getParameters()
Definition: externprogram.h:38
QProcess * _poExternProgram
Definition: externprogram.h:64
QString _oParamDelimiter
Definition: externprogram.h:68
const QString & getParamDelimiter()
Definition: externprogram.h:41
void setProgramName(const QString &roProgram)
Definition: externprogram.cpp:55
void setParamDelimiter(QString oDelimiter=" ")
Definition: externprogram.h:35
bool execProgram(const QString &roCwd=".")
Definition: externprogram.cpp:157
void addParameter(const QString &roParam, bool bAddDelimiter=true)
Definition: externprogram.cpp:132
void programFinished(int, QProcess::ExitStatus)
Definition: externprogram.h:57
int getExitState()
Definition: externprogram.cpp:111
QStringList _oParameters
Definition: externprogram.h:67
void programError(QProcess::ProcessError)
Definition: externprogram.h:56
void rcvProgramStdOut()
Definition: externprogram.h:54
void programExited()
Definition: externprogram.cpp:216
~CAExternProgram()
Definition: externprogram.cpp:37
QString _oProgramName
Definition: externprogram.h:65
void nextOutput(const QByteArray &roData)
void rcvProgramOutput(const QByteArray &roData)
Definition: externprogram.cpp:197
CAExternProgram(bool bRcvStdErr=true, bool bRcvStdOut=true)
Definition: externprogram.cpp:23
void rcvProgramStdErr()
Definition: externprogram.h:55
bool waitForFinished(int iMSecs)
Definition: externprogram.h:47
void programExited(int iExitCode)
void setParameters(const QStringList &roParams)
Definition: externprogram.cpp:93
void setProgramPath(const QString &roPath)
Definition: externprogram.cpp:73
void clearParameters()
Definition: externprogram.h:45
bool getRunning()
Definition: externprogram.h:39