Mercurial > hg > easyhg
view hgrunner.h @ 111:151209bc5bd6
* Fixes to terminal lifecycle (only the first of a series of interactive commands was working before). Also switch from openpty to POSIX/Unix98 openpt
author | Chris Cannam |
---|---|
date | Fri, 26 Nov 2010 16:28:18 +0000 |
parents | 0f039d3cc38e |
children | 5fc7b4fc77a8 |
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ /* EasyMercurial Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen Copyright (c) 2010 Chris Cannam Copyright (c) 2010 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information. */ #ifndef HGRUNNER_H #define HGRUNNER_H #include "hgaction.h" #include <QProgressBar> #include <QProcess> #include <QByteArray> #include <QRect> #include <QFile> #include <deque> class HgRunner : public QProgressBar { Q_OBJECT public: HgRunner(QWidget * parent = 0); ~HgRunner(); void requestAction(HgAction action); /*!!! bool isCommandRunning(); void killCurrentCommand(); void hideProgBar(); */ signals: void commandCompleted(HgAction action, QString stdout); void commandFailed(HgAction action, QString stderr); private slots: void started(); void finished(int procExitCode, QProcess::ExitStatus procExitStatus); void dataReadyStdout(); void dataReadyStderr(); private: void checkQueue(); void startCommand(HgAction action); QString getHgBinaryName(); void closeProcInput(); void killCurrentCommand(); void noteUsername(QString); void noteRealm(QString); void getUsername(); void getPassword(); void checkPrompts(QString); void openTerminal(); void closeTerminal(); int m_ptyMasterFd; int m_ptySlaveFd; QString m_ptySlaveFilename; QFile *m_procInput; bool m_isRunning; QProcess *m_proc; QString m_stdout; QString m_stderr; QString m_userName; QString m_realm; typedef std::deque<HgAction> ActionQueue; ActionQueue m_queue; HgAction m_currentAction; }; #endif // HGRUNNER_H