diff options
Diffstat (limited to 'pgu/gui/misc.py')
-rw-r--r-- | pgu/gui/misc.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/pgu/gui/misc.py b/pgu/gui/misc.py new file mode 100644 index 0000000..afb10c5 --- /dev/null +++ b/pgu/gui/misc.py @@ -0,0 +1,43 @@ +from const import * +import widget +import pguglobals + +class ProgressBar(widget.Widget): + """A progress bar. + + <pre>ProgressBar(value,min,max)</pre> + + <dl> + <dt>value<dd>starting value + <dt>min<dd>minimum value rendered on the screen (usually 0) + <dt>max<dd>maximum value + </dl> + + <strong>Example</strong> + <code> + w = gui.ProgressBar(0,0,100) + w.value = 25 + </code> + """ + + def __init__(self,value,min,max,**params): + params.setdefault('cls','progressbar') + widget.Widget.__init__(self,**params) + self.min,self.max,self.value = min,max,value + + def paint(self,s): + r = pygame.rect.Rect(0,0,self.rect.w,self.rect.h) + r.w = r.w*(self.value-self.min)/(self.max-self.min) + self.bar = r + pguglobals.app.theme.render(s,self.style.bar,r) + + def __setattr__(self,k,v): + if k == 'value': + v = int(v) + v = max(v,self.min) + v = min(v,self.max) + _v = self.__dict__.get(k,NOATTR) + self.__dict__[k]=v + if k == 'value' and _v != NOATTR and _v != v: + self.send(CHANGE) + self.repaint() |