#ifndef WORKBENCH_WORKBENCH_H
#define WORKBENCH_WORKBENCH_H

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif
#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif
#ifndef EXEC_TASKS_H
#include <exec/tasks.h>
#endif
#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif

#ifdef __IGNORE_NOT_SUPPORTED__

#define WBDISK          1
#define WBDRAWER        2
#define WBTOOL          3
#define WBPROJECT       4
#define WBGARBAGE       5
#define WBDEVICE        6
#define WBKICK          7
#define WBAPPICON       8

struct OldDrawerData {
    struct NewWindow    dd_NewWindow;
    LONG                dd_CurrentX;
    LONG                dd_CurrentY;
};
#define OLDDRAWERDATAFILESIZE   (sizeof(struct OldDrawerData))

struct DrawerData {
    struct NewWindow    dd_NewWindow;
    LONG                dd_CurrentX;
    LONG                dd_CurrentY;
    ULONG               dd_Flags;
    UWORD               dd_ViewModes;
};
#define DRAWERDATAFILESIZE      (sizeof(struct DrawerData))

struct DiskObject {
    UWORD               do_Magic;
    UWORD               do_Version;
    struct Gadget       do_Gadget;
    UBYTE               do_Type;
    char *              do_DefaultTool;
    char **             do_ToolTypes;
    LONG                do_CurrentX;
    LONG                do_CurrentY;
    struct DrawerData * do_DrawerData;
    char *              do_ToolWindow;
    LONG                do_StackSize;

};

#define WB_DISKMAGIC    0xe310
#define WB_DISKVERSION  1
#define WB_DISKREVISION 1
#define WB_DISKREVISIONMASK     255

struct FreeList {
    WORD                fl_NumFree;
    struct List         fl_MemList;
};

#define GFLG_GADGBACKFILL 0x0001
#define GADGBACKFILL      0x0001
#define NO_ICON_POSITION        (0x80000000)
#define WORKBENCH_NAME          "workbench.library"
#define AM_VERSION      1

struct AppMessage {
    struct Message am_Message;
    UWORD am_Type;
    ULONG am_UserData;
    ULONG am_ID;
    LONG am_NumArgs;
    struct WBArg *am_ArgList;
    UWORD am_Version;
    UWORD am_Class;
    WORD am_MouseX;
    WORD am_MouseY;
    ULONG am_Seconds;
    ULONG am_Micros;
    ULONG am_Reserved[8];
};

#define AMTYPE_APPWINDOW   7
#define AMTYPE_APPICON     8
#define AMTYPE_APPMENUITEM 9


struct AppWindow        { void *aw_PRIVATE;  };
struct AppIcon          { void *ai_PRIVATE;  };
struct AppMenuItem      { void *ami_PRIVATE; };

#endif /** __IGNORE_NOT_SUPPORTED__ **/

#endif  /* !WORKBENCH_WORKBENCH_H */
