class Progress(bolt.Progress): """Progress as progress dialog.""" def __init__(self,title=_(u'Progress'),message=u' '*60,parent=None, style=wx.PD_APP_MODAL|wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_SMOOTH, abort=False, onAbort=None): if abort: style |= wx.PD_CAN_ABORT self.fnAbort = onAbort self.dialog = wx.ProgressDialog(title,message,100,parent,style) self.dialog.SetFocus() bolt.Progress.__init__(self) self.message = message self.isDestroyed = False self.prevMessage = u'' self.prevState = -1 self.prevTime = 0 ############ bolt.py class Progress: """Progress Callable: Shows progress when called.""" def __init__(self,full=1.0): if (1.0*full) == 0: raise ArgumentError(u'Full must be non-zero!') self.message = u'' self.full = 1.0 * full self.state = 0 self.debug = False def getParent(self): return None def setFull(self,full): """Set's full and for convenience, returns self.""" if (1.0*full) == 0: raise ArgumentError(u'Full must be non-zero!') self.full = 1.0 * full return self def plus(self,increment=1): """Increments progress by 1.""" self.__call__(self.state+increment) def __call__(self,state,message=''): """Update progress with current state. Progress is state/full.""" if (1.0*self.full) == 0: raise ArgumentError(u'Full must be non-zero!') if message: self.message = message if self.debug: deprint(u'%0.3f %s' % (1.0*state/self.full, self.message)) self.doProgress(1.0*state/self.full, self.message) self.state = state def doProgress(self,progress,message): """Default doProgress does nothing.""" pass # __enter__ and __exit__ for use with the 'with' statement def __enter__(self): return self def __exit__(self,type,value,traceback): pass