home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / e / EasyGUI_v33b2.lha / Src / Plugins / tabs.e < prev    next >
Text File  |  1997-02-02  |  2KB  |  90 lines

  1. OPT MODULE
  2.  
  3. MODULE 'tools/EasyGUI', 'tools/ghost', 'tools/textlen',
  4.        'intuition/intuition', 'intuition/gadgetclass',
  5.        'gadgets/tabs'
  6.  
  7. EXPORT OBJECT tabs OF plugin
  8.   current
  9.   disabled
  10. PRIVATE
  11.   tabs:PTR TO gadget
  12.   tabsbase
  13.   tabslist
  14.   max
  15. ENDOBJECT
  16.  
  17. PROC tabs(tabslist,current=0,max=TRUE,disabled=FALSE) OF tabs
  18.   self.tabsbase:=OpenLibrary('gadgets/tabs.gadget',37)
  19.   IF self.tabsbase=NIL THEN Raise("tabs")
  20.   self.tabslist:=tabslist
  21.   self.current:=current
  22.   self.max:=max
  23.   self.disabled:=disabled
  24. ENDPROC
  25.  
  26. PROC end() OF tabs
  27.   IF self.tabsbase THEN CloseLibrary(self.tabsbase)
  28. ENDPROC
  29.  
  30. PROC min_size(ta,fh) OF tabs
  31.   DEF p:PTR TO tablabel, w=0, n=0
  32.   p:=self.tabslist
  33.   IF self.max
  34.     WHILE p.label
  35.       w:=Max(w,textlen(p.label,ta))
  36.       n++
  37.       p++
  38.     ENDWHILE
  39.     w:=w*n
  40.   ELSE
  41.     WHILE p.label
  42.       w:=w+textlen(p.label,ta)
  43.       n++
  44.       p++
  45.     ENDWHILE
  46.   ENDIF
  47. ENDPROC n*20+w+7,fh+5
  48.  
  49. PROC will_resize() OF tabs IS COND_RESIZEX
  50.  
  51. PROC render(ta,x,y,xs,ys,w) OF tabs
  52.   self.tabs:=NewObjectA(NIL,'tabs.gadget',
  53.                        [GA_TOP,y, GA_LEFT,x, GA_WIDTH,xs-1, GA_HEIGHT,ys,
  54.                         GA_TEXTATTR,ta, GA_RELVERIFY,TRUE,
  55.                         TABS_CURRENT,self.current, TABS_LABELS,self.tabslist,
  56.                         LAYOUTA_CHILDMAXWIDTH,self.max,
  57.                         GA_DISABLED,self.disabled, NIL])
  58.   IF self.tabs=NIL THEN Raise("tabs")
  59.   AddGList(w,self.tabs,-1,1,NIL)
  60.   RefreshGList(self.tabs,w,NIL,1)
  61. ENDPROC
  62.  
  63. PROC clear_render(win:PTR TO window) OF tabs
  64.   IF self.tabs
  65.     RemoveGList(win,self.tabs,1)
  66.     DisposeObject(self.tabs)
  67.   ENDIF
  68. ENDPROC
  69.  
  70. PROC message_test(imsg:PTR TO intuimessage,win:PTR TO window) OF tabs
  71.   IF imsg.class=IDCMP_GADGETUP THEN RETURN imsg.iaddress=self.tabs
  72. ENDPROC FALSE
  73.  
  74. PROC message_action(class,qual,code,win:PTR TO window) OF tabs
  75.   self.current:=code
  76. ENDPROC TRUE
  77.  
  78. PROC setcurrent(x) OF tabs
  79.   self.current:=x
  80.   SetGadgetAttrsA(self.tabs,self.gh.wnd,NIL,[TABS_CURRENT,x,NIL])
  81. ENDPROC
  82.  
  83. PROC setdisabled(disabled=TRUE) OF tabs
  84.   SetGadgetAttrsA(self.tabs,self.gh.wnd,NIL,[GA_DISABLED,disabled,NIL])
  85.   self.disabled:=disabled
  86.   IF disabled=FALSE
  87.     unghost_clear(self.tabs,self.gh.wnd,self.x,self.y,self.xs,self.ys)
  88.   ENDIF
  89. ENDPROC
  90.