comparison mercurial/ui.py @ 38345:bec1212eceaa

progress: create helper class for incrementing progress When using ui.progress(), there's a clear pattern that is followed: * Pass the same topic and unit * Usually pass the same total * Call with pos=None to close the progress bar * Often keep track of the current position and increment it This patch creates a simple helper class for this. I'll probably make it implement the context manager protocol later (calling update(None) on __exit__). Progress is used in low-level modules like changegroup, so I also exposed it via a method on the ui object. Perhaps the class itself should also live in ui.py? This patch also makes merge.oy use it to show that it works. Differential Revision: https://phab.mercurial-scm.org/D3765
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 15 Jun 2018 22:37:01 -0700
parents aac4be30e250
children 313a940d49a3
comparison
equal deleted inserted replaced
38344:c6f82a18a63d 38345:bec1212eceaa
1594 self.debug('%s:%s %d/%d%s (%4.2f%%)\n' 1594 self.debug('%s:%s %d/%d%s (%4.2f%%)\n'
1595 % (topic, item, pos, total, unit, pct)) 1595 % (topic, item, pos, total, unit, pct))
1596 else: 1596 else:
1597 self.debug('%s:%s %d%s\n' % (topic, item, pos, unit)) 1597 self.debug('%s:%s %d%s\n' % (topic, item, pos, unit))
1598 1598
1599 def makeprogress(self, topic, unit="", total=None):
1600 '''exists only so low-level modules won't need to import scmutil'''
1601 return scmutil.progress(self, topic, unit, total)
1602
1599 def log(self, service, *msg, **opts): 1603 def log(self, service, *msg, **opts):
1600 '''hook for logging facility extensions 1604 '''hook for logging facility extensions
1601 1605
1602 service should be a readily-identifiable subsystem, which will 1606 service should be a readily-identifiable subsystem, which will
1603 allow filtering. 1607 allow filtering.