diff --git a/examples/progressbar.py b/examples/progressbar.py new file mode 100644 index 0000000..0dad5a1 --- /dev/null +++ b/examples/progressbar.py @@ -0,0 +1,42 @@ +# Downloaded from http://code.activestate.com/recipes/168639-progress-bar-class/ +# 12 January 2013 + +class ProgressBar: + + def __init__(self, minValue = 0, maxValue = 10, totalWidth=12): + self.progBar = "[]" # This holds the progress bar string + self.min = minValue + self.max = maxValue + self.span = maxValue - minValue + self.width = totalWidth + self.amount = 0 # When amount == max, we are 100% done + self.updateAmount(0) # Build progress bar string + + def updateAmount(self, newAmount = 0): + if newAmount < self.min: newAmount = self.min + if newAmount > self.max: newAmount = self.max + self.amount = newAmount + + # Figure out the new percent done, round to an integer + diffFromMin = float(self.amount - self.min) + percentDone = (diffFromMin / float(self.span)) * 100.0 + percentDone = round(percentDone) + percentDone = int(percentDone) + + # Figure out how many hash bars the percentage should be + allFull = self.width - 2 + numHashes = (percentDone / 100.0) * allFull + numHashes = int(round(numHashes)) + + # build a progress bar with hashes and spaces + self.progBar = "[" + '#'*numHashes + ' '*(allFull-numHashes) + "]" + + # figure out where to put the percentage, roughly centered + percentPlace = int((len(self.progBar) / 2) - len(str(percentDone))) + percentString = str(percentDone) + "%" + + # slice the percentage into the bar + self.progBar = self.progBar[0:percentPlace] + percentString + self.progBar[percentPlace+len(percentString):] + + def __str__(self): + return str(self.progBar)