"""All sliders and scroll bar widgets have the same parameters.
Slider(value,min,max,size)
VSlider(value,min,max,size)""" def __init__(self,value,min,max,size,step=1,**params): params.setdefault('cls','vslider') _slider.__init__(self,value,_SLIDER_VERTICAL,min,max,size,step,**params) class HSlider(_slider): """A horizontal slider.
HSlider(value,min,max,size)""" def __init__(self,value,min,max,size,step=1,**params): params.setdefault('cls','hslider') _slider.__init__(self,value,_SLIDER_HORIZONTAL,min,max,size,step,**params) class HScrollBar(table.Table): """A horizontal scroll bar.
HScrollBar(value,min,max,size,step=1)""" def __init__(self,value,min,max,size,step=1,**params): params.setdefault('cls','hscrollbar') table.Table.__init__(self,**params) self.slider = _slider(value,_SLIDER_HORIZONTAL,min,max,size,step=step,cls=self.cls+'.slider') self.minus = basic.Image(self.style.minus) self.minus.connect(MOUSEBUTTONDOWN,self._click,-1) self.slider.connect(CHANGE,self.send,CHANGE) self.minus2 = basic.Image(self.style.minus) self.minus2.connect(MOUSEBUTTONDOWN,self._click,-1) self.plus = basic.Image(self.style.plus) self.plus.connect(MOUSEBUTTONDOWN,self._click,1) self.size = size def _click(self,value): self.slider.value += self.slider.step*value def resize(self,width=None,height=None): self.clear() self.tr() w = self.style.width h = self.slider.style.height ww = 0 if w > (h*2 + self.minus.style.width+self.plus.style.width): self.td(self.minus) ww += self.minus.style.width self.td(self.slider) if w > (h*2 + self.minus.style.width+self.minus2.style.width+self.plus.style.width): self.td(self.minus2) ww += self.minus2.style.width if w > (h*2 + self.minus.style.width+self.plus.style.width): self.td(self.plus) ww += self.plus.style.width #HACK: handle theme sizing properly xt,xr,xb,xl = pguglobals.app.theme.getspacing(self.slider) ww += xr+xl self.slider.style.width = self.style.width - ww setattr(self.slider,'size',self.size * self.slider.style.width / max(1,self.style.width)) return table.Table.resize(self,width,height) def __setattr__(self,k,v): if k in ('min','max','value','step'): return setattr(self.slider,k,v) self.__dict__[k]=v def __getattr__(self,k): if k in ('min','max','value','step'): return getattr(self.slider,k) return table.Table.__getattr__(self,k) #self.__dict__[k] class VScrollBar(table.Table): """A vertical scroll bar.
VScrollBar(value,min,max,size,step=1)""" def __init__(self,value,min,max,size,step=1,**params): params.setdefault('cls','vscrollbar') table.Table.__init__(self,**params) self.minus = basic.Image(self.style.minus) self.minus.connect(MOUSEBUTTONDOWN,self._click,-1) self.minus2 = basic.Image(self.style.minus) self.minus2.connect(MOUSEBUTTONDOWN,self._click,-1) self.plus = basic.Image(self.style.plus) self.plus.connect(MOUSEBUTTONDOWN,self._click,1) self.slider = _slider(value,_SLIDER_VERTICAL,min,max,size,step=step,cls=self.cls+'.slider') self.slider.connect(CHANGE,self.send,CHANGE) self.size = size def _click(self,value): self.slider.value += self.slider.step*value def resize(self,width=None,height=None): self.clear() h = self.style.height w = self.slider.style.width hh = 0 if h > (w*2 + self.minus.style.height+self.plus.style.height): self.tr() self.td(self.minus) hh += self.minus.style.height self.tr() self.td(self.slider) if h > (w*2 + self.minus.style.height+self.minus2.style.height+self.plus.style.height): self.tr() self.td(self.minus2) hh += self.minus2.style.height if h > (w*2 + self.minus.style.height+self.plus.style.height): self.tr() self.td(self.plus) hh += self.plus.style.height #HACK: handle theme sizing properly xt,xr,xb,xl = pguglobals.app.theme.getspacing(self.slider) hh += xt+xb self.slider.style.height = self.style.height - hh setattr(self.slider,'size',self.size * self.slider.style.height / max(1,self.style.height)) return table.Table.resize(self,width,height) def __setattr__(self,k,v): if k in ('min','max','value','step'): return setattr(self.slider,k,v) self.__dict__[k]=v def __getattr__(self,k): if k in ('min','max','value','step'): return getattr(self.slider,k) return table.Table.__getattr__(self,k)