def ScrollBar(value,minvalue=0,maxvalue=255,pos=None,size=None,**kwargs): # if type(value) != types.ListType: # raise ParameterError("value needs to be list") theme = UIState.getTheme() disabled = "disabled" in kwargs and kwargs['disabled'] pos,size = theme.drawBox(pos,size,simulate=True,**kwargs) pos,size = UIState.doLayout(pos,size,**kwargs) isint = type(value) == types.IntType mx,my = UIState.getMousePos() x,y = pos w,h = size sliderh = h - 4 bh = 10 bw = w-4 v = float(value - minvalue) / float(maxvalue) bx = x+2 by = v * (sliderh-bh) drawFunc = theme.drawButton if mouseIsInside(pos,size): if not disabled: UIState.setHot(pos,size) drawFunc = theme.drawActiveButton if mousePressed(): if not UIState.hasActive(): UIState.setActive(pos,size) UIState.setKeyboardActive() else: if UIState.isActive(pos,size): UIState.setActive() active = UIState.isActive(pos,size) theme.drawBox(pos,size,active=active,**kwargs) if active: my = min(max(y,my),y+h) v = float(my-y)/float(h) drawFunc = theme.drawClickedButton drawFunc((bx,y+by+2),(bw-1,bh),straight=True) UIState.updateLayout(pos,size,**kwargs) retv = minvalue + v * (maxvalue-minvalue) if isint: return int(retv) return retv
def mouseIsInside(pos, size, **kwargs): return isInside(UIState.getMousePos(), pos, size, **kwargs)