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 CheckedButton(value,text=None,pos=None,size=None,**kwargs): ret = False theme = UIState.getTheme() pos,size = theme.drawButton(pos,size,text,simulate=True,**kwargs) pos,size = UIState.doLayout(pos,size,**kwargs) disabled = "disabled" in kwargs and kwargs['disabled'] disabledFunc = None if disabled: disabledFunc = theme.drawDisabledButton 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): if value: value = False else: value = True UIState.setActive() else: if UIState.isActive(pos,size): UIState.setActive() if value: drawFunc = theme.drawClickedButton drawFunc = disabledFunc or drawFunc drawFunc(pos,size,text,**kwargs) UIState.updateLayout(pos,size,**kwargs) return value
def CheckBox(value,text,pos=None,size=None,**kwargs): theme = UIState.getTheme() xsize = 16 boxsize = (xsize,xsize) if not size and text: pos,textsize = theme.drawText(text,pos,size,simulate=True,**kwargs) boxsize = (textsize[1]+4,textsize[1]+4) size = (textsize[0]+boxsize[0]+4,textsize[1]) else: size = boxsize pos,size = UIState.doLayout(pos,size,**kwargs) disabled = "disabled" in kwargs and kwargs['disabled'] if mouseIsInside(pos,boxsize): if not disabled: UIState.setHot(pos,boxsize) if mousePressed(): if not UIState.hasActive(): UIState.setActive(pos,boxsize) UIState.setKeyboardActive() else: if UIState.isActive(pos,boxsize): UIState.setActive() if value: value = False else: value = True theme.drawCheckbox(value,pos,boxsize,active=UIState.isActive(pos,boxsize)) if text: theme.drawText(text,(pos[0]+4+boxsize[0],pos[1]),textsize,checkbox=True,**kwargs) UIState.updateLayout(pos,size,**kwargs) return value