/*
 * 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

   char * mx_labels[]={"Amiga 500","Amiga 1000","Amiga 2000",
                       "Amiga 3000","Amiga 4000",NULL};
struct Gadget *InnerGui_Gadgets[2];

struct Box InnerGui1={
   GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,NULL
};

#define InnerGui_1 0

ULONG InnerGuiTags2[]={
   GTMX_Labels,(ULONG)mx_labels ,TAG_DONE
};

struct GadInfo InnerGui2={
   MX_KIND,0,0,2,5,4+INTERWIDTH,4+INTERHEIGHT,0,0,0,0,0,
   INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
   "",1,0,0,NULL,InnerGuiTags2
};

#define InnerGui_2 1

ULONG InnerGuiTags3[]={
   TAG_DONE
};

struct GadInfo InnerGui3={
   BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
   INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
   "Just a Test" ,2,0,0,NULL,InnerGuiTags3
};

struct Box *InnerGuiV0[]={
   &InnerGui1,
   (struct Box *)&InnerGui2,
   (struct Box *)&InnerGui3,
   NULL
};

struct Box InnerGui0={
   GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,InnerGuiV0
};

struct WinInfo InnerGui = {
   &InnerGui0,InnerGui_Gadgets
};

int Custom(struct WinInfo *winfo,
                     struct NewGadget *ng,
                     struct GadInfo *gad,
                     int left, int top, int width, int height)
{
   if(winfo->Render) {
      DrawBevelBox(winfo->Window->RPort,ng->ng_LeftEdge,ng->ng_TopEdge,
                                     ng->ng_Width,ng->ng_Height,
                                     GT_VisualInfo,winfo->Visual,TAG_DONE);
   }
   return(SubGui(winfo,&InnerGui,ng->ng_LeftEdge,ng->ng_TopEdge,
                                 ng->ng_Width,ng->ng_Height));
}
struct Gadget *TestPro_Gadgets[3];

#define TestPro_0 0

ULONG TestProTags1[]={
   TAG_DONE
};

struct GadInfo TestPro1={
   CUSTOM_KIND,1,1,0,0,0+0,0+0,0,0,0,0,BOXFLG_CUSTOM,
   INTERWIDTH,INTERHEIGHT,0,Custom ,NULL,
   "",0,0,0,NULL,TestProTags1
};

#define TestPro_4 1

ULONG TestProTags3[]={
   TAG_DONE
};

struct GadInfo TestPro3={
   BUTTON_KIND,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,
   INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
   "OK" ,4,0,0,NULL,TestProTags3
};

struct Box TestPro4={
   GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,NULL
};

#define TestPro_5 2

ULONG TestProTags5[]={
   TAG_DONE
};

struct GadInfo TestPro5={
   BUTTON_KIND,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,
   INTERWIDTH,INTERHEIGHT,2,NULL,NULL,
   "Cancel" ,5,0,0,NULL,TestProTags5
};

struct Box *TestProV2[]={
   (struct Box *)&TestPro3,
   &TestPro4,
   (struct Box *)&TestPro5,
   NULL
};

struct Box TestPro2={
   GL_HBOX,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,TestProV2
};

struct Box *TestProV0[]={
   (struct Box *)&TestPro1,
   &TestPro2,
   NULL
};

struct Box TestPro0={
   GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,TestProV0
};

struct WinInfo TestPro = {
   &TestPro0,TestPro_Gadgets
};

