home *** CD-ROM | disk | FTP | other *** search
- #include <classes/Workbench/icon.h>
-
- #include <pragma/icon_lib.h>
- #include <pragma/dos_lib.h>
-
- DiskObjectC::DiskObjectC(STRPTR name, BPTR lock)
- {
- objectname = name;
- objectlock = lock;
- icon = NULL;
- }
-
- DiskObjectC::~DiskObjectC()
- {
- if (icon)
- FreeDiskObject(icon);
- }
-
- BOOL DiskObjectC::get()
- {
- if (objectname)
- if (!objectlock)
- return (icon = GetDiskObject(objectname)) != NULL
- else {
- BPTR olddir = CurrentDir(objectlock);
- BOOL b = ((icon = GetDiskObject(objectname)) != NULL);
- CurrentDir(olddir);
- return b;
- };
- return FALSE;
- }
-
- BOOL DiskObjectC::remove()
- {
- if (objectname)
- return DeleteDiskObject(objectname);
- return FALSE;
- }
-
- UBYTE DiskObjectC::type()
- {
- if (icon)
- return icon->do_Type;
- return 0;
- }
-
- STRPTR *DiskObjectC::toolTypes()
- {
- if (icon)
- return (STRPTR *) icon->do_ToolTypes;
- return NULL;
- }
-
- STRPTR DiskObjectC::defaultTool()
- {
- if (icon)
- return icon->do_DefaultTool;
- return NULL;
- }
-
- LONG DiskObjectC::stackSize()
- {
- if (icon)
- return icon->do_StackSize;
- return 0;
- }
-
- LONG DiskObjectC::currentX()
- {
- if (icon)
- return icon->do_CurrentX;
- return NO_ICON_POSITION;
- }
-
- LONG DiskObjectC::currentY()
- {
- if (icon)
- return icon->do_CurrentY;
- return NO_ICON_POSITION;
- }
-
- STRPTR DiskObjectC::findToolType(STRPTR type)
- {
- if (icon)
- return FindToolType((UBYTE **) icon->do_ToolTypes,type);
- return NULL;
- }
-
- BOOL DiskObjectC::matchToolType(STRPTR type, STRPTR value)
- {
- if (icon)
- {
- STRPTR x = FindToolType((UBYTE **) icon->do_ToolTypes,type);
- if (x)
- return MatchToolValue(x,value);
- };
- return FALSE;
- }
-
- BOOL DiskObjectC::matchToolValue(STRPTR tooltype, STRPTR value)
- {
- if (tooltype)
- return MatchToolValue(tooltype,value);
- return FALSE;
- }
-
- // ******************************************************
-
- ToolTypeCursorC::ToolTypeCursorC(DiskObjectC &o)
- {
- object = &o;
- pos = NULL;
- }
-
- VOID ToolTypeCursorC::first()
- {
- pos = object->toolTypes();
- }
-
- VOID ToolTypeCursorC::next()
- {
- if (!isDone())
- pos++;
- }
-
- BOOL ToolTypeCursorC::isDone()
- {
- if (!pos)
- first();
- if (!pos)
- return TRUE;
- return *pos == NULL;
- }
-
- STRPTR ToolTypeCursorC::item()
- {
- if (isDone())
- return NULL;
- return *pos;
- }
-
- // *******************************************************
-
- BOOL DiskObjectNewC::get()
- {
- if (objectname)
- if (!objectlock)
- return (icon = GetDiskObjectNew(objectname)) != NULL
- else {
- BPTR olddir = CurrentDir(objectlock);
- BOOL b = ((icon = GetDiskObjectNew(objectname)) != NULL);
- CurrentDir(olddir);
- return b;
- };
- return FALSE;
- }
-
- // *******************************************************
-
- DefDiskObjectC::DefDiskObjectC(LONG type)
- : DiskObjectC(NULL)
- {
- objecttype = type;
- }
-
- DefDiskObjectC::~DefDiskObjectC()
- {
- }
-
- BOOL DefDiskObjectC::get()
- {
- return (icon = GetDefDiskObject(objecttype)) != NULL;
- }
-
- // ******************************************************
-
- NewDiskObjectC::NewDiskObjectC(UBYTE type)
- {
- object.do_Magic = WB_DISKMAGIC;
- object.do_Version = WB_DISKVERSION;
- object.do_Gadget.Flags = GADGIMAGE;
- object.do_Gadget.Activation = RELVERIFY|GADGIMMEDIATE;
- object.do_Gadget.GadgetType = BOOLGADGET;
- object.do_Type = type;
- object.do_CurrentX = NO_ICON_POSITION;
- object.do_CurrentY = NO_ICON_POSITION;
- switch (type)
- {
- case WBDISK:
- case WBDRAWER:
- case WBGARBAGE:
- object.do_DrawerData = &drawer;
- drawer.dd_CurrentX = NO_ICON_POSITION;
- drawer.dd_CurrentY = NO_ICON_POSITION;
- break;
- };
- object.do_StackSize = 4000;
- }
-
- NewDiskObjectC::NewDiskObjectC(DiskObjectC &obj)
- {
- object.do_Magic = WB_DISKMAGIC;
- object.do_Version = WB_DISKVERSION;
- object.do_Gadget.Flags = GADGIMAGE;
- object.do_Gadget.Activation = RELVERIFY|GADGIMMEDIATE;
- object.do_Gadget.GadgetType = BOOLGADGET;
- drawer.dd_CurrentX = NO_ICON_POSITION;
- drawer.dd_CurrentY = NO_ICON_POSITION;
- source = &obj;
- }
-
- NewDiskObjectC::~NewDiskObjectC()
- {
- }
-
- BOOL NewDiskObjectC::put(STRPTR name)
- {
- return FALSE;
- }
-
- // ******************************************************
-