home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / easygui_os12 / source / easyplugins / iconbox_os12.e < prev    next >
Encoding:
Text File  |  2000-06-11  |  4.6 KB  |  233 lines

  1.  
  2. /*
  3.  
  4.     $VER: iconbox_plugin 1.4 (30.1.98)
  5.  
  6.     Author:         Ali Graham ($01)
  7.                     <agraham@hal9000.net.au>
  8.  
  9.     PLUGIN id:      $01
  10.  
  11.     Desc.:          A box to display icon images and accept icon drops.
  12.  
  13.     Tags:           PLA_IconBox_IconName            [ISG]
  14.                     PLA_IconBox_ShowSelected        [ISG]
  15.                     PLA_IconBox_Disabled            [ISG]
  16.  
  17. */
  18.  
  19. OPT MODULE
  20. OPT PREPROCESS
  21.  
  22. -> RST: Added conditional EASY_OS12 support
  23. #define EASY_OS12
  24.  
  25. #ifdef EASY_OS12
  26.   MODULE 'tools/easygui_os12','hybrid/tagdata'
  27.   #define GetTagData getTagData
  28. #endif
  29. #ifndef EASY_OS12
  30.   OPT OSVERSION=37
  31.   MODULE 'tools/easygui','utility'
  32. #endif
  33.  
  34. ->> iconbox_plugin: Modules
  35. MODULE 'graphics/text',
  36.        'intuition/intuition', 'graphics/rastport'
  37.  
  38. MODULE 'utility/tagitem'
  39.  
  40. MODULE 'workbench/workbench', 'workbench/startup', 'icon'
  41.  
  42. MODULE 'tools/ghost'
  43.  
  44. -><
  45.  
  46. /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
  47.  
  48. ->> iconbox_plugin: Definitions
  49. EXPORT OBJECT iconbox_plugin OF plugin PRIVATE
  50.  
  51.     name
  52.     selected
  53.     disabled
  54.  
  55.     icon:PTR TO diskobject
  56.  
  57. ENDOBJECT
  58.  
  59. -> PROGRAMMER_ID | MODULE_ID
  60. ->      $01      |   $01
  61.  
  62. EXPORT ENUM PLA_IconBox_IconName=$81010001,
  63.             PLA_IconBox_ShowSelected,
  64.             PLA_IconBox_Disabled
  65.  
  66. -><
  67.  
  68. /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
  69.  
  70. ->> iconbox_plugin: iconbox() & end()
  71.  
  72. PROC iconbox(tags=NIL:PTR TO tagitem) OF iconbox_plugin
  73.  
  74. #ifndef EASY_OS12
  75.     IF (utilitybase AND iconbase)
  76. #endif
  77. #ifdef EASY_OS12
  78.     IF iconbase
  79. #endif
  80.         self.name     := self.set(PLA_IconBox_IconName, GetTagData(PLA_IconBox_IconName, '', tags))
  81.         self.selected := GetTagData(PLA_IconBox_ShowSelected, FALSE, tags)
  82.         self.disabled := GetTagData(PLA_IconBox_Disabled, FALSE, tags)
  83.  
  84.     ELSE
  85.  
  86.         Raise("iblb")
  87.  
  88.     ENDIF
  89.  
  90. ENDPROC
  91.  
  92. PROC end() OF iconbox_plugin IS self.set(PLA_IconBox_IconName, NIL)
  93.  
  94. -><
  95.  
  96. ->> iconbox_plugin: set() & get()
  97.  
  98. PROC set(attr, value) OF iconbox_plugin
  99.  
  100.     SELECT attr
  101.  
  102.         CASE PLA_IconBox_IconName
  103.  
  104.             IF self.name<>value
  105.  
  106.                 IF self.icon
  107.  
  108.                     FreeDiskObject(self.icon)
  109.                     self.icon:=NIL
  110.  
  111.                 ENDIF
  112.  
  113.                 IF value
  114.  
  115.                     IF StrLen(value)>0
  116.  
  117.                         self.name:=value
  118.                         self.icon:=GetDiskObject(self.name)
  119.  
  120.                     ENDIF
  121.  
  122.                 ENDIF
  123.  
  124.                 IF (self.disabled=FALSE) THEN  self.draw(self.gh.wnd)
  125.  
  126.             ENDIF
  127.  
  128.         CASE PLA_IconBox_ShowSelected
  129.  
  130.             IF self.selected<>value
  131.  
  132.                 self.selected:=value
  133.  
  134.                 IF (self.disabled=FALSE) THEN self.draw(self.gh.wnd)
  135.  
  136.             ENDIF
  137.  
  138.         CASE PLA_IconBox_Disabled
  139.  
  140.             IF self.disabled<>value
  141.  
  142.                 self.disabled:=value
  143.  
  144.                 self.draw(self.gh.wnd)
  145.  
  146.             ENDIF
  147.  
  148.     ENDSELECT
  149.  
  150. ENDPROC
  151.  
  152. PROC get(attr) OF iconbox_plugin
  153.  
  154.     SELECT attr
  155.  
  156.         CASE PLA_IconBox_IconName;      RETURN self.name, TRUE
  157.         CASE PLA_IconBox_ShowSelected;  RETURN self.selected, TRUE
  158.         CASE PLA_IconBox_Disabled;      RETURN self.disabled, TRUE
  159.  
  160.     ENDSELECT
  161.  
  162. ENDPROC -1, FALSE
  163.  
  164. -><
  165.  
  166. ->> iconbox_plugin: draw()
  167. PROC draw(win:PTR TO window) OF iconbox_plugin
  168.  
  169.     IF win
  170.  
  171.         SetStdRast(win.rport)
  172.  
  173.         Box(self.x, self.y, (self.x+(self.xs-1)), (self.y+(self.ys-1)), 0)
  174.  
  175.         IF self.icon AND (self.disabled=FALSE)
  176.  
  177.             IF (self.icon.gadget.width < self.xs) AND (self.icon.gadget.height < self.ys)
  178.  
  179.                 DrawImage(win.rport,
  180.                           IF self.selected THEN self.icon.gadget.selectrender ELSE self.icon.gadget.gadgetrender,
  181.                           self.x+((self.xs-self.icon.gadget.width)/2), self.y+((self.ys-self.icon.gadget.height)/2))
  182.  
  183.             ENDIF
  184.  
  185.         ENDIF
  186.  
  187.         IF self.disabled THEN ghost(win, self.x, self.y, self.xs, self.ys)
  188.  
  189.     ENDIF
  190.  
  191. ENDPROC
  192. -><
  193.  
  194. ->> easygui standard procs
  195. PROC min_size(ta:PTR TO textattr, fh) OF iconbox_plugin
  196.  
  197.     DEF width, height
  198.  
  199.     IF self.icon
  200.  
  201.         width:=self.icon.gadget.width + 16
  202.         height:=self.icon.gadget.height + 12
  203.  
  204.     ELSE
  205.  
  206.         width:=48
  207.         height:=32
  208.  
  209.     ENDIF
  210.  
  211. ENDPROC width, height
  212.  
  213. PROC will_resize() OF iconbox_plugin IS (RESIZEX OR RESIZEY)
  214.  
  215. PROC render(ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF iconbox_plugin
  216.  
  217.    self.draw(win)
  218.  
  219. ENDPROC
  220.  
  221. PROC appmessage(amsg:PTR TO appmessage, win:PTR TO window) OF iconbox_plugin
  222.  
  223.     DEF xok=FALSE, yok=FALSE
  224.  
  225.     xok:=(amsg.mousex>=(self.x)) AND (amsg.mousex<=(self.x+self.xs-1))
  226.     yok:=(amsg.mousey>=(self.y)) AND (amsg.mousey<=(self.y+self.ys-1))
  227.  
  228. ENDPROC ((xok AND yok) AND (self.disabled=FALSE))
  229.  
  230. -><
  231.  
  232.  
  233.