| 80 | class Percent : |
| 81 | """A class to display progress.""" |
| 82 | def __init__(self, app, title, size) : |
| 83 | """Initializes the engine.""" |
| 84 | self.app = app |
| 85 | self.size = size |
| 86 | self.number = 0 |
| 87 | self.factor = 100.0 / float(size) |
| 88 | self.previous = None |
| 89 | self.display(title) |
| 90 | |
| 91 | def display(self, msg) : |
| 92 | """Displays the value.""" |
| 93 | self.app.display(msg) |
| 94 | |
| 95 | def oneMore(self) : |
| 96 | """Increments internal counter.""" |
| 97 | self.number += 1 |
| 98 | percent = "%.02f" % (float(self.number) * self.factor) |
| 99 | if percent != self.previous : # optimize for large number of items |
| 100 | self.display("\r%s%%" % percent) |
| 101 | self.previous = percent |
| 102 | |
| 103 | def done(self) : |
| 104 | """Displays the 'done' message.""" |
| 105 | self.display("\r100.00%%\r \r%s\n" % _("Done.")) |
| 106 | |