#include <intuition/intuition.h>
#include <libraries/gadtools.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/gadtools.h>
#include <proto/intuition.h>
#define WIDTH     120
#define HEIGHT    20
#define OFFSET    5

struct NewGadget ngad = {OFFSET,OFFSET,WIDTH,HEIGHT,"Premi quì",NULL,1,
	PLACETEXT_IN,NULL,NULL};
struct Gadget *gad = NULL;

void main(void)
{
	struct Screen *scr;
	struct Window *win;
	struct IntuiMessage *msg;
	BOOL finito = FALSE;
	APTR vinfo;

	if((scr = OpenScreenTags(NULL,
		SA_LikeWorkbench, TRUE,
		SA_Title,         "Schermo di prova",
		TAG_DONE)))
	{
		if((vinfo = GetVisualInfoA(scr,NULL)))
		{
			ngad.ng_VisualInfo = vinfo;

			if((win = OpenWindowTags(NULL,
				WA_Top,        scr -> BarHeight + scr -> BarVBorder,
				WA_Height,     scr -> Height - scr -> BarHeight - scr -> BarVBorder,
				WA_IDCMP,      IDCMP_CLOSEWINDOW | IDCMP_GADGETUP |
									IDCMP_REFRESHWINDOW,
				WA_Flags,      WFLG_CLOSEGADGET | WFLG_SIZEGADGET |
									WFLG_DRAGBAR | WFLG_DEPTHGADGET,
				WA_Title,      "Finestra di prova",
				WA_PubScreen,  scr,
				TAG_DONE)))
			{
				/* Aggiusto in base alla dimensione del font */
				ngad.ng_LeftEdge += win -> BorderLeft;
				ngad.ng_TopEdge += win -> BorderTop;

				/* Più piccola di così no */
				WindowLimits(win,
					ngad.ng_LeftEdge + ngad.ng_Width + win -> BorderRight + OFFSET,
					ngad.ng_TopEdge + ngad.ng_Height + win -> BorderBottom + OFFSET,0,0);

				if((gad = CreateGadget(BUTTON_KIND,CreateContext(&gad),&ngad,TAG_DONE)))
				{
					/* Aggiungo il bottone alla finestra */
					AddGList(win,gad,0,1,NULL);

					/* Rinfresco i bottoni */
					RefreshGList(gad,win,NULL,1);

					/* Rinfresco i bottoni della finestra */
					GT_RefreshWindow(win,NULL);
					//DisegnaCornice(win);
					while(!finito)
					{
						WaitPort(win -> UserPort);
						while((msg = GT_GetIMsg(win -> UserPort)))
						{
							switch(msg -> Class)
							{
								case IDCMP_CLOSEWINDOW:
									finito = TRUE;
								break;
								case IDCMP_GADGETUP:
									Printf("Bottone premuto!\n");
								break;
								case IDCMP_REFRESHWINDOW:
									GT_BeginRefresh(win);
									GT_EndRefresh(win,TRUE);
								break;
							}
							GT_ReplyIMsg(msg);
						}
					}
				}
				CloseWindow(win);
			}
			FreeGadgets(gad);
			FreeVisualInfo(vinfo);
		}
		CloseScreen(scr);
	}
}
