]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/install-progress.h
merged mvo/feature/deb822
[apt.git] / apt-pkg / install-progress.h
index 5291039d809b209c3590e25cb177ca6a8ab789e8..8a5b68a8ff9335b55cd7c153f74630a135bc50e5 100644 (file)
@@ -3,7 +3,8 @@
 
 #include <string>
 #include <unistd.h>
-
+#include <signal.h>
+#include <vector>
 
 namespace APT {
 namespace Progress {
@@ -28,7 +29,7 @@ namespace Progress {
     virtual ~PackageManager() {};
 
     /* Global Start/Stop */
-    virtual void Start() {};
+    virtual void Start(int child_pty=-1) {};
     virtual void Stop() {};
 
     /* When dpkg is invoked (may happen multiple times for each 
@@ -97,7 +98,7 @@ namespace Progress {
  public:
     PackageManagerProgressDeb822Fd(int progress_fd);
 
-    virtual void Start();
+    virtual void StartDpkg();
     virtual void Stop();
 
     virtual bool StatusChanged(std::string PackageName, 
@@ -116,13 +117,22 @@ namespace Progress {
 
  class PackageManagerFancy : public PackageManager
  {
+ private:
+    static void staticSIGWINCH(int);
+    static std::vector<PackageManagerFancy*> instances;
+
  protected:
-    int nr_terminal_rows;
     void SetupTerminalScrollArea(int nr_rows);
+    void HandleSIGWINCH(int);
+
+    int GetNumberTerminalRows();
+    sighandler_t old_SIGWINCH;
+    int child_pty;
 
  public:
     PackageManagerFancy();
-    virtual void Start();
+    ~PackageManagerFancy();
+    virtual void Start(int child_pty=-1);
     virtual void Stop();
     virtual bool StatusChanged(std::string PackageName, 
                                unsigned int StepsDone,