home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 2 / MECOMP-CD-II.iso / amiga / programmieren / e / easyplugins / source / xygadget.e < prev   
Encoding:
Text File  |  1998-02-22  |  2.9 KB  |  133 lines

  1.  
  2. /*
  3.  
  4.     $VER: xygadget_plugin 1.2 (28.11.97)
  5.  
  6.     Author:         Ali Graham ($01)
  7.                     <agraham@hal9000.net.au>
  8.  
  9.     PLUGIN id:      $04
  10.  
  11.     Desc.:          Gadget that resizes in both X and Y directions.
  12.  
  13.     Tags:           PLA_XYGadget_Text           [ISG]
  14.                     PLA_XYGadget_Disabled       [ISG]
  15.  
  16. */
  17.  
  18. OPT MODULE, OSVERSION=37
  19.  
  20. MODULE 'tools/easygui', 'intuition/intuition',
  21.        'graphics/text', 'intuition/gadgetclass',
  22.        'gadtools', 'libraries/gadtools',
  23.        'utility', 'utility/tagitem'
  24.  
  25. EXPORT OBJECT xygadget_plugin OF plugin PRIVATE
  26.  
  27.     contents:PTR TO CHAR
  28.     disabled
  29.  
  30.     gad:PTR TO gadget
  31.  
  32. ENDOBJECT
  33.  
  34. -> PROGRAMMER_ID | MODULE_ID
  35. ->      $01      |   $04
  36.  
  37.  
  38. EXPORT ENUM PLA_XYGadget_Text=$81040001,
  39.             PLA_XYGadget_Disabled
  40.  
  41. PROC xygadget(tags=NIL:PTR TO tagitem) OF xygadget_plugin
  42.  
  43.     IF utilitybase
  44.  
  45.         self.contents:=GetTagData(PLA_XYGadget_Text, '', tags)
  46.         self.disabled:=GetTagData(PLA_XYGadget_Disabled, FALSE, tags)
  47.  
  48.     ELSE
  49.  
  50.         Raise("util")
  51.  
  52.     ENDIF
  53.  
  54. ENDPROC
  55.  
  56. ->> xygadget_plugin: set() & get()
  57.  
  58. PROC set(attr, value) OF xygadget_plugin
  59.  
  60.     SELECT attr
  61.  
  62.         CASE PLA_XYGadget_Text
  63.  
  64.             IF self.contents<>value
  65.  
  66.                 self.contents:=value
  67.  
  68.                 IF (self.gad AND self.gh.wnd)
  69.  
  70.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_TEXT, self.contents, TAG_DONE])
  71.  
  72.                 ENDIF
  73.  
  74.             ENDIF
  75.  
  76.         CASE PLA_XYGadget_Disabled
  77.  
  78.             IF self.disabled<>value
  79.  
  80.                 self.disabled:=value
  81.  
  82.                 IF (self.gad AND self.gh.wnd)
  83.  
  84.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_DISABLED, self.disabled, TAG_DONE])
  85.  
  86.                 ENDIF
  87.  
  88.             ENDIF
  89.  
  90.     ENDSELECT
  91.  
  92. ENDPROC
  93.  
  94. PROC get(attr) OF xygadget_plugin
  95.  
  96.     SELECT attr
  97.  
  98.         CASE PLA_XYGadget_Text;             RETURN self.contents, TRUE
  99.         CASE PLA_XYGadget_Disabled;         RETURN self.disabled, TRUE
  100.  
  101.     ENDSELECT
  102.  
  103. ENDPROC -1, FALSE
  104.  
  105. -><
  106.  
  107. PROC min_size(ta:PTR TO textattr, fh) OF xygadget_plugin
  108. ENDPROC (IntuiTextLength([1, 0, NIL, 0, 0, ta, self.contents, NIL]:intuitext)+16), (fh+12)
  109.  
  110. ->PROC will_resize() OF xygadget_plugin IS (RESIZEX OR RESIZEY)
  111.  
  112. PROC gtrender(gl, vis, ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF xygadget_plugin
  113.  
  114.     self.gad:=CreateGadgetA(BUTTON_KIND, gl,
  115.                             [x, y, xs, ys, self.contents, ta, NIL, 0, vis, 0]:newgadget,
  116.                             [GA_DISABLED, self.disabled,
  117.                              TAG_DONE])
  118.  
  119. ENDPROC self.gad
  120.  
  121. PROC message_test(imsg:PTR TO intuimessage, win:PTR TO window) OF xygadget_plugin
  122.  
  123.   IF imsg.class=IDCMP_GADGETUP THEN RETURN (imsg.iaddress=self.gad)
  124.  
  125. ENDPROC FALSE
  126.  
  127. -> this ensures that the defined action in the EasyGUI layout is called
  128. PROC message_action(class, qual, code, win:PTR TO window) OF xygadget_plugin IS TRUE
  129.  
  130. /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */
  131.  
  132.  
  133.