1 #ifndef PKGLIB_IPROGRESS_H 
   2 #define PKGLIB_IPROGRESS_H 
  13  PackageManager
* PackageManagerProgressFactory(); 
  18     /** \brief dpointer placeholder */ 
  22     std::string progress_str
; 
  24     int last_reported_progress
; 
  28        : percentage(0.0), last_reported_progress(-1) {}; 
  29     virtual ~PackageManager() {}; 
  31     /* Global Start/Stop */ 
  32     virtual void Start(int /*child_pty*/=-1) {}; 
  33     virtual void Stop() {}; 
  35     /* When dpkg is invoked (may happen multiple times for each 
  36      * install/remove block 
  38     virtual void StartDpkg() {}; 
  40     virtual pid_t 
fork() {return fork(); }; 
  42     virtual void Pulse() {}; 
  43     virtual long GetPulseInterval() { 
  47     virtual bool StatusChanged(std::string PackageName
, 
  48                                unsigned int StepsDone
, 
  49                                unsigned int TotalSteps
, 
  50                                std::string HumanReadableAction
); 
  51     virtual void Error(std::string 
/*PackageName*/, 
  52                        unsigned int /*StepsDone*/, 
  53                        unsigned int /*TotalSteps*/, 
  54                        std::string 
/*ErrorMessage*/) {} 
  55     virtual void ConffilePrompt(std::string 
/*PackageName*/, 
  56                                 unsigned int /*StepsDone*/, 
  57                                 unsigned int /*TotalSteps*/, 
  58                                 std::string 
/*ConfMessage*/) {} 
  61  class PackageManagerProgressFd 
: public PackageManager
 
  67     void WriteToStatusFd(std::string msg
); 
  70     PackageManagerProgressFd(int progress_fd
); 
  72     virtual void StartDpkg(); 
  75     virtual bool StatusChanged(std::string PackageName
, 
  76                                unsigned int StepsDone
, 
  77                                unsigned int TotalSteps
, 
  78                                std::string HumanReadableAction
); 
  79     virtual void Error(std::string PackageName
, 
  80                        unsigned int StepsDone
, 
  81                        unsigned int TotalSteps
, 
  82                           std::string ErrorMessage
); 
  83     virtual void ConffilePrompt(std::string PackageName
, 
  84                                 unsigned int StepsDone
, 
  85                                 unsigned int TotalSteps
, 
  86                                    std::string ConfMessage
); 
  90  class PackageManagerProgressDeb822Fd 
: public PackageManager
 
  96     void WriteToStatusFd(std::string msg
); 
  99     PackageManagerProgressDeb822Fd(int progress_fd
); 
 101     virtual void StartDpkg(); 
 104     virtual bool StatusChanged(std::string PackageName
, 
 105                                unsigned int StepsDone
, 
 106                                unsigned int TotalSteps
, 
 107                                std::string HumanReadableAction
); 
 108     virtual void Error(std::string PackageName
, 
 109                        unsigned int StepsDone
, 
 110                        unsigned int TotalSteps
, 
 111                           std::string ErrorMessage
); 
 112     virtual void ConffilePrompt(std::string PackageName
, 
 113                                 unsigned int StepsDone
, 
 114                                 unsigned int TotalSteps
, 
 115                                    std::string ConfMessage
); 
 118  class PackageManagerFancy 
: public PackageManager
 
 121     static void staticSIGWINCH(int); 
 122     static std::vector
<PackageManagerFancy
*> instances
; 
 125     void SetupTerminalScrollArea(int nr_rows
); 
 126     void HandleSIGWINCH(int); 
 132     TermSize 
GetTerminalSize(); 
 134     sighandler_t old_SIGWINCH
; 
 138     PackageManagerFancy(); 
 139     ~PackageManagerFancy(); 
 140     virtual void Start(int child_pty
=-1); 
 142     virtual bool StatusChanged(std::string PackageName
, 
 143                                unsigned int StepsDone
, 
 144                                unsigned int TotalSteps
, 
 145                                std::string HumanReadableAction
); 
 147     // return a progress bar of the given size for the given progress  
 148     // percent between 0.0 and 1.0 in the form "[####...]" 
 149     static std::string 
GetTextProgressStr(float percent
, int OutputSize
); 
 152  class PackageManagerText 
: public PackageManager
 
 155     virtual bool StatusChanged(std::string PackageName
, 
 156                                unsigned int StepsDone
, 
 157                                unsigned int TotalSteps
, 
 158                                std::string HumanReadableAction
); 
 162 } // namespace Progress