]> git.lyx.org Git - lyx.git/blobdiff - src/support/SystemcallPrivate.h
TR1: check in cmake for GCC version, fallback in checktr1.h for other build systems...
[lyx.git] / src / support / SystemcallPrivate.h
index 5e00f9846c337d7ebb167be75c4abe3e4fb8917f..820beac4f0f2d196d59981f0d83a56390032212b 100644 (file)
 #define SYSTEMCALLPRIVATE_H
 
 #include <QObject>
-
 #include <QProcess>
 
+#include <string>
+
 namespace lyx {
 namespace support {
 
@@ -30,14 +31,14 @@ class SystemcallPrivate : public QObject
 {
        Q_OBJECT
 public:
-       SystemcallPrivate(QProcess * proc);
+       SystemcallPrivate(std::string const & outfile);
        ~SystemcallPrivate();
 
        /// Should the standard output be displayed?
-       void showout() { showout_ = true; }
+       void setShowOut(bool val) { showout_ = val; }
 
        /// Should the standard error be displayed?
-       void showerr() { showerr_ = true; }
+       void setShowErr(bool val) { showerr_ = val; }
 
        enum State {
                Starting,
@@ -50,10 +51,16 @@ public:
        bool waitWhile(State, bool processEvents, int timeout = -1);
        void startProcess(const QString& cmd);
        
+       int exitCode();
+
        QString errorMessage() const;
        QString exitStatusMessage() const;
 
+       void flush();
 
+       QProcess* releaseProcess();
+       
+       static void killProcess(QProcess * p);
 
 private:
        /// Pointer to the process to monitor.
@@ -62,6 +69,8 @@ private:
        size_t outindex_;
        /// Index to the standard error buffer.
        size_t errindex_;
+       ///
+       std::string outfile;
        /// Size of buffers.
        static size_t const bufsize_ = 200;
        /// Standard output buffer.
@@ -72,8 +81,13 @@ private:
        bool showout_;
        /// 
        bool showerr_;
+       bool process_events;
+       QString cmd_;
 
        void waitAndProcessEvents();
+       void processEvents();
+
+       void killProcess();
 
 public Q_SLOTS:
        void stdOut();
@@ -82,6 +96,8 @@ public Q_SLOTS:
        void processStarted();
        void processFinished(int, QProcess::ExitStatus status);
 
+Q_SIGNALS:
+
 };
 
 } // namespace support