~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/progress.py

  • Committer: Martin Pool
  • Date: 2005-07-18 13:12:43 UTC
  • Revision ID: mbp@sourcefrog.net-20050718131243-44532527fd065b31
- update convertinv to work with current weave code

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
 
19
 
"""
20
 
Simple text-mode progress indicator.
21
 
 
22
 
Everyone loves ascii art!
 
19
"""Simple text-mode progress indicator.
23
20
 
24
21
To display an indicator, create a ProgressBar object.  Call it,
25
22
passing Progress objects indicating the current state.  When done,
29
26
not to clutter log files.
30
27
"""
31
28
 
32
 
# TODO: remove functions in favour of keeping everything in one class
33
 
 
34
29
# TODO: should be a global option e.g. --silent that disables progress
35
30
# indicators, preferably without needing to adjust all code that
36
31
# potentially calls them.
38
33
# TODO: Perhaps don't write updates faster than a certain rate, say
39
34
# 5/second.
40
35
 
 
36
# TODO: Optionally show elapsed time instead/as well as ETA; nicer
 
37
# when the rate is unpredictable
 
38
 
41
39
 
42
40
import sys
43
41
import time
118
116
        self.show_bar = show_bar
119
117
        self.show_count = show_count
120
118
 
 
119
        self.width = _width()
 
120
        
121
121
 
122
122
    def tick(self):
123
123
        self.update(self.last_msg, self.last_cnt, self.last_total)
144
144
 
145
145
        self.last_update = now
146
146
        
147
 
        width = _width()
148
 
 
149
147
        if total_cnt:
150
148
            assert current_cnt <= total_cnt
151
149
        if current_cnt:
185
183
 
186
184
        if self.show_bar:
187
185
            # progress bar, if present, soaks up all remaining space
188
 
            cols = width - 1 - len(msg) - len(spin_str) - len(pct_str) \
 
186
            cols = self.width - 1 - len(msg) - len(spin_str) - len(pct_str) \
189
187
                   - len(eta_str) - len(count_str) - 3
190
188
 
191
189
            if total_cnt:
206
204
 
207
205
        m = spin_str + bar_str + msg + count_str + pct_str + eta_str
208
206
 
209
 
        assert len(m) < width
210
 
        self.to_file.write('\r' + m.ljust(width - 1))
 
207
        assert len(m) < self.width
 
208
        self.to_file.write('\r' + m.ljust(self.width - 1))
211
209
        #self.to_file.flush()
212
210
            
213
211
 
215
213
        if self.suppressed:
216
214
            return
217
215
        
218
 
        self.to_file.write('\r%s\r' % (' ' * (_width() - 1)))
 
216
        self.to_file.write('\r%s\r' % (' ' * (self.width - 1)))
219
217
        #self.to_file.flush()        
220
218
    
221
219