annotate src/hgrunner.h @ 598:5bf32465213c

Add script to pull out an i386-only build from the standard universal build -- it seems 10.5 users are getting the x86 one and it isn't working for them
author Chris Cannam
date Tue, 24 Apr 2012 16:55:26 +0100
parents 012ba1b83328
children ab92f695f776
rev   line source
Chris@57 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@57 2
Chris@57 3 /*
Chris@57 4 EasyMercurial
Chris@57 5
Chris@57 6 Based on HgExplorer by Jari Korhonen
Chris@57 7 Copyright (c) 2010 Jari Korhonen
Chris@560 8 Copyright (c) 2012 Chris Cannam
Chris@560 9 Copyright (c) 2012 Queen Mary, University of London
Chris@57 10
Chris@57 11 This program is free software; you can redistribute it and/or
Chris@57 12 modify it under the terms of the GNU General Public License as
Chris@57 13 published by the Free Software Foundation; either version 2 of the
Chris@57 14 License, or (at your option) any later version. See the file
Chris@57 15 COPYING included with this distribution for more information.
Chris@57 16 */
Chris@57 17
jtkorhonen@0 18 #ifndef HGRUNNER_H
jtkorhonen@0 19 #define HGRUNNER_H
jtkorhonen@0 20
Chris@109 21 #include "hgaction.h"
Chris@109 22
Chris@561 23 #include <QWidget>
jtkorhonen@0 24 #include <QProcess>
Chris@561 25
Chris@561 26 class QProgressBar;
Chris@571 27 class QPushButton;
Chris@561 28 class QFile;
jtkorhonen@0 29
Chris@109 30 #include <deque>
Chris@109 31
Chris@561 32 class HgRunner : public QWidget
jtkorhonen@0 33 {
jtkorhonen@0 34 Q_OBJECT
jtkorhonen@0 35
Chris@62 36 public:
Chris@561 37 HgRunner(QString myDirPath, QWidget *parent = 0);
Chris@62 38 ~HgRunner();
jtkorhonen@0 39
Chris@561 40 public slots:
Chris@109 41 void requestAction(HgAction action);
Chris@182 42 void killCurrentActions(); // kill anything running; clear the queue
jtkorhonen@0 43
Chris@109 44 signals:
Chris@238 45 void commandStarting(HgAction action);
Chris@142 46 void commandCompleted(HgAction action, QString stdOut);
Chris@537 47 void commandFailed(HgAction action, QString stdErr, QString stdOut);
jtkorhonen@0 48
Chris@564 49 /**
Chris@564 50 * Emitted when the currently executing command is cancelled. Note
Chris@564 51 * that this clears the queue completely, so all subsequent
Chris@564 52 * commands are also discarded.
Chris@564 53 */
Chris@564 54 void commandCancelled(HgAction action);
Chris@564 55
Chris@109 56 private slots:
Chris@109 57 void started();
Chris@189 58 void error(QProcess::ProcessError);
Chris@109 59 void finished(int procExitCode, QProcess::ExitStatus procExitStatus);
Chris@110 60 void dataReadyStdout();
Chris@110 61 void dataReadyStderr();
Chris@113 62 void dataReadyPty();
Chris@62 63
Chris@62 64 private:
Chris@109 65 void checkQueue();
Chris@109 66 void startCommand(HgAction action);
Chris@84 67 void closeProcInput();
Chris@109 68 void killCurrentCommand();
Chris@75 69
Chris@84 70 void noteUsername(QString);
Chris@84 71 void noteRealm(QString);
Chris@84 72 void getUsername();
Chris@84 73 void getPassword();
Chris@113 74 bool checkPrompts(QString);
Chris@84 75
Chris@111 76 void openTerminal();
Chris@111 77 void closeTerminal();
chris@406 78
Chris@239 79 QString getHgBinaryName();
chris@406 80 QString getSshBinaryName();
Chris@239 81 QString getExtensionLocation();
Chris@239 82
Chris@455 83 QString getAuthFilePath();
Chris@455 84 QString getAuthKey();
Chris@455 85 void pruneOldAuthFiles();
Chris@455 86
Chris@188 87 QString getUnbundledFileName();
Chris@180 88 QString unbundleExtension();
Chris@161 89
Chris@561 90 QProgressBar *m_progress;
Chris@571 91 QPushButton *m_cancel;
Chris@561 92
Chris@444 93 QStringList addExtensionOptions(QStringList);
Chris@444 94
Chris@84 95 int m_ptyMasterFd;
Chris@84 96 int m_ptySlaveFd;
Chris@84 97 QString m_ptySlaveFilename;
Chris@113 98 QFile *m_ptyFile;
Chris@62 99
Chris@84 100 bool m_isRunning;
Chris@84 101 QProcess *m_proc;
Chris@110 102 QString m_stdout;
Chris@110 103 QString m_stderr;
Chris@84 104
Chris@84 105 QString m_userName;
Chris@84 106 QString m_realm;
Chris@172 107
Chris@172 108 QString m_myDirPath;
Chris@161 109 QString m_extensionPath;
Chris@62 110
Chris@444 111 QString m_authKey;
Chris@444 112 QString m_authFilePath;
Chris@444 113
Chris@109 114 typedef std::deque<HgAction> ActionQueue;
Chris@109 115 ActionQueue m_queue;
Chris@109 116 HgAction m_currentAction;
jtkorhonen@0 117 };
jtkorhonen@0 118
jtkorhonen@0 119 #endif // HGRUNNER_H