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