OPT MODULE MODULE 'tools/EasyGUI', 'tools/ghost', 'intuition/gadgetclass', 'intuition/intuition', 'gadgets/gradientslider' EXPORT OBJECT gradient OF plugin curval pens:PTR TO INT disabled PRIVATE grad:PTR TO gadget gradbase vert rel ENDOBJECT PROC gradient(vert=FALSE,curval=0,rel=5,pens=NIL,disabled=FALSE) OF gradient self.gradbase:=OpenLibrary('gadgets/gradientslider.gadget',39) IF self.gradbase=NIL THEN Raise("grad") self.curval:=curval self.vert:=vert self.rel:=rel self.pens:=pens self.disabled:=disabled ENDPROC PROC end() OF gradient IF self.gradbase THEN CloseLibrary(self.gradbase) ENDPROC PROC min_size(ta,fh) OF gradient IS IF self.vert THEN (fh+6) ELSE (fh*self.rel), IF self.vert THEN (fh*self.rel) ELSE (fh+6) PROC will_resize() OF gradient IS IF self.vert THEN RESIZEY ELSE RESIZEX PROC render(ta,x,y,xs,ys,w) OF gradient self.grad:=NewObjectA(NIL,'gradientslider.gadget', [GA_TOP,y, GA_LEFT,x, GA_WIDTH,xs, GA_HEIGHT,ys, GRAD_CURVAL,self.curval, GRAD_PENARRAY,self.pens, PGA_FREEDOM,IF self.vert THEN LORIENT_VERT ELSE LORIENT_HORIZ, GA_RELVERIFY,TRUE, GA_DISABLED,self.disabled, NIL]) IF self.grad=NIL THEN Raise("grad") AddGList(w,self.grad,-1,1,NIL) RefreshGList(self.grad,w,NIL,1) IF self.disabled THEN ghost(w,self.x,self.y,self.xs,self.ys) ENDPROC PROC clear_render(win:PTR TO window) OF gradient IF self.grad RemoveGList(win,self.grad,1) DisposeObject(self.grad) ENDIF ENDPROC PROC message_test(imsg:PTR TO intuimessage,win:PTR TO window) OF gradient IF imsg.class=IDCMP_GADGETUP THEN RETURN imsg.iaddress=self.grad ENDPROC FALSE PROC message_action(class,qual,code,win:PTR TO window) OF gradient DEF val=0 GetAttr(GRAD_CURVAL,self.grad,{val}) self.curval:=val ENDPROC TRUE PROC setcurval(x) OF gradient self.curval:=x SetGadgetAttrsA(self.grad,self.gh.wnd,NIL,[GRAD_CURVAL,x,NIL]) ENDPROC PROC setpens(pens=NIL) OF gradient IF pens THEN self.pens:=pens self.clear_render(self.gh.wnd) self.render(NIL,self.x,self.y,self.xs,self.ys,self.gh.wnd) ENDPROC PROC setdisabled(disabled=TRUE) OF gradient SetGadgetAttrsA(self.grad,self.gh.wnd,NIL,[GA_DISABLED,disabled,NIL]) IF disabled ghost(self.gh.wnd,self.x,self.y,self.xs,self.ys) ELSE unghost(self.grad,self.gh.wnd) ENDIF self.disabled:=disabled ENDPROC