home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / easygui_os12 / source / easyplugins / xygadget_os12.e < prev   
Encoding:
Text File  |  2000-06-11  |  3.2 KB  |  150 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
  19. OPT PREPROCESS
  20.  
  21. -> RST: Added conditional EASY_OS12 support
  22. #define EASY_OS12
  23.  
  24. #ifdef EASY_OS12
  25.   MODULE 'tools/easygui_os12', 'hybrid/tagdata'
  26.   #define GetTagData getTagData
  27. #endif
  28. #ifndef EASY_OS12
  29.   OPT OSVERSION=37
  30.   MODULE 'tools/easygui', 'utility'
  31. #endif
  32.  
  33. MODULE 'intuition/intuition',
  34.        'graphics/text', 'intuition/gadgetclass',
  35.        'gadtools', 'libraries/gadtools',
  36.        'utility/tagitem'
  37.  
  38. EXPORT OBJECT xygadget_plugin OF plugin PRIVATE
  39.  
  40.     contents:PTR TO CHAR
  41.     disabled
  42.  
  43.     gad:PTR TO gadget
  44.  
  45. ENDOBJECT
  46.  
  47. -> PROGRAMMER_ID | MODULE_ID
  48. ->      $01      |   $04
  49.  
  50.  
  51. EXPORT ENUM PLA_XYGadget_Text=$81040001,
  52.             PLA_XYGadget_Disabled
  53.  
  54. PROC xygadget(tags=NIL:PTR TO tagitem) OF xygadget_plugin
  55.  
  56. #ifndef EASY_OS12
  57.     IF utilitybase
  58. #endif
  59.  
  60.         self.contents:=GetTagData(PLA_XYGadget_Text, '', tags)
  61.         self.disabled:=GetTagData(PLA_XYGadget_Disabled, FALSE, tags)
  62.  
  63. #ifndef EASY_OS12
  64.     ELSE
  65.  
  66.         Raise("util")
  67.  
  68.     ENDIF
  69. #endif
  70.  
  71. ENDPROC
  72.  
  73. ->> xygadget_plugin: set() & get()
  74.  
  75. PROC set(attr, value) OF xygadget_plugin
  76.  
  77.     SELECT attr
  78.  
  79.         CASE PLA_XYGadget_Text
  80.  
  81.             IF self.contents<>value
  82.  
  83.                 self.contents:=value
  84.  
  85.                 IF (self.gad AND self.gh.wnd)
  86.  
  87.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_TEXT, self.contents, TAG_DONE])
  88.  
  89.                 ENDIF
  90.  
  91.             ENDIF
  92.  
  93.         CASE PLA_XYGadget_Disabled
  94.  
  95.             IF self.disabled<>value
  96.  
  97.                 self.disabled:=value
  98.  
  99.                 IF (self.gad AND self.gh.wnd)
  100.  
  101.                     Gt_SetGadgetAttrsA(self.gad, self.gh.wnd, NIL, [GA_DISABLED, self.disabled, TAG_DONE])
  102.  
  103.                 ENDIF
  104.  
  105.             ENDIF
  106.  
  107.     ENDSELECT
  108.  
  109. ENDPROC
  110.  
  111. PROC get(attr) OF xygadget_plugin
  112.  
  113.     SELECT attr
  114.  
  115.         CASE PLA_XYGadget_Text;             RETURN self.contents, TRUE
  116.         CASE PLA_XYGadget_Disabled;         RETURN self.disabled, TRUE
  117.  
  118.     ENDSELECT
  119.  
  120. ENDPROC -1, FALSE
  121.  
  122. -><
  123.  
  124. PROC min_size(ta:PTR TO textattr, fh) OF xygadget_plugin
  125. ENDPROC (IntuiTextLength([1, 0, NIL, 0, 0, ta, self.contents, NIL]:intuitext)+16), (fh+12)
  126.  
  127. ->PROC will_resize() OF xygadget_plugin IS (RESIZEX OR RESIZEY)
  128.  
  129. PROC gtrender(gl, vis, ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF xygadget_plugin
  130.  
  131.     self.gad:=CreateGadgetA(BUTTON_KIND, gl,
  132.                             [x, y, xs, ys, self.contents, ta, NIL, 0, vis, 0]:newgadget,
  133.                             [GA_DISABLED, self.disabled,
  134.                              TAG_DONE])
  135.  
  136. ENDPROC self.gad
  137.  
  138. PROC message_test(imsg:PTR TO intuimessage, win:PTR TO window) OF xygadget_plugin
  139.  
  140.   IF imsg.class=IDCMP_GADGETUP THEN RETURN (imsg.iaddress=self.gad)
  141.  
  142. ENDPROC FALSE
  143.  
  144. -> this ensures that the defined action in the EasyGUI layout is called
  145. PROC message_action(class, qual, code, win:PTR TO window) OF xygadget_plugin IS TRUE
  146.  
  147. /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */
  148.  
  149.  
  150.