Show More
@@ -35,43 +35,9 b' would take the last num characters, or `' | |||
|
35 | 35 | characters. |
|
36 | 36 | """ |
|
37 | 37 | |
|
38 | from mercurial import progress | |
|
39 | from mercurial import ui as uimod | |
|
40 | ||
|
41 | 38 | def uisetup(ui): |
|
42 | class progressui(ui.__class__): | |
|
43 | _progbar = None | |
|
44 | ||
|
45 | def _quiet(self): | |
|
46 | return self.debugflag or self.quiet | |
|
47 | ||
|
48 | def progress(self, *args, **opts): | |
|
49 | if not self._quiet(): | |
|
50 | self._progbar.progress(*args, **opts) | |
|
51 | return super(progressui, self).progress(*args, **opts) | |
|
52 | ||
|
53 | def write(self, *args, **opts): | |
|
54 | if not self._quiet() and self._progbar.printed: | |
|
55 | self._progbar.clear() | |
|
56 | return super(progressui, self).write(*args, **opts) | |
|
57 | ||
|
58 | def write_err(self, *args, **opts): | |
|
59 | if not self._quiet() and self._progbar.printed: | |
|
60 | self._progbar.clear() | |
|
61 | return super(progressui, self).write_err(*args, **opts) | |
|
62 | ||
|
63 | # Apps that derive a class from ui.ui() can use | |
|
64 | # setconfig('progress', 'disable', 'True') to disable this extension | |
|
65 | if ui.configbool('progress', 'disable'): | |
|
66 | return | |
|
67 | if progress.shouldprint(ui) and not ui.debugflag and not ui.quiet: | |
|
68 | dval = object() | |
|
69 | if getattr(ui, '_progbar', dval) is dval: | |
|
70 | ui.__class__ = progressui | |
|
71 | # we instantiate one globally-shared progress bar to avoid | |
|
72 | # competing progress bars when multiple UI objects get created | |
|
73 | if not progressui._progbar: | |
|
74 | progressui._progbar = uimod.getprogbar(ui) | |
|
39 | if ui.config('progress', 'disable', None) is None: | |
|
40 | ui.setconfig('progress', 'disable', 'False', 'hgext-progress') | |
|
75 | 41 | |
|
76 | 42 | def reposetup(ui, repo): |
|
77 | 43 | uisetup(repo.ui) |
@@ -584,6 +584,7 b' class ui(object):' | |||
|
584 | 584 | "cmdname.type" is recommended. For example, status issues |
|
585 | 585 | a label of "status.modified" for modified files. |
|
586 | 586 | ''' |
|
587 | self._progclear() | |
|
587 | 588 | if self._buffers: |
|
588 | 589 | self._buffers[-1].extend([str(a) for a in args]) |
|
589 | 590 | else: |
@@ -591,6 +592,7 b' class ui(object):' | |||
|
591 | 592 | self.fout.write(str(a)) |
|
592 | 593 | |
|
593 | 594 | def write_err(self, *args, **opts): |
|
595 | self._progclear() | |
|
594 | 596 | try: |
|
595 | 597 | if self._bufferstates and self._bufferstates[-1][0]: |
|
596 | 598 | return self.write(*args, **opts) |
@@ -886,6 +888,22 b' class ui(object):' | |||
|
886 | 888 | os.environ.get("VISUAL") or |
|
887 | 889 | os.environ.get("EDITOR", editor)) |
|
888 | 890 | |
|
891 | @util.propertycache | |
|
892 | def _progbar(self): | |
|
893 | """setup the progbar singleton to the ui object""" | |
|
894 | if (self.quiet or self.debugflag | |
|
895 | or self.configbool('progress', 'disable', True) | |
|
896 | or not progress.shouldprint(self)): | |
|
897 | return None | |
|
898 | return getprogbar(self) | |
|
899 | ||
|
900 | def _progclear(self): | |
|
901 | """clear progress bar output if any. use it before any output""" | |
|
902 | if '_progbar' not in vars(self): # nothing loadef yet | |
|
903 | return | |
|
904 | if self._progbar is not None and self._progbar.printed: | |
|
905 | self._progbar.clear() | |
|
906 | ||
|
889 | 907 | def progress(self, topic, pos, item="", unit="", total=None): |
|
890 | 908 | '''show a progress message |
|
891 | 909 | |
@@ -902,7 +920,9 b' class ui(object):' | |||
|
902 | 920 | All topics should be marked closed by setting pos to None at |
|
903 | 921 | termination. |
|
904 | 922 | ''' |
|
905 | ||
|
923 | if self._progbar is not None: | |
|
924 | self._progbar.progress(topic, pos, item=item, unit=unit, | |
|
925 | total=total) | |
|
906 | 926 | if pos is None or not self.configbool('progress', 'debug'): |
|
907 | 927 | return |
|
908 | 928 |
General Comments 0
You need to be logged in to leave comments.
Login now