#ifndef	GLOBAL_H
#define	GLOBAL_H

#include "maker.h"
#include "proto.h"

#ifdef MAIN
	#define EXPORT
#else
	#define EXPORT	extern
#endif

#define	MENU_Project		0
enum { ITEM_About, ITEM_Open, ITEM_SaveAs, ITEM_WriteItems, ITEM_Quit };

#define	MENU_Objects		1
enum { ITEM_NewButton, ITEM_NewCheckBox, ITEM_NewCycle, ITEM_NewMX, MO_Break1, 
			ITEM_NewString, ITEM_NewText, ITEM_NewIText, MO_Break2,
			ITEM_NewSlider, ITEM_NewScroller, ITEM_NewListView, MO_Break3,
			ITEM_NewPalette, MO_Break4,
			ITEM_NewRect, ITEM_NewLine };

#define	MENU_Control		2
enum { ITEM_EditMode, ITEM_DisableAll, ITEM_BringFront, ITEM_SendBack, ITEM_WindSize,
			ITEM_PickLVString };

#define	WIND_IDCMP		IDCMP_CLOSEWINDOW | IDCMP_MENUPICK |								\
								IDCMP_VANILLAKEY | IDCMP_RAWKEY | IDCMP_MOUSEBUTTONS |		\
								IDCMP_NEWSIZE | IDCMP_GADGETUP | IDCMP_GADGETDOWN |			\
								IDCMP_INTUITICKS | IDCMP_MOUSEMOVE
#define	WIND_FLAG		WFLG_CLOSEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET |			\
								WFLG_SMART_REFRESH |	WFLG_NOCAREREFRESH | WFLG_ACTIVATE |	\
								WFLG_REPORTMOUSE

EXPORT struct Library		*IntuitionBase,
									*GfxBase,
									*GadToolsBase,
									*AslBase,
									*LayersBase,
									*DiskfontBase;

EXPORT Screen					*gPubScreen;
EXPORT Window					*gWindPtr, *gInfoWindPtr;
EXPORT struct VisualInfo	*gVI;
EXPORT Menu						*gMenuPtr;

EXPORT LinkNode				*gObjList,
									*gSelObj;
EXPORT TimeStamp				gSelTime;
EXPORT Gadget		 			*gGadgetContext;
EXPORT BOOL						gEditMode,
									gWindSizeable,
									gGadgetsOn,
									gDisableAll;
EXPORT struct List			gDefaultList;
EXPORT struct Remember		*gRemKey;
EXPORT struct Region			*gClipRegion;
EXPORT USHORT					gNextItemNum;
EXPORT TextFont				*gFont;
EXPORT struct FileRequester	*gFileRequest;

#ifdef MAIN				/*	these are globals that need to be initialized	*/

	char	gWindTitle[] = "No Title";

	char *gDefaultMX[] = { "Oranges", "Apples", "Peaches", 0L };
	
	char *gLabelText[] =
	{
		"January", "February", "March", "April", "May", "June", "July", "August", "September",
		"October", "November", "December", 0L
	};	

	char 	*gObjName[] =
	{	
		"Rect", "Line", "Text", "Button", "String", "Palette",
		"CheckBox", "ListView", "Cycle", "MX", "Scroller",
		"Slider", "IText"
	};
			
	char	*gPlaceText[] = { "Left", "Right", "Above", "Below", "In", 0L };

	struct NewMenu gNewMenu[] =
	{
		{	NM_TITLE,		"Project",			0,			0,									0,		0				},
		{		NM_ITEM, 	"About...",			"A",		0,									0,		About			},
		{		NM_ITEM, 	"Open...",			"O",		0,									0,		DoOpen		},
		{		NM_ITEM, 	"SaveAs...",		"S",		0,									0,		DoSaveAs		},
		{		NM_ITEM, 	"Write Items...",	"W",		0,									0,		WriteItems	},
		{		NM_ITEM, 	"Quit...",			"Q",		0,									0,		Quit			},
		{	NM_TITLE,		"Objects",			0,			0,									0,		0				},
		{		NM_ITEM,		"New Button",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New CheckBox",	0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New Cycle",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New MX",			0,			0,									0,		NewObj		},
		{		NM_ITEM,		NM_BARLABEL,		0,			0,									0,		0L				},
		{		NM_ITEM,		"New String",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New Text",			0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New IText",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		NM_BARLABEL,		0,			0,									0,		0L				},
		{		NM_ITEM,		"New Slider",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New Scroller",	0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New ListView",	0,			0,									0,		NewObj		},
		{		NM_ITEM,		NM_BARLABEL,		0,			0,									0,		0L				},
		{		NM_ITEM,		"New Palette",		0,			0,									0,		NewObj		},
		{		NM_ITEM,		NM_BARLABEL,		0,			0,									0,		0L				},
		{		NM_ITEM,		"New Rectangle",	0,			0,									0,		NewObj		},
		{		NM_ITEM,		"New Line",			0,			0,									0,		NewObj		},
		{	NM_TITLE,		"Control",			0,			0,									0,		0				},
		{		NM_ITEM,		"Edit Mode", 		"E",		CHECKIT | CHECKED | MENUTOGGLE,0,DoEditMode	},
		{		NM_ITEM,		"Disable All",		"D",		CHECKIT | MENUTOGGLE,		0,		DoDisable	},
		{		NM_ITEM,		"Bring to Front",	"F",		0,									0,		DoBringFront},
		{		NM_ITEM,		"Send to Back",	"B",		0,									0,		DoSendBack	},
		{		NM_ITEM,		"Sizeable Window", "W",		CHECKIT | CHECKED | MENUTOGGLE,0,DoWindSize	},
		{		NM_ITEM,		"PickLVString",	0,			0,									0,		PickLVString},
		{	NM_END,				0,					0,			0,									0,		0				}
	};	
  	
	struct TextAttr topaz8 =
	{ 	
		"topaz.font",			//  Name
	    8,						//  YSize
	    0,						//  Style
	    0,						//  Flags
	};
	
	struct TextAttr helv15 =
	{ 	
		"helvetica.font",		//  Name
		15,						//  YSize
		0,							//  Style
		0,							//  Flags
	};
	
#else		/*		MAIN not defined		*/

	extern char					gWindTitle[];
	extern char 				*gLabelText[],
									*gDefaultMX[],
									*gObjName[],
									*gPlaceText[];
	extern struct NewMenu 	gNewMenu[];
	extern struct TextAttr	topaz8,
									helv15;

#endif 	/*	MAIN	*/
	
	
#endif 	/*		GLOBAL_H		*/

