
/*
 *  skew1.c
 *
 *  PROGRAM NAME:		SKEW	( "SKEleton Writer" )
 *
 *  VERSION:			1.28
 *
 *  FINISHED:			10-Jun-93
 *
 *  PURPOSE:			Utility for generating GetIDCMP() functions & Co.
 *
 *  PROGRAMMER: 		Piotr Obminski
 *
 *  LEGAL STATUS:		Public Domain
 *
 *  COMPILER:			DICE V2.06
 *
 *  COMPILATION:		dmake -f skew.make
 *
 *  COMMENTS:
 *
 *  HISTORY:
 */

#include <exec/exec.h>
#include <exec/types.h>
#include <dos/dosextens.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 <string.h>

#include "skew.h"


/*
 * Something like that? Got no "Interface Style Guide" or what's it called...
 */
const char VersionString[] = "$VER: Skew 1.28 (04.07.93) by Piotr Obminski";

struct Process *ThisProcess;

extern struct GfxBase  *GfxBase;	/* DICE's auto-opening */

struct Window	*Wnd;
struct Screen	*Scr;

APTR  GadToolsBase, AslBase, VisualInfo, OldWindow;

/*
 * screen can be opened many times as we have iconification now;
 * so it's global
 */
ULONG  ScreenID;

struct TextAttr topaz8 = { ( STRPTR )"topaz.font", 8, 0x00, 0x01 };

struct ColorSpec  ScreenColors[] = {
	 0, 10, 10, 10,
	 1, 00, 00, 00,
	 2, 15, 15, 15,
	 3, 12, 00, 00,
	~0, 00, 00, 00 };

UWORD DriPens[] = { 0,1,1,2,1,3,1,0,2,~0 };

/* text & images */
struct IntuiText  IText1[] = {
	3, 0, JAM2, 588, 21, &topaz8, (UBYTE *)"1/3", &IText1[1],
	3, 0, JAM1, 40, 144, &topaz8, (UBYTE *)"Fields in IntuiMessage:", NULL };

struct IntuiText  IText2[] = {
	3, 0, JAM2, 588, 21, &topaz8, (UBYTE *)"2/3", &IText2[1],
	3, 0, JAM1, 80, 25, &topaz8, (UBYTE *)"Class:", NULL };

struct IntuiText  IText3[] = {
	3, 0, JAM2, 588, 21, &topaz8, (UBYTE *)"3/3", &IText3[1],
	3, 0, JAM1, 60, 21, &topaz8, (UBYTE *)"Global options:", NULL };

/* stuff related to displaying program's logo */
__far extern UWORD Title_data[];

/* IMAGE STRUCTURE */
struct Image Title = { 0, 9, 477, 40, 2, &Title_data[0], 2, 0, NULL };

LONG Display_num = 0L;


/* stuff for top-level function name */
char *TOP_LEVEL_BUF;
char TOP_LEVEL_NAME[ 40 ] = "GetIDCMP";

/* stuff for IDCMPWindow name */
char *IDCMP_WIN_BUF;
char IDCMP_WIN_NAME[ 40 ] = "Wnd";

/* stuff for test variable */
char *TEST_VAR_BUF;
char TEST_VAR_NAME[ 40 ] = "Done";

/* prefix & suffix for the names of the generated functions */
char *PREFIX_BUF, *SUFFIX_BUF;
char PREFIX_NAME[ 20 ], SUFFIX_NAME[ 20 ];

struct Gadget *GList;
struct Gadget *Gadgets[ 56 ];

/* flags related to gadgets & output file */
extern LONG Flag1, Flag2A, Flag2B, Flag3;

/* flags for cycle gadgets on display #3 */
LONG WaitingMode_FLAG, Variables_FLAG, Comments_FLAG, FillIns_FLAG,
        TopArgs_FLAG, TopReturn_FLAG, TestVarScope_FLAG;

/* stuff needed for cycle gadgets in last (third) display */
UBYTE *WaitingModeLabels0[] = {
	"passive",
	"busy",
	0L };

UBYTE *WaitingModeLabels1[] = {
	"busy",
	"passive",
	0L };


UBYTE *VariablesLabels0[] = {
	"global",
	"local",
	0L };

UBYTE *VariablesLabels1[] = {
	"local",
	"global",
	0L };


UBYTE *CommentsLabels0[] = {
	"sparse",
	"NONE",
	"verbose",
	0L };

UBYTE *CommentsLabels1[] = {
	"NONE",
	"verbose",
	"sparse",
	0L };

UBYTE *CommentsLabels2[] = {
	"verbose",
	"sparse",
	"NONE",
	0L };


UBYTE *FillInsLabels0[] = {
	"NONE",
	"@@@@@@@@@@",
	"/* @@ */",
	"@@",
	0L };

UBYTE *FillInsLabels1[] = {
	"@@@@@@@@@@",
	"/* @@ */",
	"@@",
	"NONE",
	0L };

UBYTE *FillInsLabels2[] = {
	"/* @@ */",
	"@@",
	"NONE",
	"@@@@@@@@@@",
	0L };

UBYTE *FillInsLabels3[] = {
	"@@",
	"NONE",
	"@@@@@@@@@@",
	"/* @@ */",
	0L };


UBYTE *TopArgsLabels0[] = {
	"NONE",
	"window ptr",
	0L };

UBYTE *TopArgsLabels1[] = {
	"window ptr",
	"NONE",
	0L };


UBYTE *TopRetLabels0[] = {
	"NOTHING",
	"LONG",
	0L };

UBYTE *TopRetLabels1[] = {
	"LONG",
	"NOTHING",
	0L };


UBYTE *TestVariable_scope0[] = {
	"global",
	"local",
	0L };

UBYTE *TestVariable_scope1[] = {
	"local",
	"global",
	0L };


/*  function prototypes  */
extern VOID HandleIDCMP( VOID );
__regargs extern VOID HandleGadgets( USHORT, APTR );

LONG MakeDisplay( VOID );

static LONG InitDisplay( VOID );
static VOID _main();
static VOID dummy_function( VOID );
static LONG InitStuff( VOID );
static VOID MakeWindow( VOID );
static VOID CleanUp( LONG );



VOID
dummy_function()
{
	_waitwbmsg();
}

VOID
_main()
{

	if ( ! InitStuff() )
		CleanUp( 5L );

	if ( ! InitDisplay() )
		CleanUp( 5L );

	HandleIDCMP();

	CleanUp( 0 );
}


LONG
InitStuff( VOID )
{
	if ( ! ( GadToolsBase = (APTR)OpenLibrary( "gadtools.library", 36 ) ) ) {
		PutStr( "gadtools.library not found!\n" );
		return( 0L );
	}

	if ( ! ( AslBase = (APTR)OpenLibrary( "asl.library", 36 ) ) ) {
		PutStr( "asl.library not found!\n" );
		return( 0L );
	}

	/*
 	 * screen can be opened many times because we have iconification now;
 	 * so it's here and ScreenID is global
 	 */
	if ( ModeNotAvailable( PAL_MONITOR_ID ) )
		ScreenID = NTSC_MONITOR_ID | HIRESLACE_KEY;
	else
		ScreenID = PAL_MONITOR_ID | HIRES_KEY;

	return( -1L );
}


/*
 * without opening libraries & testing PAL availability now, because of
 * the iconification
 */
LONG
InitDisplay()
{
	struct TagItem    ScreenTags[] = {
		SA_Left,		0,
		SA_Top, 		0,
		SA_Width,		640,
		SA_Height,  	256,
		SA_Depth,		2,
		SA_Colors,  	ScreenColors,
		SA_Font,		&topaz8,
		SA_Type,		CUSTOMSCREEN,
		SA_DisplayID,	ScreenID,
		SA_Pens,		DriPens,
		TAG_DONE };

	if ( ! ( Scr = OpenScreenTagList( 0L, ScreenTags ) ) ) {
		PutStr( "Screen couldn't be opened!\n" );
		return( 0L );
	}

	MakeWindow();

	return( 1L );
}


/* we clean-up and exit if window cant be created, so it's VOID now */
VOID
MakeWindow()
{
	struct TagItem	WindowTags[] = {
		WA_Left,			0,
   		WA_Top, 			0, 	/* 1 here is usefull but looks awfully! */
		WA_Width,			640,
		WA_Height, 			256,
		WA_IDCMP,			IDCMP_GADGETDOWN | IDCMP_GADGETUP |
							IDCMP_REFRESHWINDOW | IDCMP_MENUPICK,
		WA_Flags,			WFLG_SMART_REFRESH | WFLG_ACTIVATE | WFLG_RMBTRAP,
		WA_Gadgets, 		0L,
		WA_Title,			"SKEleton Writer v1.28",
		WA_ScreenTitle, 	"Skew v1.28",
		WA_CustomScreen,  	Scr,
		WA_MinWidth,	  	637,
		WA_MinHeight,	  	1,
		WA_MaxWidth,	  	660,
		WA_MaxHeight,	  	256,
		TAG_DONE };

	if ( VisualInfo )
		FreeVisualInfo( VisualInfo );

	if ( Wnd ) {
		ThisProcess->pr_WindowPtr = OldWindow;	/* OldWindow temporarily */
		CloseWindow( Wnd );
	} else {
		/* the first time there is NO WINDOW, so find ThisProcess &
		 * its Window
		 */
		ThisProcess = (struct Process *)FindTask( 0 );
		OldWindow = ThisProcess->pr_WindowPtr;
	}

	if ( GList )
		FreeGadgets( GList );

	if ( ! ( Wnd = OpenWindowTagList( 0L, WindowTags ) ) )
		CleanUp( 5L );

	/* make system requesters come up on this screen AGAIN */
	ThisProcess->pr_WindowPtr = (APTR)Wnd;

	if ( ! MakeDisplay() )
		CleanUp( 5L );

	RefreshGList( GList, Wnd, NULL, -1 );
	GT_RefreshWindow( Wnd, NULL );

	return;
}


LONG
MakeDisplay()
{
	struct  NewGadget	  	ng;
	struct  Gadget			*g;
	BOOL	check_flag;
	UBYTE	*temp_ptr;

	TOP_LEVEL_BUF = &TOP_LEVEL_NAME[ 0 ];
	IDCMP_WIN_BUF = &IDCMP_WIN_NAME[ 0 ];

	PREFIX_BUF = &PREFIX_NAME[ 0 ];
	SUFFIX_BUF = &SUFFIX_NAME[ 0 ];

	switch ( Display_num ) {

		/*  making window #0 */
		case 0 :

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

			if ( ! ( g = CreateContext( &GList )))
				return( 0L );

			ng.ng_LeftEdge  	  =    110;
			ng.ng_TopEdge		  =    113;
			ng.ng_Width 		  =    166;
			ng.ng_Height		  =    16;
			ng.ng_GadgetText	  =    "IDCMPWindow name";
			ng.ng_TextAttr  	  =    &topaz8;
			ng.ng_GadgetID  	  =    GD_IDCMPWindow;
			ng.ng_Flags 		  =    PLACETEXT_ABOVE;
			ng.ng_VisualInfo	  =    VisualInfo;

			g = CreateGadget( STRING_KIND, g, &ng,
					GTST_String, IDCMP_WIN_NAME, GTST_MaxChars, 40, TAG_DONE );

			IDCMP_WIN_BUF = ((struct StringInfo *) g->SpecialInfo)->Buffer;

			Gadgets[ 0 ] = g;

			ng.ng_LeftEdge  	  =    116;
			ng.ng_TopEdge		  =    159;
			ng.ng_GadgetText	  =    "Class";
			ng.ng_GadgetID  	  =    GD_Code;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & CLASS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 1 ] = g;

			ng.ng_TopEdge		  =    179;
			ng.ng_GadgetText	  =    "Code";
			ng.ng_GadgetID  	  =    GD_Code;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & CODE_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 2 ] = g;

			ng.ng_TopEdge		  =    199;
			ng.ng_GadgetText	  =    "Qualifier";
			ng.ng_GadgetID  	  =    GD_Qualifier;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & QUALIFIER_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 3 ] = g;

			ng.ng_LeftEdge  	  =    236;
			ng.ng_TopEdge		  =    159;
			ng.ng_GadgetText	  =    "MouseX";
			ng.ng_GadgetID  	  =    GD_MouseX;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & MOUSEX_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 4 ] = g;

			ng.ng_LeftEdge  	  =    341;
			ng.ng_GadgetText	  =    "MouseY";
			ng.ng_GadgetID  	  =    GD_MouseY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & MOUSEY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 5 ] = g;

			ng.ng_LeftEdge  	  =    236;
			ng.ng_TopEdge		  =    179;
			ng.ng_GadgetText	  =    "Seconds";
			ng.ng_GadgetID  	  =    GD_Seconds;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & SECONDS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 6 ] = g;

			ng.ng_LeftEdge  	  =    341;
			ng.ng_GadgetText	  =    "Micros";
			ng.ng_GadgetID  	  =    GD_Micros;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & MICROS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 7 ] = g;

			ng.ng_LeftEdge  	  =    310;
			ng.ng_TopEdge		  =    199;
			ng.ng_GadgetText	  =    "IAddress";
			ng.ng_GadgetID  	  =    GD_IAddress;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag1 & IADDRESS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 8 ] = g;

            ng.ng_LeftEdge  	  =    530;
			ng.ng_TopEdge		  =    109;
			ng.ng_GadgetText	  =    "gadtools.library";
			ng.ng_GadgetID  	  =    GD_gadtools;

			check_flag = (Flag1 & gadtools_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 9 ] = g;

			ng.ng_LeftEdge  	  =    80;
			ng.ng_TopEdge		  =    231;
			ng.ng_Width 		  =    100;
			ng.ng_Height		  =    18;
			ng.ng_GadgetText	  =    "QUIT";
			ng.ng_GadgetID  	  =    GD_QUIT1;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 10 ] = g;

			ng.ng_LeftEdge  	  =    460;
			ng.ng_GadgetText	  =    "GO ON";
			ng.ng_GadgetID  	  =    GD_GO_ON1;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 11 ] = g;

			/* the new ICONIFY gadget */
			ng.ng_LeftEdge  	  =    460;
			ng.ng_TopEdge		  =    0;
			ng.ng_Width 		  =    60;
			ng.ng_Height		  =    10;
			ng.ng_GadgetText	  =    "ICONIFY";
			ng.ng_GadgetID  	  =    GD_ICONIFY1;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 12 ] = g;

			if ( ! g )
				return( 0L );

			AddGList( Wnd, GList, 0, -1, NULL );

			PrintIText( Wnd->RPort, IText1, 0L, 0L );

			DrawImage( Wnd->RPort, &Title, 76L, 30L );

			break;

		/*  making window #1  */
		case 1 :

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

			if ( ! ( g = CreateContext( &GList )))
				return( 0L );

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    42;
			ng.ng_GadgetText	  =    "MOUSEBUTTONS";
			ng.ng_TextAttr  	  =    &topaz8;
			ng.ng_GadgetID  	  =    GD_MOUSEBUTTONS;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;
			ng.ng_VisualInfo	  =    VisualInfo;

			check_flag = (Flag2A & MOUSEBUTTONS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 0 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_MOUSEBUTTONS_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & MOUSEBUTTONS_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 1 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    54;
			ng.ng_GadgetText	  =    "MOUSEMOVE";
			ng.ng_GadgetID  	  =    GD_MOUSEMOVE;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & MOUSEMOVE_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 2 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_MOUSEMOVE_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & MOUSEMOVE_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 3 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    66;
			ng.ng_GadgetText	  =    "DELTAMOVE";		/* it's NO msg! */
			ng.ng_GadgetID  	  =    GD_DELTAMOVE;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, GA_Disabled, TRUE, TAG_DONE );

			Gadgets[ 4 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_DELTAMOVE_F;	/* it's NO msg! */
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, GA_Disabled, TRUE, TAG_DONE );

			Gadgets[ 5 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    86;
			ng.ng_GadgetText	  =    "GADGETDOWN";
			ng.ng_GadgetID  	  =    GD_GADGETDOWN;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & GADGETDOWN_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 6 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_GADGETDOWN_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & GADGETDOWN_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 7 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    98;
			ng.ng_GadgetText	  =    "GADGETUP";
			ng.ng_GadgetID  	  =    GD_GADGETUP;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & GADGETUP_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 8 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_GADGETUP_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & GADGETUP_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 9 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    110;
			ng.ng_GadgetText	  =    "CLOSEWINDOW";
			ng.ng_GadgetID  	  =    GD_CLOSEWINDOW;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & CLOSEWINDOW_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 10 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_CLOSEWINDOW_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & CLOSEWINDOW_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 11 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    130;
			ng.ng_GadgetText	  =    "MENUPICK";
			ng.ng_GadgetID  	  =    GD_MENUPICK;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & MENUPICK_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 12 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_MENUPICK_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & MENUPICK_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 13 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    142;
			ng.ng_GadgetText	  =    "MENUVERIFY";
			ng.ng_GadgetID  	  =    GD_MENUVERIFY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & MENUVERIFY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 14 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_MENUVERIFY_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & MENUVERIFY_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 15 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    154;
			ng.ng_GadgetText	  =    "MENUHELP";
			ng.ng_GadgetID  	  =    GD_MENUHELP;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & MENUHELP_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 16 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_MENUHELP_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & MENUHELP_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 17 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    174;
			ng.ng_GadgetText	  =    "RAWKEY";
			ng.ng_GadgetID  	  =    GD_RAWKEY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & RAWKEY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 18 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_RAWKEY_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & RAWKEY_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 19 ] = g;

			ng.ng_LeftEdge  	  =    138;
			ng.ng_TopEdge		  =    186;
			ng.ng_GadgetText	  =    "VANILLAKEY";
			ng.ng_GadgetID  	  =    GD_VANILLAKEY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & VANILLAKEY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 20 ] = g;

			ng.ng_LeftEdge  	  =    166;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_VANILLAKEY_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & VANILLAKEY_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 21 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    42;
			ng.ng_GadgetText	  =    "REQSET";
			ng.ng_GadgetID  	  =    GD_REQSET;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & REQSET_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 22 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_REQSET_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & REQSET_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 23 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    54;
			ng.ng_GadgetText	  =    "REQCLEAR";
			ng.ng_GadgetID  	  =    GD_REQCLEAR;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & REQCLEAR_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 24 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_REQCLEAR_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & REQCLEAR_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 25 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    66;
			ng.ng_GadgetText	  =    "REQVERIFY";
			ng.ng_GadgetID  	  =    GD_REQVERIFY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2A & REQVERIFY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 26 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_REQVERIFY_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2A & REQVERIFY_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 27 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    86;
			ng.ng_GadgetText	  =    "NEWSIZE";
			ng.ng_GadgetID  	  =    GD_NEWSIZE;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & NEWSIZE_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 28 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_NEWSIZE_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & NEWSIZE_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 29 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    98;
			ng.ng_GadgetText	  =    "SIZEVERIFY";
			ng.ng_GadgetID  	  =    GD_SIZEVERIFY;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & SIZEVERIFY_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 30 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_SIZEVERIFY_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & SIZEVERIFY_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 31 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    110;
			ng.ng_GadgetText	  =    "ACTIVEWINDOW";
			ng.ng_GadgetID  	  =    GD_ACTIVEWINDOW;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & ACTIVEWINDOW_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 32 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_ACTIVEWINDOW_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & ACTIVEWINDOW_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 33 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    122;
			ng.ng_GadgetText	  =    "INACTIVEWINDOW";
			ng.ng_GadgetID  	  =    GD_INACTIVEWINDOW;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & INACTIVEWINDOW_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 34 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_INACTIVEWINDOW_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & INACTIVEWINDOW_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 35 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    134;
			ng.ng_GadgetText	  =    "CHANGEWINDOW";
			ng.ng_GadgetID  	  =    GD_CHANGEWINDOW;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & CHANGEWINDOW_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 36 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_CHANGEWINDOW_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & CHANGEWINDOW_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 37 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    146;
			ng.ng_GadgetText	  =    "REFRESHWINDOW";
			ng.ng_GadgetID  	  =    GD_REFRESHWINDOW;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & REFRESHWINDOW_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 38 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_REFRESHWINDOW_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & REFRESHWINDOW_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 39 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    166;
			ng.ng_GadgetText	  =    "DISKINSERTED";
			ng.ng_GadgetID  	  =    GD_DISKINSERTED;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & DISKINSERTED_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 40 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_DISKINSERTED_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & DISKINSERTED_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 41 ] = g;

			ng.ng_LeftEdge  	  =    356;
			ng.ng_TopEdge		  =    178;
			ng.ng_GadgetText	  =    "DISKREMOVED";
			ng.ng_GadgetID  	  =    GD_DISKREMOVED;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & DISKREMOVED_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 42 ] = g;

			ng.ng_LeftEdge  	  =    384;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_DISKREMOVED_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & DISKREMOVED_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 43 ] = g;

			ng.ng_LeftEdge  	  =    541;
			ng.ng_TopEdge		  =    74;
			ng.ng_GadgetText	  =    "NEWPREFS";
			ng.ng_GadgetID  	  =    GD_NEWPREFS;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & NEWPREFS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 44 ] = g;

			ng.ng_LeftEdge  	  =    569;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_NEWPREFS_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & NEWPREFS_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 45 ] = g;

			ng.ng_LeftEdge  	  =    541;
			ng.ng_TopEdge		  =    94;
			ng.ng_GadgetText	  =    "INTUITICKS";
			ng.ng_GadgetID  	  =    GD_INTUITICKS;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & INTUITICKS_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 46 ] = g;

			ng.ng_LeftEdge  	  =    569;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_INTUITICKS_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & INTUITICKS_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 47 ] = g;

			ng.ng_LeftEdge  	  =    541;
			ng.ng_TopEdge		  =    114;
			ng.ng_GadgetText	  =    "IDCMPUPDATE";
			ng.ng_GadgetID  	  =    GD_IDCMPUPDATE;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & IDCMPUPDATE_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 48 ] = g;

			ng.ng_LeftEdge  	  =    569;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_IDCMPUPDATE_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & IDCMPUPDATE_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 49 ] = g;

			ng.ng_LeftEdge  	  =    541;
			ng.ng_TopEdge		  =    199;
			ng.ng_GadgetText	  =    "LONELYMESSAGE";
			ng.ng_GadgetID  	  =    GD_LONELYMESSAGE;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag2B & LONELYMESSAGE_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 50 ] = g;

			ng.ng_LeftEdge  	  =    569;
			ng.ng_GadgetText	  =    "F";
			ng.ng_GadgetID  	  =    GD_LONELYMESSAGE_F;
			ng.ng_Flags 		  =    PLACETEXT_RIGHT;

			check_flag = (Flag2B & LONELYMESSAGE_F_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 51 ] = g;

			ng.ng_LeftEdge  	  =    80;
			ng.ng_TopEdge		  =    231;
			ng.ng_Width 		  =    100;
			ng.ng_Height		  =    18;
			ng.ng_GadgetText	  =    "QUIT";
			ng.ng_TextAttr  	  =    &topaz8;
			ng.ng_GadgetID  	  =    GD_QUIT2;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 52 ] = g;

			ng.ng_LeftEdge  	  =    460;
			ng.ng_GadgetText	  =    "GO ON";
			ng.ng_GadgetID  	  =    GD_GO_ON2;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 53 ] = g;

			ng.ng_LeftEdge  	  =    324;
			ng.ng_GadgetText	  =    "STEP BACK";
			ng.ng_GadgetID  	  =    GD_STEP_BACK2;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 54 ] = g;

			/* the new ICONIFY gadget */
			ng.ng_LeftEdge  	  =    460;
			ng.ng_TopEdge		  =    0;
			ng.ng_Width 		  =    60;
			ng.ng_Height		  =    10;
			ng.ng_GadgetText	  =    "ICONIFY";
			ng.ng_GadgetID  	  =    GD_ICONIFY2;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 55 ] = g;

			if ( ! g )
				return( 0L );

			AddGList( Wnd, GList, 0, -1, NULL );

			PrintIText( Wnd->RPort, IText2, 0L, 0L );

			break;

		/*  making window #2 */
		case 2 :

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

			if ( ! ( g = CreateContext( &GList )))
				return( 0L );

			ng.ng_LeftEdge  	  =    36;
			ng.ng_TopEdge		  =    52;
			ng.ng_Width 		  =    166;
			ng.ng_Height		  =    14;
			ng.ng_GadgetText	  =    " top-level returning";
			ng.ng_GadgetID  	  =    GD_TopLevelRet;
			ng.ng_Flags 		  =    PLACETEXT_ABOVE;
			ng.ng_TextAttr  	  =    &topaz8;
			ng.ng_VisualInfo	  =    VisualInfo;

			switch ( TopReturn_FLAG ) {
				case 0:
					temp_ptr = TopRetLabels0;
					break;
				case 1:
					temp_ptr = TopRetLabels1;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 0 ] = g;

			ng.ng_LeftEdge  	  =    220;
			ng.ng_TopEdge		  =    51;
			ng.ng_Width 		  =    166;
			ng.ng_Height		  =    16;
			ng.ng_GadgetText	  =    "top-level name";
			ng.ng_GadgetID  	  =    GD_TopLevelName;

			g = CreateGadget( STRING_KIND, g, &ng, GTST_String, TOP_LEVEL_NAME,
						  GTST_MaxChars, 40, TAG_DONE );

			TOP_LEVEL_BUF = ((struct StringInfo *) g->SpecialInfo)->Buffer;

			Gadgets[ 1 ] = g;

			ng.ng_LeftEdge  	  =    36;
			ng.ng_TopEdge		  =    99;
            ng.ng_Width 		  =    146;
			ng.ng_GadgetText	  =    "low-level prefix";
			ng.ng_GadgetID  	  =    GD_Prefix;

			g = CreateGadget( STRING_KIND, g, &ng, GTST_String, PREFIX_NAME,
					GTST_MaxChars, 20, TAG_DONE );

			PREFIX_BUF = ((struct StringInfo *) g->SpecialInfo)->Buffer;

			Gadgets[ 2 ] = g;

			ng.ng_LeftEdge  	  =    194;
			ng.ng_GadgetText	  =    "low-level suffix";
			ng.ng_GadgetID  	  =    GD_Suffix;

			g = CreateGadget( STRING_KIND, g, &ng, GTST_String, SUFFIX_NAME,
					GTST_MaxChars, 20, TAG_DONE );

			SUFFIX_BUF = ((struct StringInfo *) g->SpecialInfo)->Buffer;

			Gadgets[ 3 ] = g;

			ng.ng_LeftEdge  	  =    250;
			ng.ng_TopEdge		  =    176;
			ng.ng_GadgetText	  =    "low-level skeletons";
			ng.ng_GadgetID  	  =    GD_Skeletons;
			ng.ng_Flags 		  =    PLACETEXT_LEFT;

			check_flag = (Flag3 & Skeletons_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 4 ] = g;

			ng.ng_TopEdge		  =    196;
			ng.ng_GadgetText	  =    "function prototypes";
			ng.ng_GadgetID  	  =    GD_Prototypes;

			check_flag = (Flag3 & Prototypes_FLAG) ? TRUE : FALSE;

			g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked,
							check_flag, TAG_DONE );

			Gadgets[ 5 ] = g;

			ng.ng_LeftEdge  	  =    428;
			ng.ng_TopEdge		  =    92;
			ng.ng_Width 		  =    166;
			ng.ng_Height		  =    14;
			ng.ng_GadgetText	  =    "  waiting";
			ng.ng_GadgetID  	  =    GD_WaitingMode;
			ng.ng_Flags 		  =    PLACETEXT_ABOVE;

			switch (WaitingMode_FLAG) {
				case 0:
					temp_ptr = WaitingModeLabels0;
					break;
				case 1:
					temp_ptr = WaitingModeLabels1;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 6 ] = g;

			ng.ng_TopEdge		  =    127;
			ng.ng_GadgetText	  =    "  variables";
			ng.ng_GadgetID  	  =    GD_Variables;

			switch (Variables_FLAG) {
				case 0:
					temp_ptr = VariablesLabels0;
					break;
				case 1:
					temp_ptr = VariablesLabels1;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 7 ] = g;

			ng.ng_TopEdge		  =    162;
			ng.ng_GadgetText	  =    "  comments";
			ng.ng_GadgetID  	  =    GD_Comments;

			switch ( Comments_FLAG ) {
				case 0:
					temp_ptr = CommentsLabels0;
					break;
				case 1:
					temp_ptr = CommentsLabels1;
					break;
				case 2:
					temp_ptr = CommentsLabels2;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 8 ] = g;

			ng.ng_TopEdge		  =    197;
			ng.ng_GadgetText	  =    "  fill-ins";
			ng.ng_GadgetID  	  =    GD_FillIns;

			switch ( FillIns_FLAG ) {
				case 0:
					temp_ptr = FillInsLabels0;
					break;
				case 1:
					temp_ptr = FillInsLabels1;
					break;
				case 2:
					temp_ptr = FillInsLabels2;
					break;
				case 3:
					temp_ptr = FillInsLabels3;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 9 ] = g;

			ng.ng_TopEdge		=	52;
			ng.ng_LeftEdge  	=	400;
			ng.ng_Width 		=	166;
			ng.ng_Height		=	14;
			ng.ng_GadgetText	=	" top-level args";
			ng.ng_GadgetID  	=	GD_TopArgs;
			ng.ng_Flags 		=	PLACETEXT_ABOVE;

			switch ( TopArgs_FLAG ) {
				case 0:
					temp_ptr = TopArgsLabels0;
					break;
				case 1:
					temp_ptr = TopArgsLabels1;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 10 ] = g;

			ng.ng_LeftEdge  	  =    80;
			ng.ng_TopEdge		  =    231;
			ng.ng_Width 		  =    100;
			ng.ng_Height		  =    18;
			ng.ng_GadgetText	  =    "QUIT";
			ng.ng_TextAttr  	  =    &topaz8;
			ng.ng_GadgetID  	  =    GD_QUIT3;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 11 ] = g;

			ng.ng_LeftEdge  	  =    324;
			ng.ng_GadgetText	  =    "STEP BACK";
			ng.ng_GadgetID  	  =    GD_STEP_BACK3;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 12 ] = g;

			ng.ng_LeftEdge  	  =    460;
			ng.ng_GadgetText	  =    "WRITE C";
			ng.ng_GadgetID  	  =    GD_WRITE_C;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 13 ] = g;

			ng.ng_LeftEdge  	  =    36;
			ng.ng_TopEdge		  =    139;
			ng.ng_Width 		  =    166;
			ng.ng_Height		  =    16;
			ng.ng_Flags 		  =    PLACETEXT_ABOVE;
			ng.ng_GadgetText	  =    "test-variable name";
			ng.ng_GadgetID  	  =    GD_TestVarName;

			g = CreateGadget( STRING_KIND, g, &ng, GTST_String, TEST_VAR_NAME,
						  GTST_MaxChars, 40, TAG_DONE );

			TEST_VAR_BUF = ((struct StringInfo *) g->SpecialInfo)->Buffer;

			Gadgets[ 14 ] = g;

			ng.ng_LeftEdge  	  =    220;
			ng.ng_TopEdge		  =    140;
			ng.ng_Height		  =    14;
			ng.ng_GadgetText	  =    " test-variable scope";
			ng.ng_GadgetID  	  =    GD_TestVarScope;

			switch ( TestVarScope_FLAG ) {
				case 0:
					temp_ptr = TestVariable_scope0;
					break;
				case 1:
					temp_ptr = TestVariable_scope1;
					break;
			}

			g = CreateGadget( CYCLE_KIND, g, &ng, GTCY_Labels, temp_ptr, TAG_DONE );

			Gadgets[ 15 ] = g;

			/* the new ICONIFY gadget */
			ng.ng_LeftEdge  	  =    460;
			ng.ng_TopEdge		  =    0;
			ng.ng_Width 		  =    60;
			ng.ng_Height		  =    10;
			ng.ng_GadgetText	  =    "ICONIFY";
			ng.ng_GadgetID  	  =    GD_ICONIFY3;
			ng.ng_Flags 		  =    PLACETEXT_IN;

			g = CreateGadget( BUTTON_KIND, g, &ng, TAG_DONE );

			Gadgets[ 16 ] = g;

			if ( ! g )
				return( 0L );

			AddGList( Wnd, GList, 0, -1, NULL );

			PrintIText( Wnd->RPort, IText3, 0L, 0L );

			break;
	}

	RefreshGadgets( GList, Wnd, NULL );

	GT_RefreshWindow( Wnd, NULL );

	return( 1L );
}


VOID
CleanUp( LONG error )
{
  	if ( Wnd ) {
		ThisProcess->pr_WindowPtr = OldWindow;
		CloseWindow( Wnd );
  	}

	if ( GList )
		FreeGadgets( GList );

	if ( VisualInfo )
		FreeVisualInfo( VisualInfo );

	if ( Scr )
		CloseScreen( Scr );

	CloseLibrary( GadToolsBase );

	CloseLibrary( AslBase );

	_exit( error );
}

