/* 
 *  @OPENGROUP_COPYRIGHT@
 *  COPYRIGHT NOTICE
 *  Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
 *  Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
 *  ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
 *  the full copyright text.
 *  
 *  This software is subject to an open license. It may only be
 *  used on, with or for operating systems which are themselves open
 *  source systems. You must contact The Open Group for a license
 *  allowing distribution and sublicensing of this software on, with,
 *  or for operating systems which are not Open Source programs.
 *  
 *  See http://www.opengroup.org/openmotif/license for full
 *  details of the license agreement. Any use, reproduction, or
 *  distribution of the program constitutes recipient's acceptance of
 *  this agreement.
 *  
 *  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
 *  PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
 *  WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
 *  OR FITNESS FOR A PARTICULAR PURPOSE
 *  
 *  EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
 *  NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
 *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 *  DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
 *  AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 *  ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
 *  EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
 *  POSSIBILITY OF SUCH DAMAGES.
*/ 
/* 
 * HISTORY
*/ 
/*   $XConsortium: testlib.h /main/11 1995/07/14 10:57:53 drk $ */


/*  Standard C headers  */

#include <stdio.h>
#include <ctype.h>
#include <sys/signal.h>

#ifndef X_NOT_STDC_ENV
#include <stdlib.h>
#include <unistd.h>
#endif

/*  Xt headers  */

#include <X11/Intrinsic.h>
#include <X11/Shell.h>

/*  Xm headers  */

#include <Xm/Xm.h>
#include <Xm/ArrowB.h>
#include <Xm/ArrowBG.h>
#include <Xm/AtomMgr.h>
#include <Xm/BulletinB.h>
#include <Xm/CascadeB.h>
#include <Xm/CascadeBG.h>
#include <Xm/Command.h>
#include <Xm/ComboBox.h>
#include <Xm/Container.h>
#include <Xm/CutPaste.h>
#include <Xm/DialogS.h>
#include <Xm/DrawingA.h>
#include <Xm/DrawnB.h>
#include <Xm/FileSB.h>
#include <Xm/Form.h>
#include <Xm/Frame.h>
#include <Xm/IconG.h>
#include <Xm/Label.h>
#include <Xm/LabelG.h>
#include <Xm/List.h>
#include <Xm/MainW.h>
#include <Xm/MenuShell.h>
#include <Xm/MessageB.h>
#include <Xm/MwmUtil.h>
#include <Xm/Notebook.h>
#include <Xm/PanedW.h>
#include <Xm/Protocols.h>
#include <Xm/PushB.h>
#include <Xm/PushBG.h>
#include <Xm/RowColumn.h>
#include <Xm/Scale.h>
#include <Xm/ScrollBar.h>
#include <Xm/ScrolledW.h>
#include <Xm/SelectioB.h>
#include <Xm/SeparatoG.h>
#include <Xm/Separator.h>
#include <Xm/SpinB.h>
#include <Xm/Text.h>
#include <Xm/TextF.h>
#include <Xm/ToggleB.h>
#include <Xm/ToggleBG.h>

/* definitions used in all test modules */

#define MAX_ARGS  	100
#define MAX_FILE        256
#define MAX_FONT_LEN    64

/*  Global Variables  */

extern XtAppContext  	app_context;
extern Display  	*display;
extern Window	  	rootWindow;
extern Screen		* screen;
extern Widget   	Shell1;
extern Widget		InstructionBox;
extern Widget   	UTMShell;
extern Widget   	UTMDrawingArea;


/* Private Functions */


extern void		CommonUsage(char *test_name);
extern void		CommonGenericCB(Widget w, XtPointer client_data,
			        	XtPointer call_data);
extern void		CommonGetOptions(int *argc, char **argv);
extern void		CommonPause();
extern void		CommonTestInit(int argc, char **argv);
extern void		CommonTestI18NInit(int argc, char **argv, 
					   XtLanguageProc proc,
					   XtPointer client_data);
extern void 		CommonDumpHierarchy(Widget w, FILE *file);
extern char		*CommonCsToRs(XmString cs);
extern Pixel		CommonGetColor(char *colorstr);
extern XmFontList	CommonGetFontList(char *fontstr);
extern void		CommonExtraResources(Arg args[], Cardinal n);

/* stubs for when NOT linking with malloc library */

extern void             MallocInit(); 
extern void             MallocExit();


/* global variables - command line options */

extern Boolean 		instructions;
extern char		*UserData;
extern char             *instruct_file_name;
extern char             *instruct_file_name_orig;
extern int		pause_len;
extern char		test_font[MAX_FONT_LEN];
extern char		default_font[MAX_FONT_LEN];

/* Global Variables for Automation */

extern Boolean		Automation;
extern Boolean 		AutoRecord;
extern Boolean		AutoBatch;
extern Boolean		AutoManual;
extern Boolean 		AutoNoCheck;
extern Boolean 		AutoTrace;
extern Boolean		AutoDelay;
extern Boolean		AutoWindowDumps;
extern Boolean          Command_In_Progress;
extern Boolean          MonitorOn;
extern Boolean          SyncWidgetCreated;
extern int		AutoDelayCycles;
extern Atom             _MOTIF_WM_AUTOMATION;
extern Atom             WM_S0;
enum             WHICH_TIME { START_TIME, END_TIME };

/* redefinition of Motif Creation routines */

#define XmCreateArrowButton		ArrowButtonCreate
#define XmCreateArrowButtonGadget 	ArrowButtonGadgetCreate
#define XmCreateBulletinBoard		BulletinBoardCreate
#define XmCreateBulletinBoardDialog	BulletinBoardDialogCreate
#define XmCreateCascadeButton		CascadeButtonCreate
#define XmCreateCascadeButtonGadget	CascadeButtonGadgetCreate
#define XmCreateCommand			CommandCreate
#define XmCreateComboBox		ComboBoxCreate
#define XmCreateDropDownComboBox	DropDownComboBoxCreate
#define XmCreateDropDownList		DropDownListComboBoxCreate
#define XmCreateNotebook		NotebookCreate
#define XmCreateContainer		ContainerCreate
#define XmCreateIconGadget		IconGadgetCreate
#define XmCreateDialogShell		DialogShellCreate
#define XmCreateDrawingArea		DrawingAreaCreate
#define XmCreateDrawnButton		DrawnButtonCreate
#define XmCreateErrorDialog		ErrorDialogCreate
#define XmCreateFileSelectionBox	FileSelectionBoxCreate
#define XmCreateFileSelectionDialog	FileSelectionDialogCreate
#define XmCreateForm			FormCreate
#define XmCreateFormDialog		FormDialogCreate
#define XmCreateFrame			FrameCreate
#define XmCreateInformationDialog	InformationDialogCreate
#define XmCreateLabel			LabelCreate
#define XmCreateLabelGadget		LabelGadgetCreate
#define XmCreateList			ListCreate
#define XmCreateMainWindow		MainWindowCreate
#define XmCreateMenuBar			MenuBarCreate
#define XmCreateMenuShell		MenuShellCreate
#define XmCreateMessageBox		MessageBoxCreate
#define XmCreateMessageDialog		MessageDialogCreate
#define XmCreateOptionMenu		OptionMenuCreate
#define XmCreatePanedWindow		PanedWindowCreate
#define XmCreatePopupMenu		PopupMenuCreate
#define XmCreatePromptDialog		PromptDialogCreate
#define XmCreatePulldownMenu		PulldownMenuCreate
#define XmCreatePushButton		PushButtonCreate
#define XmCreatePushButtonGadget	PushButtonGadgetCreate
#define XmCreateQuestionDialog		QuestionDialogCreate
#define XmCreateRadioBox		RadioBoxCreate
#define XmCreateRowColumn		RowColumnCreate
#define XmCreateScale			ScaleCreate
#define XmCreateScrollBar		ScrollBarCreate
#define XmCreateScrolledList		ScrolledListCreate
#define XmCreateScrolledText		ScrolledTextCreate
#define XmCreateScrolledWindow		ScrolledWindowCreate
#define XmCreateSelectionBox		SelectionBoxCreate
#define XmCreateSelectionDialog		SelectionDialogCreate
#define XmCreateSeparator		SeparatorCreate
#define XmCreateSeparatorGadget		SeparatorGadgetCreate
#define XmCreateSpinBox			SpinBoxCreate
#define XmCreateTemplateDialog		TemplateDialogCreate
#define XmCreateText			TextCreate
#define XmCreateTextField		TextFieldCreate
#define XmCreateToggleButton		ToggleButtonCreate
#define XmCreateToggleButtonGadget	ToggleButtonGadgetCreate
#define XmCreateWarningDialog		WarningDialogCreate
#define XmCreateWorkArea		WorkAreaCreate
#define XmCreateWorkingDialog		WorkingDialogCreate 
#define XtAppCreateShell		AppShellCreate
#define XtCreatePopupShell		PopupShellCreate
#define XtAppMainLoop			AppMainLoop 
#define XtSetValues			SetValues
#define XtDestroyWidget			DestroyWidget



extern Widget ArrowButtonCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ArrowButtonGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget BulletinBoardCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget BulletinBoardDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget CascadeButtonCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget CascadeButtonGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget CommandCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ComboBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget DropDownComboBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget DropDownListComboBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ContainerCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget DialogShellCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget DrawingAreaCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget DrawnButtonCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ErrorDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget FileSelectionBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget FileSelectionDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget FormCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget FormDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget FrameCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget InformationDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget IconGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget LabelCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget LabelGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ListCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget MainWindowCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget MenuBarCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget MenuShellCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget MessageBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget MessageDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget NotebookCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget OptionMenuCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PanedWindowCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PopupMenuCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PromptDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PulldownMenuCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PushButtonCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PushButtonGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget QuestionDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget RadioBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget RowColumnCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ScaleCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ScrollBarCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ScrolledListCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ScrolledTextCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ScrolledWindowCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget SelectionBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget SelectionDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget SeparatorCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget SeparatorGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget SpinBoxCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget TemplateDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget TextCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget TextFieldCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ToggleButtonCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget ToggleButtonGadgetCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget WarningDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget WorkingDialogCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget WorkAreaCreate( 
                        Widget p,
                        char *name,
                        ArgList args,
                        Cardinal n);
extern Widget PopupShellCreate( 
                        String name,
                        WidgetClass widget_class,
                        Widget parent,
                        ArgList args,
                        Cardinal num_args);
extern Widget AppShellCreate( 
                        String app_name,
                        String app_class,
                        WidgetClass widget_class,
                        Display *display_in,
                        ArgList args,
                        Cardinal num_args);
extern void AppMainLoop( 
                        XtAppContext app);
extern void SetValues( 
                        register Widget w,
                        ArgList args,
                        Cardinal num_args);
extern void DestroyWidget( 
                        Widget widget);


extern void UTMDestinationProc( 
                        Widget widget,
			XtPointer client_data,
			XtPointer call_data);