00001
00002
00003 #ifndef MYTH_TERMINAL_H
00004 #define MYTH_TERMINAL_H
00005
00006
00007 #include <QObject>
00008 #include <QString>
00009 #include <QProcess>
00010 #include <QMutex>
00011
00012
00013 #include "mythexp.h"
00014 #include "settings.h"
00015
00016 class MythTerminalKeyFilter;
00017 class MPUBLIC MythTerminal : public TransListBoxSetting
00018 {
00019 Q_OBJECT
00020
00021 public:
00022 MythTerminal(QString program, QStringList arguments);
00023 virtual void deleteLater(void)
00024 { TeardownAll(); TransListBoxSetting::deleteLater(); }
00025
00026 public slots:
00027 void Start(void);
00028 void Kill(void);
00029 bool IsDone(void) const;
00030 void AddText(const QString&);
00031
00032 protected slots:
00033 void ProcessHasText(void);
00034 void ProcessSendKeyPress(QKeyEvent *e);
00035 void ProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
00036
00037 protected:
00038 virtual ~MythTerminal() { TeardownAll(); }
00039 void TeardownAll(void);
00040
00041 mutable QMutex lock;
00042 bool running;
00043 QProcess *process;
00044 QString program;
00045 QStringList arguments;
00046 QString curLabel;
00047 uint curValue;
00048 MythTerminalKeyFilter *filter;
00049 };
00050
00051 class MPUBLIC MythTerminalKeyFilter : public QObject
00052 {
00053 Q_OBJECT
00054
00055 signals:
00056 void KeyPressd(QKeyEvent *e);
00057
00058 protected:
00059 bool eventFilter(QObject *obj, QEvent *event);
00060 };
00061
00062 #endif // MYTH_TERMINAL_H