Chris@57: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@57: Chris@57: /* Chris@57: EasyMercurial Chris@57: Chris@57: Based on HgExplorer by Jari Korhonen Chris@57: Copyright (c) 2010 Jari Korhonen Chris@57: Copyright (c) 2010 Chris Cannam Chris@57: Copyright (c) 2010 Queen Mary, University of London Chris@57: Chris@57: This program is free software; you can redistribute it and/or Chris@57: modify it under the terms of the GNU General Public License as Chris@57: published by the Free Software Foundation; either version 2 of the Chris@57: License, or (at your option) any later version. See the file Chris@57: COPYING included with this distribution for more information. Chris@57: */ Chris@57: jtkorhonen@0: #ifndef HGRUNNER_H jtkorhonen@0: #define HGRUNNER_H jtkorhonen@0: Chris@109: #include "hgaction.h" Chris@109: jtkorhonen@0: #include jtkorhonen@0: #include jtkorhonen@0: #include jtkorhonen@0: #include Chris@75: #include jtkorhonen@0: Chris@109: #include Chris@109: jtkorhonen@0: class HgRunner : public QProgressBar jtkorhonen@0: { jtkorhonen@0: Q_OBJECT jtkorhonen@0: Chris@62: public: Chris@172: HgRunner(QString myDirPath, QWidget * parent = 0); Chris@62: ~HgRunner(); jtkorhonen@0: Chris@109: void requestAction(HgAction action); Chris@182: void killCurrentActions(); // kill anything running; clear the queue jtkorhonen@0: Chris@109: signals: Chris@142: void commandCompleted(HgAction action, QString stdOut); Chris@142: void commandFailed(HgAction action, QString stdErr); jtkorhonen@0: Chris@109: private slots: Chris@109: void started(); Chris@109: void finished(int procExitCode, QProcess::ExitStatus procExitStatus); Chris@110: void dataReadyStdout(); Chris@110: void dataReadyStderr(); Chris@113: void dataReadyPty(); Chris@62: Chris@62: private: Chris@109: void checkQueue(); Chris@109: void startCommand(HgAction action); Chris@84: void closeProcInput(); Chris@109: void killCurrentCommand(); Chris@75: Chris@84: void noteUsername(QString); Chris@84: void noteRealm(QString); Chris@84: void getUsername(); Chris@84: void getPassword(); Chris@113: bool checkPrompts(QString); Chris@84: Chris@111: void openTerminal(); Chris@111: void closeTerminal(); Chris@111: Chris@180: QString findExtension(); Chris@180: QString findHgBinaryName(); Chris@180: QString unbundleExtension(); Chris@161: Chris@84: int m_ptyMasterFd; Chris@84: int m_ptySlaveFd; Chris@84: QString m_ptySlaveFilename; Chris@113: QFile *m_ptyFile; Chris@62: Chris@84: bool m_isRunning; Chris@84: QProcess *m_proc; Chris@110: QString m_stdout; Chris@110: QString m_stderr; Chris@84: Chris@84: QString m_userName; Chris@84: QString m_realm; Chris@172: Chris@172: QString m_myDirPath; Chris@161: QString m_extensionPath; Chris@62: Chris@109: typedef std::deque ActionQueue; Chris@109: ActionQueue m_queue; Chris@109: HgAction m_currentAction; jtkorhonen@0: }; jtkorhonen@0: jtkorhonen@0: #endif // HGRUNNER_H