home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC7.DMS / in.adf / classsource.lha / ClassSource / Workbench / icon.c next >
Encoding:
C/C++ Source or Header  |  1995-02-12  |  3.8 KB  |  222 lines

  1. #include <classes/Workbench/icon.h>
  2.  
  3. #include <pragma/icon_lib.h>
  4. #include <pragma/dos_lib.h>
  5.  
  6. DiskObjectC::DiskObjectC(STRPTR name, BPTR lock)
  7. {
  8.     objectname = name;
  9.     objectlock = lock;
  10.     icon = NULL;
  11. }
  12.  
  13. DiskObjectC::~DiskObjectC()
  14. {
  15.     if (icon)
  16.         FreeDiskObject(icon);
  17. }
  18.  
  19. BOOL DiskObjectC::get()
  20. {
  21.     if (objectname)
  22.         if (!objectlock)
  23.             return (icon = GetDiskObject(objectname)) != NULL
  24.         else {
  25.             BPTR olddir = CurrentDir(objectlock);
  26.             BOOL b = ((icon = GetDiskObject(objectname)) != NULL);
  27.             CurrentDir(olddir);
  28.             return b;
  29.         };
  30.     return FALSE;
  31. }
  32.  
  33. BOOL DiskObjectC::remove()
  34. {
  35.     if (objectname)
  36.         return DeleteDiskObject(objectname);
  37.     return FALSE;
  38. }
  39.  
  40. UBYTE DiskObjectC::type()
  41. {
  42.     if (icon)
  43.         return icon->do_Type;
  44.     return 0;
  45. }
  46.  
  47. STRPTR *DiskObjectC::toolTypes()
  48. {
  49.     if (icon)
  50.         return (STRPTR *) icon->do_ToolTypes;
  51.     return NULL;
  52. }
  53.  
  54. STRPTR DiskObjectC::defaultTool()
  55. {
  56.     if (icon)
  57.         return icon->do_DefaultTool;
  58.     return NULL;
  59. }
  60.  
  61. LONG DiskObjectC::stackSize()
  62. {
  63.     if (icon)
  64.         return icon->do_StackSize;
  65.     return 0;
  66. }
  67.  
  68. LONG DiskObjectC::currentX()
  69. {
  70.     if (icon)
  71.         return icon->do_CurrentX;
  72.     return NO_ICON_POSITION;
  73. }
  74.  
  75. LONG DiskObjectC::currentY()
  76. {
  77.     if (icon)
  78.         return icon->do_CurrentY;
  79.     return NO_ICON_POSITION;
  80. }
  81.  
  82. STRPTR DiskObjectC::findToolType(STRPTR type)
  83. {
  84.     if (icon)
  85.         return FindToolType((UBYTE **) icon->do_ToolTypes,type);
  86.     return NULL;
  87. }
  88.  
  89. BOOL DiskObjectC::matchToolType(STRPTR type, STRPTR value)
  90. {
  91.     if (icon)
  92.     {
  93.         STRPTR x = FindToolType((UBYTE **) icon->do_ToolTypes,type);
  94.         if (x)
  95.             return MatchToolValue(x,value);
  96.     };
  97.     return FALSE;
  98. }
  99.  
  100. BOOL DiskObjectC::matchToolValue(STRPTR tooltype, STRPTR value)
  101. {
  102.     if (tooltype)
  103.         return MatchToolValue(tooltype,value);
  104.     return FALSE;
  105. }
  106.  
  107. // ******************************************************
  108.  
  109. ToolTypeCursorC::ToolTypeCursorC(DiskObjectC &o)
  110. {
  111.     object = &o;
  112.     pos = NULL;
  113. }
  114.  
  115. VOID ToolTypeCursorC::first()
  116. {
  117.     pos = object->toolTypes();
  118. }
  119.  
  120. VOID ToolTypeCursorC::next()
  121. {
  122.     if (!isDone())
  123.         pos++;
  124. }
  125.  
  126. BOOL ToolTypeCursorC::isDone()
  127. {
  128.     if (!pos)
  129.         first();
  130.     if (!pos)
  131.         return TRUE;
  132.     return *pos == NULL;
  133. }
  134.  
  135. STRPTR ToolTypeCursorC::item()
  136. {
  137.     if (isDone())
  138.         return NULL;
  139.     return *pos;
  140. }
  141.  
  142. // *******************************************************
  143.  
  144. BOOL DiskObjectNewC::get()
  145. {
  146.     if (objectname)
  147.         if (!objectlock)
  148.             return (icon = GetDiskObjectNew(objectname)) != NULL
  149.         else {
  150.             BPTR olddir = CurrentDir(objectlock);
  151.             BOOL b = ((icon = GetDiskObjectNew(objectname)) != NULL);
  152.             CurrentDir(olddir);
  153.             return b;
  154.         };
  155.     return FALSE;
  156. }
  157.  
  158. // *******************************************************
  159.  
  160. DefDiskObjectC::DefDiskObjectC(LONG type)
  161.     : DiskObjectC(NULL)
  162. {
  163.     objecttype = type;
  164. }
  165.  
  166. DefDiskObjectC::~DefDiskObjectC()
  167. {
  168. }
  169.  
  170. BOOL DefDiskObjectC::get()
  171. {
  172.     return (icon = GetDefDiskObject(objecttype)) != NULL;
  173. }
  174.  
  175. // ******************************************************
  176.  
  177. NewDiskObjectC::NewDiskObjectC(UBYTE type)
  178. {
  179.     object.do_Magic = WB_DISKMAGIC;
  180.     object.do_Version = WB_DISKVERSION;
  181.     object.do_Gadget.Flags = GADGIMAGE;
  182.     object.do_Gadget.Activation = RELVERIFY|GADGIMMEDIATE;
  183.     object.do_Gadget.GadgetType = BOOLGADGET;
  184.     object.do_Type = type;
  185.     object.do_CurrentX = NO_ICON_POSITION;
  186.     object.do_CurrentY = NO_ICON_POSITION;
  187.     switch (type)
  188.     {
  189.         case WBDISK:
  190.         case WBDRAWER:
  191.         case WBGARBAGE:
  192.             object.do_DrawerData = &drawer;
  193.             drawer.dd_CurrentX = NO_ICON_POSITION;
  194.             drawer.dd_CurrentY = NO_ICON_POSITION;
  195.             break;
  196.     };
  197.     object.do_StackSize = 4000;
  198. }
  199.  
  200. NewDiskObjectC::NewDiskObjectC(DiskObjectC &obj)
  201. {
  202.     object.do_Magic = WB_DISKMAGIC;
  203.     object.do_Version = WB_DISKVERSION;
  204.     object.do_Gadget.Flags = GADGIMAGE;
  205.     object.do_Gadget.Activation = RELVERIFY|GADGIMMEDIATE;
  206.     object.do_Gadget.GadgetType = BOOLGADGET;
  207.     drawer.dd_CurrentX = NO_ICON_POSITION;
  208.     drawer.dd_CurrentY = NO_ICON_POSITION;
  209.     source = &obj;
  210. }
  211.  
  212. NewDiskObjectC::~NewDiskObjectC()
  213. {
  214. }
  215.  
  216. BOOL NewDiskObjectC::put(STRPTR name)
  217. {
  218.     return FALSE;
  219. }
  220.  
  221. // ******************************************************
  222.