/*
 * Source generated by GenGui V1.0
 * which is (c)1994 by Matthias Meixner
 */

#ifndef _GUI_LAYOUT
#define _GUI_LAYOUT

#include <exec/types.h>
#include <libraries/gadtools.h>
#include <proto/gadtools.h>

#include <intuition/gadgetclass.h>
#define GL_VBOX -1
#define GL_HBOX -2
#define CUSTOM_KIND -3

#define MODE_NEW     0
#define MODE_RESIZE  1
#define MODE_REFRESH 2
#define MODE_FREE    3
#define MODE_BACKUP  4
#define MODE_RESTORE 5

#define BOXFLG_CUSTOM   1
#define BOXFLG_STRING   2
#define BOXFLG_INTEGER  4
#define BOXFLG_DISABLED 8
#define BOXFLG_BACKUP  16
#define BOXFLG_INITED  (1<<15)

#define GetString(g) (((struct StringInfo * )g->SpecialInfo)->Buffer)
#define GetNumber(g) (((struct StringInfo * )g->SpecialInfo)->LongInt)
#define GetInfo(g) ((struct GadInfo *)((g)->UserData))
#define GetUserData(g) (GetInfo(g)->UserData)

struct GadDim {
   int Kind;
   USHORT Rx,Ry,Cx,Cy,Px,Py,SRx,SRy,SPx,SPy;
   USHORT Flags;
};

struct Box {
   struct GadDim Dim;
   struct Box **Entry;
};

struct WinInfo {
   struct Box *Box;
   struct Gadget **Gadgets;
   struct Gadget *Prev;
   struct Window *Window;
   struct Gadget *GList;
   int FontX,FontY;
   struct TextAttr TextAttr;
   APTR Visual;
   char Mode,Render;
   USHORT MinX,MinY;
};

struct GadInfo {
   struct GadDim dim;
   int XSpace,YSpace,GadNum;
   int (*CustomFunc)(struct WinInfo *WInfo,
                     struct NewGadget *NewGad,
                     struct GadInfo *GadInfo,
                     int Left, int Top, int Width, int Height);
   struct TextAttr *TextAttr;
   char *Text;
   int GadgetID;
   ULONG Flags,UserData;
   int(*HookFunc)(struct IntuiMessage *);
   ULONG *Tags;
   ULONG *SaveTags;
   ULONG Code;
   struct Gadget *ThisGad;
};

int RenderGui(struct Window *win, struct WinInfo *winfo);
int ResizeGui(struct WinInfo *winfo);
int RefreshGui(struct WinInfo *winfo);
void FreeGui(struct WinInfo *winfo);
void StopGui(struct WinInfo *winfo);
int SubGui(struct WinInfo *, struct WinInfo *,int ,int ,int , int );

void ClearWindow(struct Window *);
struct IntuiMessage *Gui_GetIMsg(struct MsgPort *userport,struct IntuiMessage *);

BOOL Gui_SetGadgetAttrs(struct Gadget *,struct Window *,
                        struct Requester *, ULONG ,...);
BOOL Gui_SetGadgetAttrsA(struct Gadget *,struct Window *,
                        struct Requester *, ULONG *);
#endif

#define InnerGui_1 0
#define InnerGui_2 1

extern struct Gadget *InnerGui_Gadgets[];
extern struct WinInfo InnerGui;

#define TestPro_0 0
#define TestPro_4 1
#define TestPro_5 2

extern struct Gadget *TestPro_Gadgets[];
extern struct WinInfo TestPro;

