1   
  2   
  3   
  4   
  5   
  6   
  7   
  8   
  9   
 10   
 11   
 12   
 13   
 14   
 15   
 16   
 17   
 18   
 19   
 20   
 21   
 22  """progress bar utilities for reporting feedback on progress of application...""" 
 23   
 25    """an ultra-simple progress indicator that just writes a dot for each action""" 
 27      import sys 
 28      self.stderr = sys.stderr 
 29      self.amount = 0 
  30   
 31 -  def show(self, verbosemessage): 
  32      """show a dot for progress :-)""" 
 33      self.stderr.write('.') 
 34      self.stderr.flush() 
  35   
 39   
  42   
 44    """an invisible indicator that does nothing...""" 
 47   
 48 -  def show(self, verbosemessage): 
  49      """show nothing for progress :-)""" 
 50      pass 
  51   
  54   
 56    """a plain progress bar that doesn't know very much about output...""" 
 57 -  def __init__(self, minValue = 0, maxValue = 100, totalWidth=50): 
  58      self.progBar = "[]"    
 59      self.min = minValue 
 60      self.max = maxValue 
 61      self.span = maxValue - minValue 
 62      self.width = totalWidth 
 63      self.amount = 0        
  64   
 66      """produces the string representing the progress bar""" 
 67      if self.amount < self.min: self.amount = self.min 
 68      if self.amount > self.max: self.amount = self.max 
 69   
 70       
 71      diffFromMin = float(self.amount - self.min) 
 72      percentDone = (diffFromMin / float(self.span)) * 100.0 
 73      percentDone = round(percentDone) 
 74      percentDone = int(percentDone) 
 75   
 76       
 77      allFull = self.width - 7  
 78      numHashes = (percentDone / 100.0) * allFull 
 79      numHashes = int(round(numHashes)) 
 80   
 81       
 82      self.progBar = "[%s%s] %3d%%" % ('#'*numHashes, ' '*(allFull-numHashes), percentDone) 
 83      return str(self.progBar) 
  84   
 85 -  def show(self, verbosemessage): 
  86      """displays the progress bar""" 
 87      print self 
   88   
 90    """a ProgressBar that just writes out the messages without any progress display""" 
 95   
 96 -  def show(self, verbosemessage): 
  97      self.sys.stderr.write(verbosemessage + '\n') 
 98      self.sys.stderr.flush() 
   99   
101    """a ProgressBar which knows how to go back to the beginning of the line...""" 
106   
107 -  def show(self, verbosemessage): 
 108      self.sys.stderr.write(str(self) + '\r') 
109      self.sys.stderr.flush() 
 110   
112      self.sys.stderr.write('\n') 
113      self.sys.stderr.flush() 
 114   
 117   
122   
123 -  def show(self, verbosemessage): 
 124      output = str(self) 
125      self.sys.stderr.write('\r' + ' '*self.lastwidth) 
126      self.sys.stderr.write('\r' + verbosemessage + '\n') 
127      self.lastwidth = len(output) 
128      self.sys.stderr.write('\r' + output) 
129      self.sys.stderr.flush() 
  130   
131 -def test(progressbar): 
 137   
138  if __name__ == '__main__': 
139    p = HashProgressBar(0,100,50) 
140    test(p) 
141