
/*
 *  skew1.c
 *
 *  PROGRAM NAME:		SKEW	( "SKEleton Writer" )
 *
 *  VERSION:			1.2
 *
 *  FINISHED:			it seems so...
 *
 *  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"


LONG GlobalError = 0;				/* not much used so far... */

struct Process *ThisProcess;

APTR	GadToolsBase;
APTR	AslBase;
struct  Window  *Wnd;
struct  Screen  *Scr;
APTR	VisualInfo;

APTR OldWindow;

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, 12, &topaz8, (UBYTE *)"1/3", &IText1[1],
	3, 0, JAM1, 40, 135, &topaz8, (UBYTE *)"Fields in IntuiMessage:", NULL };

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

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

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

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


/* skewed pointer stuff */
__chip const static UWORD ptr_data[] =
{
    0x0000, 0x0000,

    0xC000, 0x4000,
    0x7000, 0xB000,
    0x3C00, 0x4C00,
    0x3F00, 0x4300,
    0x1FC0, 0x20C0,
    0x1FC0, 0x2000,
    0x0F00, 0x1100,
    0x0D80, 0x1280,
    0x04C0, 0x0940,
    0x0460, 0x08A0,
    0x0030, 0x0050,
    0x0030, 0x0050,
    0x0060, 0x00A0,
    0x00C0, 0x0140,
    0x0180, 0x0280,
    0x00C0, 0x0140,

    0x0000, 0x0000
};


LONG Display_num;


/* 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[ 55 ];

/* 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  */
static VOID _main();
static VOID dummy_function( VOID );
static long InitStuff( VOID );
static long MakeWindow( VOID );
static VOID CleanStuff( VOID );
__regargs long MakeDisplay( long num );

extern VOID HandleIDCMP( VOID );
__regargs extern VOID HandleGadgets( USHORT, APTR );


VOID
dummy_function()
{
	_waitwbmsg();
}

VOID
_main()
{
	if ( ! InitStuff() ) {
		GlobalError = 5;
		_exit( GlobalError );
	};

	HandleIDCMP();

	CleanStuff();
	_exit( GlobalError );
}


LONG
InitStuff()
{
	struct GfxBase *GfxBase;

	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,
  						( GfxBase->DisplayFlags & NTSC ) ?
							( NTSC_MONITOR_ID | HIRESLACE_KEY ) :
							( PAL_MONITOR_ID | HIRES_KEY ),

		SA_Pens,		  DriPens,
		TAG_DONE };


	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 );
	}

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

	if ( ! MakeWindow() ) {
		PutStr( "Window couldn't be opened!\n" );
		return( 0L );
	}

	return( 1L );
}


LONG
MakeWindow()
{
	struct TagItem	WindowTags[] = {
		WA_Left,			2,
   		WA_Top, 			10,
		WA_Width,			637,
		WA_Height,  		246,
		WA_IDCMP,			IDCMP_GADGETDOWN | IDCMP_GADGETUP |
					  		IDCMP_REFRESHWINDOW | IDCMP_MENUPICK,
		WA_Flags,			WFLG_SMART_REFRESH | WFLG_ACTIVATE | WFLG_RMBTRAP |
					  		WFLG_BACKDROP,
		WA_Gadgets, 		0L,
		WA_Title,			NULL,
		WA_ScreenTitle,
  "SKEleton Writer v1.20             Public Domain",

		WA_CustomScreen,  	Scr,
		WA_MinWidth,	  	637,
		WA_MinHeight,	  	1,
		WA_MaxWidth,	  	637,
		WA_MaxHeight,	  	246,
		TAG_DONE };

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

  	/* Make system requesters come up on this screen */
	ThisProcess = (struct Process *)FindTask( 0 );
	OldWindow = ThisProcess->pr_WindowPtr;
	ThisProcess->pr_WindowPtr = (APTR)Wnd;

	if ( ! MakeDisplay( 0 ) )
		return( 0L );

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

    SetPointer( Wnd, ptr_data, 21, 16, 0, 0 );

	return( 1L );
}


LONG
MakeDisplay( long Display_num )
{
	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 ];

	if ( VisualInfo )
		FreeVisualInfo( VisualInfo );

	if ( GList )
		FreeGadgets( GList );

	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		  =    104;
			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		  =    150;
			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		  =    170;
			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		  =    190;
			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		  =    150;
			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		  =    170;
			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		  =    190;
			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		  =    100;
			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		  =    222;
			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_TopEdge		  =    222;
			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;

			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		  =    33;
			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		  =    45;
			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		  =    57;
			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		  =    77;
			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		  =    89;
			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		  =    101;
			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		  =    121;
			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		  =    133;
			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		  =    145;
			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		  =    165;
			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		  =    177;
			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		  =    33;
			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		  =    45;
			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		  =    57;
			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		  =    77;
			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		  =    89;
			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		  =    101;
			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		  =    113;
			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		  =    125;
			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		  =    137;
			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		  =    157;
			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		  =    169;
			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		  =    65;
			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		  =    85;
			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		  =    105;
			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		  =    190;
			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		  =    222;
			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;

			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		  =    43;
			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		  =    42;
			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		  =    90;
            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		  =    167;
			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		  =    187;
			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		  =    83;
			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		  =    118;
			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		  =    153;
			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		  =    188;
			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		=	43;
			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		  =    222;
			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		  =    130;
			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		  =    131;
			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;

			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
CleanStuff()
{
  	if ( Wnd ) {
		ThisProcess = (struct Process *)FindTask( 0 );
		ThisProcess->pr_WindowPtr = OldWindow;
		CloseWindow( Wnd );
  	}

	if ( GList )
		FreeGadgets( GList );

	if ( VisualInfo )
		FreeVisualInfo( VisualInfo );

	if ( Scr )
		CloseScreen( Scr );

	CloseLibrary( GadToolsBase );

	CloseLibrary( AslBase );
}

