
/*
 *	xaw1.c
 *	Athena Widget test Program
 *	using Athena Widgets
 *
 *	NOTE: If you are compiling under Release 4
 *	of X, be sure to define X11R4.
 *
 *	Written for C Users Journal
 *
 */

#include  <stdio.h>
#include  <X11/Intrinsic.h>
#include  <X11/StringDefs.h>

/*
 *	Comment out if you are running
 *	on a system earlier than 
 *	Release 4
 */
#define X11R4

/*
 *	Release 4 has Athena include
 *	files in new places.
 */
#ifdef X11R4
#include  <X11/Xaw/Command.h>
#include  <X11/Xaw/Paned.h>
#include  <X11/Xaw/Label.h>

#else	/* older than Release 4 */

#include  <X11/Command.h>
#include  <X11/Paned.h>
#include  <X11/Label.h>
#endif


/* ARGSUSED */
void quit_callback( widget, client_data, call_data )

Widget	widget;
caddr_t	client_data; 
caddr_t	call_data;

/*
 *	Callback function to quit program.
 *	We could close the connection to
 *	the X server here, or just call exit().
 */

{	/* quit_callback */

	exit( 0 );

}	/* quit_callback */



main( argc, argv )

int	argc;
char	*argv[];

{	/* main */
	Widget  		parent;
	Arg		args[20];
	int		n;
	Widget  		pane_widget, quit_widget; 
	Widget		label_widget;


	/*
	 * Set up top-level shell widget
	 */
	parent = XtInitialize( argv[0],
			"Xaw1", NULL,
			0, &argc, argv );


	/*	
	 * Set up pane to control whole application
	 */
	n = 0;
	pane_widget = XtCreateManagedWidget( "pane",
			panedWidgetClass,
			parent, args, n );

	/*
	 * Set up command widget to 
	 * act as a push button
	 */
	n = 0;
	quit_widget = XtCreateManagedWidget( "quit", 
			commandWidgetClass,
			pane_widget, args, n );

	 /*
	 * Set up a callback function
	 * to be called whenever
	 * the command push button is
	 * "activated".
	 */
	XtAddCallback( quit_widget, XtNcallback, 
		quit_callback, (caddr_t) NULL );


	/*
	 * Set up label widget 
	 */
	n = 0;
	XtSetArg( args[n], XtNlabel, "This is a label." ); n++;

	label_widget = XtCreateManagedWidget( "label", 
			labelWidgetClass,
			pane_widget, args, n );

	/*
	 * Map widgets and handle events
	 */
	XtRealizeWidget( parent );
	XtMainLoop();

}	/* main */

/*
 *	end of file
 */

