/*
 *  Source machine generated by GadToolsBox V2.0b
 *  which is (c) Copyright 1991-1993 Jaba Development
 *
 *  GUI Designed by : (ray-1
 */

#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>
#include <clib/diskfont_protos.h>

#include "Post_man_GUI.h"

struct Screen         *Scr = NULL;
UBYTE                 *PubScreenName = NULL;
APTR                   VisualInfo = NULL;
struct Window         *Main_MenuWnd = NULL;
struct Window         *Mail_ManWnd = NULL;
struct Gadget         *Main_MenuGList = NULL;
struct Gadget         *Mail_ManGList = NULL;
struct TextFont       *Font       = NULL;
struct Gadget         *Main_MenuGadgets[5];
struct Gadget         *Mail_ManGadgets[3];
UWORD                  Main_MenuLeft = 186;
UWORD                  Main_MenuTop = 158;
UWORD                  Main_MenuWidth = 330;
UWORD                  Main_MenuHeight = 227;
UWORD                  Mail_ManLeft = 223;
UWORD                  Mail_ManTop = 233;
UWORD                  Mail_ManWidth = 261;
UWORD                  Mail_ManHeight = 85;
UBYTE                 *Main_MenuWdt = (UBYTE *)"Post_Man";
UBYTE                 *Mail_ManWdt = (UBYTE *)"Ready Mail.";

extern struct MinList LIST_VIEW0List;

struct Node LIST_VIEW0Nodes[] = {
	&LIST_VIEW0Nodes[1], ( struct Node * )&LIST_VIEW0List.mlh_Head, 0, 0, "Edge of Chaos",
	&LIST_VIEW0Nodes[2], &LIST_VIEW0Nodes[0], 0, 0, "Red Light District",
	&LIST_VIEW0Nodes[3], &LIST_VIEW0Nodes[1], 0, 0, "Northern Palace",
	&LIST_VIEW0Nodes[4], &LIST_VIEW0Nodes[2], 0, 0, "Every Warez",
	&LIST_VIEW0Nodes[5], &LIST_VIEW0Nodes[3], 0, 0, "Check Point",
	&LIST_VIEW0Nodes[6], &LIST_VIEW0Nodes[4], 0, 0, "Hall of Fame",
	&LIST_VIEW0Nodes[7], &LIST_VIEW0Nodes[5], 0, 0, "Water Deep",
	&LIST_VIEW0Nodes[8], &LIST_VIEW0Nodes[6], 0, 0, "Kings Randsom",
	&LIST_VIEW0Nodes[9], &LIST_VIEW0Nodes[7], 0, 0, "Psychokinesis",
        &LIST_VIEW0Nodes[10], &LIST_VIEW0Nodes[8], 0, 0,"Mental Hangover",
	( struct Node * )&LIST_VIEW0List.mlh_Tail, &LIST_VIEW0Nodes[9], 0, 0, "Something WonderFUL" };

struct MinList LIST_VIEW0List = {
	( struct MinNode * )&LIST_VIEW0Nodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&LIST_VIEW0Nodes[9] };

struct TextAttr XEN8 = {
	( STRPTR )"XEN.font", 8, 0x00, 0x00 };

UWORD Main_MenuGTypes[] = {
	BUTTON_KIND,
	BUTTON_KIND,
	BUTTON_KIND,
	TEXT_KIND,
	LISTVIEW_KIND
};

UWORD Mail_ManGTypes[] = {
	BUTTON_KIND,
	BUTTON_KIND,
	TEXT_KIND
};

struct NewGadget Main_MenuNGad[] = {
	6, 5, 93, 20, (UBYTE *)"About", NULL, GD_RESCAN, PLACETEXT_IN, NULL, NULL,
	114, 5, 95, 20, (UBYTE *)"Kill Server", NULL, GD_KILL_SERVER, PLACETEXT_IN, NULL, NULL,
	222, 5, 93, 21, (UBYTE *)"Run Server", NULL, GD_RUN_SERVER, PLACETEXT_IN, NULL, NULL,
	55, 194, 215, 17, (UBYTE *)"Server Is Currently:", NULL, GD_SERVER_STATUS, PLACETEXT_ABOVE, NULL, NULL,
	25, 46, 273, 112, NULL, NULL, GD_LIST_VIEW, 0, NULL, NULL
};

struct NewGadget Mail_ManNGad[] = {
	10, 47, 105, 24, (UBYTE *)"Upload-Mail", NULL, GD_PREP_MAIL, PLACETEXT_IN, NULL, NULL,
	124, 47, 111, 24, (UBYTE *)"Transfer Complete", NULL, GD_DELETE_MAIL, PLACETEXT_IN, NULL, NULL,
	8, 10, 234, 21, NULL, NULL, GD_BBS_NAME, 0, NULL, NULL
};

ULONG Main_MenuGTags[] = {
	(TAG_DONE),
	(TAG_DONE),
	(TAG_DONE),
	(GTTX_Border), TRUE, (TAG_DONE),
	(GTLV_Labels), (ULONG)&LIST_VIEW0List, (TAG_DONE)
};

ULONG Mail_ManGTags[] = {
	(TAG_DONE),
	(TAG_DONE),
	(GTTX_Border), TRUE, (TAG_DONE)
};

int SetupScreen( void )
{
	if ( ! ( Font = OpenDiskFont( &XEN8 )))
		return( 5L );

	if ( ! ( Scr = LockPubScreen( PubScreenName )))
		return( 1L );

	if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
		return( 2L );

	return( 0L );
}

void CloseDownScreen( void )
{
	if ( VisualInfo ) {
		FreeVisualInfo( VisualInfo );
		VisualInfo = NULL;
	}

	if ( Scr        ) {
		UnlockPubScreen( NULL, Scr );
		Scr = NULL;
	}

	if ( Font       ) {
		CloseFont( Font );
		Font = NULL;
	}
}

void Main_MenuRender( void )
{
	UWORD		offx, offy;

	offx = Main_MenuWnd->BorderLeft;
	offy = Main_MenuWnd->BorderTop;


	DrawBevelBox( Main_MenuWnd->RPort, offx + 1, offy + 1, 320, 29, GT_VisualInfo, VisualInfo, TAG_DONE );
	DrawBevelBox( Main_MenuWnd->RPort, offx + 0, offy + 169, 321, 55, GT_VisualInfo, VisualInfo, TAG_DONE );
	DrawBevelBox( Main_MenuWnd->RPort, offx + 1, offy + 31, 321, 137, GT_VisualInfo, VisualInfo, TAG_DONE );
}

int OpenMain_MenuWindow( void )
{
	struct NewGadget	ng;
	struct Gadget	*g;
	UWORD		lc, tc;
	UWORD		offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

	if ( ! ( g = CreateContext( &Main_MenuGList )))
		return( 1L );

	for( lc = 0, tc = 0; lc < Main_Menu_CNT; lc++ ) {

		CopyMem((char * )&Main_MenuNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));

		ng.ng_VisualInfo = VisualInfo;
		ng.ng_TextAttr   = &XEN8;
		ng.ng_LeftEdge  += offx;
		ng.ng_TopEdge   += offy;

		Main_MenuGadgets[ lc ] = g = CreateGadgetA((ULONG)Main_MenuGTypes[ lc ], g, &ng, ( struct TagItem * )&Main_MenuGTags[ tc ] );

		while( Main_MenuGTags[ tc ] ) tc += 2;
		tc++;

		if ( NOT g )
			return( 2L );
	}

	if ( ! ( Main_MenuWnd = OpenWindowTags( NULL,
				WA_Left,	Main_MenuLeft,
				WA_Top,		Main_MenuTop,
				WA_Width,	Main_MenuWidth,
				WA_Height,	Main_MenuHeight + offy,
				WA_IDCMP,	BUTTONIDCMP|TEXTIDCMP|LISTVIEWIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
				WA_Flags,	WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_RMBTRAP,
				WA_Gadgets,	Main_MenuGList,
				WA_Title,	Main_MenuWdt,
				WA_ScreenTitle,	"Lets Send Some Mail..",
				WA_PubScreen,	Scr,
				TAG_DONE )))
	return( 4L );

	GT_RefreshWindow( Main_MenuWnd, NULL );

	Main_MenuRender();

	return( 0L );
}

void CloseMain_MenuWindow( void )
{
	if ( Main_MenuWnd        ) {
		CloseWindow( Main_MenuWnd );
		Main_MenuWnd = NULL;
	}

	if ( Main_MenuGList      ) {
		FreeGadgets( Main_MenuGList );
		Main_MenuGList = NULL;
	}
}

void Mail_ManRender( void )
{
	UWORD		offx, offy;

	offx = Mail_ManWnd->BorderLeft;
	offy = Mail_ManWnd->BorderTop;


	DrawBevelBox( Mail_ManWnd->RPort, offx + 2, offy + 1, 250, 80, GT_VisualInfo, VisualInfo, TAG_DONE );
}

int OpenMail_ManWindow( void )
{
	struct NewGadget	ng;
	struct Gadget	*g;
	UWORD		lc, tc;
	UWORD		offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;

	if ( ! ( g = CreateContext( &Mail_ManGList )))
		return( 1L );

	for( lc = 0, tc = 0; lc < Mail_Man_CNT; lc++ ) {

		CopyMem((char * )&Mail_ManNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));

		ng.ng_VisualInfo = VisualInfo;
		ng.ng_TextAttr   = &XEN8;
		ng.ng_LeftEdge  += offx;
		ng.ng_TopEdge   += offy;

		Mail_ManGadgets[ lc ] = g = CreateGadgetA((ULONG)Mail_ManGTypes[ lc ], g, &ng, ( struct TagItem * )&Mail_ManGTags[ tc ] );

		while( Mail_ManGTags[ tc ] ) tc += 2;
		tc++;

		if ( NOT g )
			return( 2L );
	}

	if ( ! ( Mail_ManWnd = OpenWindowTags( NULL,
				WA_Left,	Mail_ManLeft,
				WA_Top,		Mail_ManTop,
				WA_Width,	Mail_ManWidth,
				WA_Height,	Mail_ManHeight + offy,
				WA_IDCMP,	BUTTONIDCMP|TEXTIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
				WA_Flags,	WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_RMBTRAP,
				WA_Gadgets,	Mail_ManGList,
				WA_Title,	Mail_ManWdt,
				WA_ScreenTitle,	"Lets Send Some Mail Then.",
				WA_PubScreen,	Scr,
				TAG_DONE )))
	return( 4L );

	GT_RefreshWindow( Mail_ManWnd, NULL );

	Mail_ManRender();

	return( 0L );
}

void CloseMail_ManWindow( void )
{
	if ( Mail_ManWnd        ) {
		CloseWindow( Mail_ManWnd );
		Mail_ManWnd = NULL;
	}

	if ( Mail_ManGList      ) {
		FreeGadgets( Mail_ManGList );
		Mail_ManGList = NULL;
	}
}

