/*
 * Generated by the ICS builderXcessory (BX).
 *
 *
 * Builder Xcessory 2.5.
 *
 */

/*
 * System Include Files
 */
#include <stdlib.h>

/*
 * Required Motif Include Files
 */
#include <Xm/Xm.h>
#include <Xm/Separator.h>
#include <Xm/PushB.h>
#include <Xm/Label.h>
#include <Xm/DrawingA.h>
#include <Xm/Form.h>
#include <Xm/RowColumn.h>
#include <Xm/MenuShell.h>
#include <X11/mbari/Compass.h>
#include <X11/Xc/BarGraf.h>

/*
 * User supplied include files.
 */
#include "rov.h"
#include <X11/Xc/Xc.h>
#define IGNORE_CONVERT


/*
 * Some Convenience Routines
 */
#ifndef IGNORE_MENU_POST
/*SUPPRESS 592*/
/*ARGSUSED*/
static void
#ifdef XtSpecificationRelease
MENU_POST(Widget p, XtPointer mw, XEvent *ev, Boolean *dispatch)
#else
MENU_POST(Widget p, caddr_t mw, XEvent *ev, Boolean *dispatch)
#endif
{
    Arg	args[2];
    int	argcnt;
    int	button;
    Widget m = (Widget)mw;
    XButtonEvent *e = (XButtonEvent *)ev;

    argcnt = 0;
    XtSetArg(args[argcnt], XmNwhichButton, &button);
    argcnt++;
    XtGetValues(m, args, argcnt);
    if( e->button != button) return;
    XmMenuPosition(m, e);
    XtManageChild(m);
}
#endif
#ifndef IGNORE_CONVERT
/*SUPPRESS 592*/
static XtPointer
CONVERT(Widget w, char *from_string, char *to_type, int to_size, 
	Boolean *success)
{
    XrmValue		fromVal, toVal;	/* resource holders		*/
    Boolean		convResult;	/* return value			*/
    unsigned char	oByte;		/* one byte result		*/
    unsigned short	tByte;		/* two byte result		*/
    XtPointer		fByte;		/* four byte result		*/
    XtPointer		aByte;		/* allocated result		*/
    
    /*
     * Zero it.
     */
    *success = False;
    fByte = aByte = NULL;
    
    /*
     * String to string.
     */
    if( strcmp(XmRString, to_type) == 0 )
    {
	*success = True;
	return( from_string );
    }

    /*
     * Sometimes we do not know this at code output.
     */
    if(to_size == 0) to_size = strlen(from_string);
        
    /*
     * Motif String to StringTable converter
     * does not cache correctly and so
     * we need to special case this.
     */ 
    if( strcmp(to_type, "XmStringTable") == 0)
    {
	register int lcount, loop;
	register char tmp, *ptr, *e_ptr;
	char *tmp_from;
	XmStringTable table;
	
	tmp_from = XtNewString((char *)from_string);
	ptr = tmp_from;
	if ((ptr == NULL) || (*ptr == '\0'))
	{
	    XtFree((XtPointer)tmp_from);
	    return( NULL );
	}
	else 
	{	
	    lcount = 1;
	    while (*ptr != '\0') 
	    {
		if (*ptr++ == '\n')
		    lcount++;
	    }
	    table = (XmStringTable)
		XtMalloc(sizeof(XmString) * lcount);
	    
	    ptr = tmp_from;
	    
	    for (loop = 0; loop < lcount; loop++) 
	    {
		e_ptr = ptr;
		while((*e_ptr!='\0')&&(*e_ptr != '\n'))
		    e_ptr++;	     
		tmp = *e_ptr;
		*e_ptr = '\0';
		table[loop] = XmStringCreateSimple(ptr);
		*e_ptr = tmp;
		ptr = ++e_ptr;
	    }
	    
	    fByte = (XtPointer)table;
	}
	*success = True;
	XtFree((XtPointer)tmp_from);
	/*SUPPRESS 80*/
	return( fByte );
    }

    /*
     * Set up the list.
     */
    fromVal.size = strlen(from_string) + 1;
    fromVal.addr = from_string;

    switch( to_size )
    {
    case 1:
	toVal.size = sizeof(unsigned char);
	toVal.addr = (XtPointer)&oByte;
	break;
    case 2:
	toVal.size = sizeof(unsigned short);
	toVal.addr = (XtPointer)&tByte;
	break;
    default:
	toVal.size = sizeof(XtPointer);
	toVal.addr = (XtPointer)&fByte;
	break;
    }
    
    convResult = XtConvertAndStore(w, 
				   XmRString, 
				   &fromVal,
				   to_type,
				   &toVal);
    
    if( convResult )
    {
	switch( to_size )
	{
	case 1:
	    fByte = (XtPointer)((int)oByte);
	    break;
	case 2:
	    fByte = (XtPointer)((int)tByte);
	    break;
	default:
	    break;
	}
    }
    

    /*
     * Conversion will fail if we need more than 4 bytes.
     */
    if( !convResult && toVal.size != to_size )
    {
	/*
	 * Need to allocate more space for this one.
	 */
	toVal.addr = (XtPointer)XtMalloc(toVal.size);
	fByte = aByte = toVal.addr;
	convResult = XtConvertAndStore(w, 
				       XmRString, 
				       &fromVal,
				       to_type,
				       &toVal);
    }
    
    /*
     * Free any thing useless we may have allocated.
     */
    if( !convResult )
    {
	XtFree(aByte);
	aByte = NULL;
    }
    
    /*
     * Return the result.
     */
    *success = convResult;
    /*SUPPRESS 80*/
    return( fByte );
}
#endif

/*
 * Callback procedure declarations
 */
extern void quit_callback(Widget, XtPointer, XtPointer);
extern void screenSelect(Widget, XtPointer, XtPointer);
extern void selectButtonCreateDefault(Widget, XtPointer, XtPointer);
extern int cameraSel;
extern int dconSel;
extern int gfSel;
extern int graphSel;
extern int instSel;
extern int powerSel;
extern int setupSel;
extern int vehicleSel;

/*
 * Global widget declarations.
 *        - first remove definition of EXTERNAL
 */
#ifdef EXTERNAL
#undef EXTERNAL
#endif
#define EXTERNAL
/* Start Global Widget Declarations */
EXTERNAL Widget	appForm;
EXTERNAL Widget	depthDrawingArea;
EXTERNAL Widget	depthLabel;
EXTERNAL Widget	compass;
EXTERNAL Widget	thrustPowerBarGraph;
EXTERNAL Widget	lightPowerBarGraph;
EXTERNAL Widget	hotelPowerBarGraph;
EXTERNAL Widget	toolPowerBarGraph;
EXTERNAL Widget	headingLabel;
EXTERNAL Widget	thrustPowerLabel;
/* End Global Widget Declarations */

Widget
CreatetopForm(Widget parent)
{
    Arg    	args[512];
    Cardinal   	argcnt;
    /*SUPPRESS 591*/
    Boolean   	argok;
    Widget 	retval;
    /*SUPPRESS 591*/
    XmString	xmstr[32];
    Widget	topForm;
    Widget	separator1;
    Widget	separator;
    Widget	buttonForm;
    Widget	vehicleButton;
    Widget	powerButton;
    Widget	diagButton;
    Widget	cameraButton;
    Widget	instrumentButton;
    Widget	ibcButton;
    Widget	graphButton;
    Widget	spareButton;
    Widget	menuShell;
    Widget	quitPopupMenu;
    Widget	quitButton;

    XtInitializeWidgetClass(xmFormWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNresizePolicy, XmRESIZE_GROW); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 1040); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 769); argcnt++;
    topForm = XtCreateWidget("topForm",
		xmFormWidgetClass,
		parent,
		args,
		argcnt);
    retval = topForm;

    XtInitializeWidgetClass(xmLabelWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Thrust Power OK", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 624); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 210); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 30); argcnt++;
    thrustPowerLabel = XtCreateWidget("thrustPowerLabel",
		xmLabelWidgetClass,
		topForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtManageChild(thrustPowerLabel);

    XtInitializeWidgetClass(xmLabelWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"0", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNtopPosition, 25); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 65); argcnt++;
    XtSetArg(args[argcnt], XmNy, 192); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 75); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 28); argcnt++;
    headingLabel = XtCreateWidget("headingLabel",
		xmLabelWidgetClass,
		topForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtManageChild(headingLabel);

    XtInitializeWidgetClass(xmMenuShellWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNwidth, 1); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 1); argcnt++;
    menuShell = XtCreatePopupShell("menuShell",
		xmMenuShellWidgetClass,
		topForm,
		args,
		argcnt);

    XtInitializeWidgetClass(xcBarGraphWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XcNlabel, "Tools"); argcnt++;
    XtSetArg(args[argcnt], XcNdataType, CONVERT(parent,"fval", "XcDType", 0, &argok)); if(argok) argcnt++;
    XtSetArg(args[argcnt], XcNdecimals, 1); argcnt++;
    XtSetArg(args[argcnt], XcNvalueVisible, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 20); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, -1); argcnt++;
    XtSetArg(args[argcnt], XtNy, 462); argcnt++;
    XtSetArg(args[argcnt], XtNwidth, 51); argcnt++;
    XtSetArg(args[argcnt], XtNheight, 160); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, thrustPowerLabel); argcnt++;
    toolPowerBarGraph = XtCreateWidget("toolPowerBarGraph",
		xcBarGraphWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(toolPowerBarGraph);

    XtInitializeWidgetClass(xcBarGraphWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XcNlabel, "Hotel"); argcnt++;
    XtSetArg(args[argcnt], XcNdataType, CONVERT(parent,"fval", "XcDType", 0, &argok)); if(argok) argcnt++;
    XtSetArg(args[argcnt], XcNdecimals, 1); argcnt++;
    XtSetArg(args[argcnt], XcNvalueVisible, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 15); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XtNy, 462); argcnt++;
    XtSetArg(args[argcnt], XtNwidth, 50); argcnt++;
    XtSetArg(args[argcnt], XtNheight, 160); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, thrustPowerLabel); argcnt++;
    hotelPowerBarGraph = XtCreateWidget("hotelPowerBarGraph",
		xcBarGraphWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(hotelPowerBarGraph);

    XtInitializeWidgetClass(xcBarGraphWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XcNlabel, "Lights"); argcnt++;
    XtSetArg(args[argcnt], XcNdataType, CONVERT(parent,"fval", "XcDType", 0, &argok)); if(argok) argcnt++;
    XtSetArg(args[argcnt], XcNdecimals, 1); argcnt++;
    XtSetArg(args[argcnt], XcNvalueVisible, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 10); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XtNy, 462); argcnt++;
    XtSetArg(args[argcnt], XtNwidth, 50); argcnt++;
    XtSetArg(args[argcnt], XtNheight, 160); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, thrustPowerLabel); argcnt++;
    lightPowerBarGraph = XtCreateWidget("lightPowerBarGraph",
		xcBarGraphWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(lightPowerBarGraph);

    XtInitializeWidgetClass(xcBarGraphWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XcNlabel, "Thrust"); argcnt++;
    XtSetArg(args[argcnt], XcNdataType, CONVERT(parent,"fval", "XcDType", 0, &argok)); if(argok) argcnt++;
    XtSetArg(args[argcnt], XcNdecimals, 1); argcnt++;
    XtSetArg(args[argcnt], XcNvalueVisible, False); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_NONE); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 5); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XtNx, 0); argcnt++;
    XtSetArg(args[argcnt], XtNy, 462); argcnt++;
    XtSetArg(args[argcnt], XtNwidth, 50); argcnt++;
    XtSetArg(args[argcnt], XtNheight, 160); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, thrustPowerLabel); argcnt++;
    thrustPowerBarGraph = XtCreateWidget("thrustPowerBarGraph",
		xcBarGraphWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(thrustPowerBarGraph);

    XtInitializeWidgetClass(XscompassWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNbottomPosition, 25); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 20); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 1); argcnt++;
    XtSetArg(args[argcnt], XtNx, 1); argcnt++;
    XtSetArg(args[argcnt], XtNy, 0); argcnt++;
    XtSetArg(args[argcnt], XtNwidth, 205); argcnt++;
    XtSetArg(args[argcnt], XtNheight, 190); argcnt++;
    compass = XtCreateWidget("compass",
		XscompassWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(compass);

    XtInitializeWidgetClass(xmFormWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNresizePolicy, XmRESIZE_GROW); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 1040); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    buttonForm = XtCreateWidget("buttonForm",
		xmFormWidgetClass,
		topForm,
		args,
		argcnt);
    XtManageChild(buttonForm);

    XtInitializeWidgetClass(xmSeparatorWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNtopPosition, 85); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNrightOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 654); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 1040); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 8); argcnt++;
    separator = XtCreateWidget("separator",
		xmSeparatorWidgetClass,
		topForm,
		args,
		argcnt);
    XtManageChild(separator);

    XtInitializeWidgetClass(xmDrawingAreaWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 208); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 242); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNtopWidget, headingLabel); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, thrustPowerBarGraph); argcnt++;
    depthDrawingArea = XtCreateWidget("depthDrawingArea",
		xmDrawingAreaWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(depthDrawingArea);

    XtInitializeWidgetClass(xmSeparatorWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNorientation, XmVERTICAL); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 8); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 654); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, separator); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNleftWidget, compass); argcnt++;
    separator1 = XtCreateWidget("separator1",
		xmSeparatorWidgetClass,
		topForm,
		args,
		argcnt);
    XtManageChild(separator1);

    XtInitializeWidgetClass(xmFormWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNresizePolicy, XmRESIZE_GROW); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 824); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 654); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, separator); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNleftWidget, separator1); argcnt++;
    appForm = XtCreateWidget("appForm",
		xmFormWidgetClass,
		topForm,
		args,
		argcnt);

    XtManageChild(appForm);

    XtInitializeWidgetClass(xmLabelWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Graph of Depth vs time\n\
Altitude vs time", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNx, 10); argcnt++;
    XtSetArg(args[argcnt], XmNy, 100); argcnt++;
    depthLabel = XtCreateWidget("depthLabel",
		xmLabelWidgetClass,
		depthDrawingArea,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtManageChild(depthLabel);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNrightWidget, separator1); argcnt++;
    XtSetValues(depthDrawingArea, args, argcnt);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNsensitive, True); argcnt++;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Setup", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 51); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 61); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 530); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    spareButton = XtCreateWidget("spareButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(spareButton, XmNactivateCallback, screenSelect, (XtPointer)&setupSel);
    XtManageChild(spareButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Data\n\
Manager", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 89); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNrightOffset, 11); argcnt++;
    XtSetArg(args[argcnt], XmNx, 926); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 103); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    graphButton = XtCreateWidget("graphButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(graphButton, XmNactivateCallback, screenSelect, (XtPointer)&graphSel);
    XtManageChild(graphButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Motors\n\
DCons", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 38); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 48); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 395); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    ibcButton = XtCreateWidget("ibcButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(ibcButton, XmNactivateCallback, screenSelect, (XtPointer)&dconSel);
    XtManageChild(ibcButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Instruments", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 64); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 74); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 666); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    instrumentButton = XtCreateWidget("instrumentButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(instrumentButton, XmNactivateCallback, screenSelect, (XtPointer)&instSel);
    XtManageChild(instrumentButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Camera\n\
Video", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 25); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 35); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 260); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    cameraButton = XtCreateWidget("cameraButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(cameraButton, XmNactivateCallback, screenSelect, (XtPointer)&cameraSel);
    XtManageChild(cameraButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Diagnostic\n\
Gnd Fault", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 77); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 87); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 801); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    diagButton = XtCreateWidget("diagButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(diagButton, XmNactivateCallback, screenSelect, (XtPointer)&gfSel);
    XtManageChild(diagButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Power", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 13); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 23); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 135); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 104); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    powerButton = XtCreateWidget("powerButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(powerButton, XmNactivateCallback, screenSelect, (XtPointer)&powerSel);
    XtManageChild(powerButton);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Vehicle", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_FORM); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNrightAttachment, XmATTACH_POSITION); argcnt++;
    XtSetArg(args[argcnt], XmNleftPosition, 0); argcnt++;
    XtSetArg(args[argcnt], XmNrightPosition, 9); argcnt++;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 94); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 107); argcnt++;
    vehicleButton = XtCreateWidget("vehicleButton",
		xmPushButtonWidgetClass,
		buttonForm,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    selectButtonCreateDefault(vehicleButton, (XtPointer)&vehicleSel, (XtPointer)0);
    XtAddCallback(vehicleButton, XmNactivateCallback, screenSelect, (XtPointer)&vehicleSel);
    XtManageChild(vehicleButton);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNtopOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNtopAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNtopWidget, separator); argcnt++;
    XtSetValues(buttonForm, args, argcnt);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNleftWidget, thrustPowerBarGraph); argcnt++;
    XtSetValues(lightPowerBarGraph, args, argcnt);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNleftOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNleftWidget, lightPowerBarGraph); argcnt++;
    XtSetValues(hotelPowerBarGraph, args, argcnt);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNleftOffset, -1); argcnt++;
    XtSetArg(args[argcnt], XmNleftAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNleftWidget, hotelPowerBarGraph); argcnt++;
    XtSetValues(toolPowerBarGraph, args, argcnt);

    XtInitializeWidgetClass(xmRowColumnWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNrowColumnType, XmMENU_POPUP); argcnt++;
    XtSetArg(args[argcnt], XmNx, 0); argcnt++;
    XtSetArg(args[argcnt], XmNy, 0); argcnt++;
    XtSetArg(args[argcnt], XmNwidth, 48); argcnt++;
    XtSetArg(args[argcnt], XmNheight, 35); argcnt++;
    quitPopupMenu = XtCreateWidget("quitPopupMenu",
		xmRowColumnWidgetClass,
		menuShell,
		args,
		argcnt);
    XtAddEventHandler(XtParent(XtParent(quitPopupMenu)),
        ButtonPressMask, False, MENU_POST, (XtPointer)quitPopupMenu);

    XtInitializeWidgetClass(xmPushButtonWidgetClass);
    argcnt = 0;
    XtSetArg(args[argcnt], XmNlabelString, (xmstr[0]=XmStringCreateLtoR(
		"Quit", XmSTRING_DEFAULT_CHARSET))); argcnt++;
    XtSetArg(args[argcnt], XmNrecomputeSize, False); argcnt++;
    quitButton = XtCreateWidget("quitButton",
		xmPushButtonWidgetClass,
		quitPopupMenu,
		args,
		argcnt);
    XmStringFree( xmstr[0] );

    XtAddCallback(quitButton, XmNactivateCallback, quit_callback, (XtPointer)0);
    XtManageChild(quitButton);

    argcnt = 0;
    XtSetArg(args[argcnt], XmNbottomOffset, 0); argcnt++;
    XtSetArg(args[argcnt], XmNbottomAttachment, XmATTACH_WIDGET); argcnt++;
    XtSetArg(args[argcnt], XmNbottomWidget, separator); argcnt++;
    XtSetValues(thrustPowerLabel, args, argcnt);

    return( retval );
}

