~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/text.py

  • Committer: Robert Collins
  • Date: 2009-12-22 23:09:50 UTC
  • mfrom: (4918 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4920.
  • Revision ID: robertc@robertcollins.net-20091222230950-39gjmost0lmu9ufg
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
248
248
        self._term_file = term_file
249
249
        # true when there's output on the screen we may need to clear
250
250
        self._have_output = False
251
 
        # XXX: We could listen for SIGWINCH and update the terminal width...
252
 
        # https://launchpad.net/bugs/316357
253
 
        self._width = osutils.terminal_width()
254
251
        self._last_transport_msg = ''
255
252
        self._spin_pos = 0
256
253
        # time we last repainted the screen
267
264
 
268
265
    def _show_line(self, s):
269
266
        # sys.stderr.write("progress %r\n" % s)
270
 
        if self._width is not None:
271
 
            n = self._width - 1
272
 
            s = '%-*.*s' % (n, n, s)
 
267
        width = osutils.terminal_width()
 
268
        if width is not None:
 
269
            # we need one extra space for terminals that wrap on last char
 
270
            width = width - 1
 
271
            s = '%-*.*s' % (width, width, s)
273
272
        self._term_file.write('\r' + s + '\r')
274
273
 
275
274
    def clear(self):
302
301
            markers = int(round(float(cols) * completion_fraction)) - 1
303
302
            bar_str = '[' + ('#' * markers + spin_str).ljust(cols) + '] '
304
303
            return bar_str
305
 
        elif self._last_task.show_spinner:
 
304
        elif (self._last_task is None) or self._last_task.show_spinner:
306
305
            # The last task wanted just a spinner, no bar
307
306
            spin_str =  r'/-\|'[self._spin_pos % 4]
308
307
            self._spin_pos += 1
373
372
        # XXX: Probably there should be a transport activity model, and that
374
373
        # too should be seen by the progress view, rather than being poked in
375
374
        # here.
376
 
        if not self._have_output:
377
 
            # As a workaround for <https://launchpad.net/bugs/321935> we only
378
 
            # show transport activity when there's already a progress bar
379
 
            # shown, which time the application code is expected to know to
380
 
            # clear off the progress bar when it's going to send some other
381
 
            # output.  Eventually it would be nice to have that automatically
382
 
            # synchronized.
 
375
        if 'no_activity' in debug.debug_flags:
 
376
            # Can be used as a workaround if
 
377
            # <https://launchpad.net/bugs/321935> reappears and transport
 
378
            # activity is cluttering other output.  However, thanks to
 
379
            # TextUIOutputStream this shouldn't be a problem any more.
383
380
            return
384
381
        self._total_byte_count += byte_count
385
382
        self._bytes_since_update += byte_count