Blame tests/Performance/Expose/periodic.c

Packit b099d7
/* 
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
*/ 
Packit b099d7
/* 
Packit b099d7
 * HISTORY
Packit b099d7
*/ 
Packit b099d7
#ifdef REV_INFO
Packit b099d7
#ifndef lint
Packit b099d7
static char rcsid[] = "$XConsortium: periodic.c /main/7 1995/07/14 12:00:23 drk $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
Packit b099d7
#include <testlib.h>
Packit b099d7
#include <Mrm/MrmPublic.h>                   /* Mrm Toolkit */
Packit b099d7
Packit b099d7
#define MAX_ARGS  100
Packit b099d7
Packit b099d7
#define K_scale_widget           1
Packit b099d7
#define K_drawnbutton_widget     2
Packit b099d7
#define K_togglebutton_widget    3
Packit b099d7
#define K_vtext1_widget          4
Packit b099d7
#define K_vtext2_widget          5
Packit b099d7
#define K_popup_menu_widget      6
Packit b099d7
Packit b099d7
static Widget Scale_1,Drawnbutton_1,Togglebutton_1,VText_1,VText_2,PopMenu_1,PMenu_1;
Packit b099d7
static Widget Label1, Separator1, PushBtn1, ToggleBtn1;
Packit b099d7
Packit b099d7
static MrmHierarchy	s_MrmHierarchy;		/* MRM database hierarch id */
Packit b099d7
static char		*vec[]={"periodic.uid"};
Packit b099d7
						/* MRM database file list   */
Packit b099d7
static MrmCode		class ;
Packit b099d7
Packit b099d7
static void quit_button_activate();
Packit b099d7
static void foo_activate();
Packit b099d7
static void create_callback();
Packit b099d7
static void zippy_null();
Packit b099d7
static void postmenu ();
Packit b099d7
Packit b099d7
static MrmCount		regnum = 4 ;
Packit b099d7
static MrmRegisterArg	regvec[] = {
Packit b099d7
	{"quit_button_activate",(caddr_t)quit_button_activate},
Packit b099d7
	{"foo_activate",(caddr_t)foo_activate},
Packit b099d7
	{"create_callback",(caddr_t)create_callback},
Packit b099d7
	{"zippy_null",(caddr_t)zippy_null}
Packit b099d7
	};
Packit b099d7
Packit b099d7
static Widget  CreateLabel(label, parent)
Packit b099d7
    char   *label;
Packit b099d7
    Widget  parent;
Packit b099d7
{
Packit b099d7
    Widget        widget;
Packit b099d7
    register int  n;
Packit b099d7
    Arg           args[MAX_ARGS];
Packit b099d7
    XmString      tcs;
Packit b099d7
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    tcs = XmStringLtoRCreate(label, XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, tcs);  n++;
Packit b099d7
    widget = XmCreateLabel(parent, "label", args, n);
Packit b099d7
    XtManageChild(widget);
Packit b099d7
    XmStringFree(tcs);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static Widget  CreatePushButton(label, parent)
Packit b099d7
    char   *label;
Packit b099d7
    Widget  parent;
Packit b099d7
{
Packit b099d7
    Widget        widget;
Packit b099d7
    register int  n;
Packit b099d7
    Arg           args[MAX_ARGS];
Packit b099d7
    XmString      tcs;
Packit b099d7
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    tcs = XmStringLtoRCreate(label, XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, tcs);  n++;
Packit b099d7
    widget = XmCreatePushButton(parent, "pushButton", args, n);
Packit b099d7
    XtManageChild(widget);
Packit b099d7
    XmStringFree(tcs);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
static Widget  CreateToggle(label, parent)
Packit b099d7
    char   *label;
Packit b099d7
    Widget  parent;
Packit b099d7
{
Packit b099d7
    Widget        widget;
Packit b099d7
    register int  n;
Packit b099d7
    Arg           args[MAX_ARGS];
Packit b099d7
    XmString      tcs;
Packit b099d7
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    tcs = XmStringLtoRCreate(label, XmSTRING_DEFAULT_CHARSET);
Packit b099d7
    XtSetArg(args[n], XmNlabelString, tcs);  n++;
Packit b099d7
    widget = XmCreateToggleButton(parent, "toggle", args, n);
Packit b099d7
    XtManageChild(widget);
Packit b099d7
    XmStringFree(tcs);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 *  Main program
Packit b099d7
 */
Packit b099d7
int main(argc, argv)
Packit b099d7
unsigned int argc;
Packit b099d7
char **argv;
Packit b099d7
{
Packit b099d7
     /*
Packit b099d7
     *  Declare the variables to contain the two widget ids
Packit b099d7
     */
Packit b099d7
    Widget periodic_table_main;
Packit b099d7
    Arg args[1] ;
Packit b099d7
	int	n;
Packit b099d7
    int         status;
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Initialize the MRM
Packit b099d7
     */
Packit b099d7
Packit b099d7
    MrmInitialize ();
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Initialize the toolkit.  This call returns the id of the "Shell1"
Packit b099d7
     *  widget.  The applications "main" widget must be the only child
Packit b099d7
     *  of this widget.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    CommonTestInit(argc, argv);
Packit b099d7
    
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg (args[n], XtNallowShellResize, FALSE) ; n++;
Packit b099d7
    XtSetValues(Shell1, args, n);
Packit b099d7
    
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Define the Mrm.hierarchy (only 1 file)
Packit b099d7
     */
Packit b099d7
Packit b099d7
    if (MrmOpenHierarchy (1,    /* number of files	    */
Packit b099d7
			vec, 			    /* files     	    */
Packit b099d7
			NULL,			    /* os_ext_list (null)   */
Packit b099d7
			&s_MrmHierarchy)    /* ptr to returned id   */
Packit b099d7
			!= MrmSUCCESS) {
Packit b099d7
		printf ("can't open hierarchy\n"); 
Packit b099d7
		exit(1);
Packit b099d7
	}
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     * 	Register our callback routines so that the resource manager can 
Packit b099d7
     * 	resolve them at widget-creation time.
Packit b099d7
     */
Packit b099d7
Packit b099d7
    if (MrmRegisterNames (regvec, regnum) != MrmSUCCESS) {
Packit b099d7
		printf("can't register names\n");
Packit b099d7
		exit(1);
Packit b099d7
	}
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Call MRM to fetch and create the pushbutton and its container
Packit b099d7
     */
Packit b099d7
Packit b099d7
    if (MrmFetchWidget (s_MrmHierarchy, "periodic_table_main",
Packit b099d7
						Shell1, &periodic_table_main, &class) != MrmSUCCESS) {
Packit b099d7
    	printf("can't fetch interface\n");
Packit b099d7
		exit(1);
Packit b099d7
	}
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Make the Shell1 widget "manage" the main window (or whatever the
Packit b099d7
     *  the uil defines as the topmost widget).  This will
Packit b099d7
     *  cause it to be "realized" when the Shell1 widget is "realized"
Packit b099d7
     */
Packit b099d7
Packit b099d7
    XtManageChild(periodic_table_main);
Packit b099d7
    
Packit b099d7
    /*
Packit b099d7
     *  Realize the Shell1 widget.  This will cause the entire "managed"
Packit b099d7
     *  widget hierarchy to be displayed
Packit b099d7
     */
Packit b099d7
Packit b099d7
    XtRealizeWidget(Shell1);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  PopupMenu1
Packit b099d7
    */
Packit b099d7
    PMenu_1 = XmCreatePopupMenu(PopMenu_1, "popMenu", NULL, 0);
Packit b099d7
    XtAddEventHandler(PopMenu_1, ButtonPressMask, False, postmenu, PMenu_1);
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  Menu1
Packit b099d7
    */
Packit b099d7
    Label1       = CreateLabel("POPUP MENU", PMenu_1);
Packit b099d7
Packit b099d7
	n = 0;
Packit b099d7
    XtSetArg(args[n], XmNseparatorType, XmDOUBLE_LINE); n++;
Packit b099d7
    Separator1   = XmCreateSeparator(PMenu_1, "separator", args, n);
Packit b099d7
Packit b099d7
    PushBtn1     = CreatePushButton("pushbutton", PMenu_1);
Packit b099d7
Packit b099d7
    ToggleBtn1   = CreateToggle("togglebutton", PMenu_1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
     *  Loop and process events
Packit b099d7
     */
Packit b099d7
Packit b099d7
    XtAppMainLoop(app_context);
Packit b099d7
Packit b099d7
    /* UNREACHABLE */
Packit b099d7
    return (0);
Packit b099d7
}
Packit b099d7
Packit b099d7
static void zippy_null( widget, tag, callback_data )
Packit b099d7
	Widget	widget;
Packit b099d7
	char    *tag;
Packit b099d7
	XmAnyCallbackStruct *callback_data;
Packit b099d7
{
Packit b099d7
}
Packit b099d7
Packit b099d7
#define fatal 1
Packit b099d7
static void  postmenu (w, popup, event)
Packit b099d7
    Widget         w;
Packit b099d7
    Widget         popup;
Packit b099d7
    XButtonEvent  *event;
Packit b099d7
{
Packit b099d7
    int         status;
Packit b099d7
    if (event->button != Button3)
Packit b099d7
        return;
Packit b099d7
Packit b099d7
    XmMenuPosition(PMenu_1, event);
Packit b099d7
    XtManageChild (PMenu_1);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * All widgets that are created call back to this procedure.
Packit b099d7
 */
Packit b099d7
Packit b099d7
static void create_callback(w, tag, reason)
Packit b099d7
    Widget w;
Packit b099d7
    int *tag;
Packit b099d7
    unsigned long *reason;
Packit b099d7
{
Packit b099d7
Packit b099d7
    /*  For internationalization ease, we capture a few strings from the
Packit b099d7
     *  widgets themselves.  We could go out and fetch them as needed but
Packit b099d7
     *  since we use these all the time, this method if more efficient.
Packit b099d7
     */
Packit b099d7
    switch (*tag) {
Packit b099d7
        case K_scale_widget: 
Packit b099d7
	    Scale_1 = w;
Packit b099d7
            break;
Packit b099d7
        case K_drawnbutton_widget: 
Packit b099d7
	    Drawnbutton_1 = w;
Packit b099d7
            break;
Packit b099d7
        case K_togglebutton_widget: 
Packit b099d7
	    Togglebutton_1 = w;
Packit b099d7
            break;
Packit b099d7
        case K_vtext1_widget: 
Packit b099d7
	    VText_1 = w;
Packit b099d7
            break;
Packit b099d7
        case K_vtext2_widget: 
Packit b099d7
	    VText_2 = w;
Packit b099d7
            break;
Packit b099d7
        case K_popup_menu_widget: 
Packit b099d7
	    PopMenu_1 = w;
Packit b099d7
            break;
Packit b099d7
        default: 
Packit b099d7
            break;
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
static void foo_activate( widget, tag, callback_data )
Packit b099d7
	Widget	widget;
Packit b099d7
	char    *tag;
Packit b099d7
	XmAnyCallbackStruct *callback_data;
Packit b099d7
{
Packit b099d7
    Arg args[2];
Packit b099d7
	int	n;
Packit b099d7
    int scale_value;
Packit b099d7
    Boolean toggle_state;
Packit b099d7
Packit b099d7
	n = 0;
Packit b099d7
    XtSetArg( args[n], XmNvalue, &scale_value); n++;
Packit b099d7
    XtGetValues( Scale_1, args, n );
Packit b099d7
	n = 0;
Packit b099d7
    XtSetArg( args[n], XmNset, &toggle_state); n++;
Packit b099d7
    XtGetValues( Togglebutton_1, args, n );
Packit b099d7
Packit b099d7
    if ((scale_value == 13) && (toggle_state == True)) {
Packit b099d7
	n = 0;
Packit b099d7
	XtSetArg( args[n], XmNvalue, "OSF Motif Credits"); n++;
Packit b099d7
	XtSetValues( VText_1, args, n );
Packit b099d7
	n = 0;
Packit b099d7
	XtSetArg( args[n], XmNvalue,
Packit b099d7
"DEV: Vania, Ellis, Mike,\n\
Packit b099d7
..Alka, Al, Scott,\n\
Packit b099d7
..Daniel, and Paul\n\
Packit b099d7
REL: Ron and Martha\n\
Packit b099d7
Q/A: Libby, Tom, Ken,\n\
Packit b099d7
..Carl, and Dany\n\
Packit b099d7
DOC: Ken and Bob\n\
Packit b099d7
Moral Support:\n\
Packit b099d7
Mary Chung's Restaurant\n"); n++;
Packit b099d7
	XtSetValues( VText_2, args, n );
Packit b099d7
    }
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
static void quit_button_activate( widget, tag, callback_data )
Packit b099d7
	Widget	widget;
Packit b099d7
	char    *tag;
Packit b099d7
	XmAnyCallbackStruct *callback_data;
Packit b099d7
{
Packit b099d7
    Arg args[2];
Packit b099d7
	int	n;
Packit b099d7
Packit b099d7
    static int call_count = 1;
Packit b099d7
Packit b099d7
    call_count += 1 ;
Packit b099d7
    switch ( call_count )
Packit b099d7
        {
Packit b099d7
        case 1:
Packit b099d7
			  n = 0;
Packit b099d7
/*            XtSetArg( args[n], XmNlabelString,
Packit b099d7
                XmStringLtoRCreate("Goodbye\nWorld!","")); n++;
Packit b099d7
		XtSetValues( Text_1, args, n );          */
Packit b099d7
            break ;
Packit b099d7
        case 2:
Packit b099d7
            exit(1);
Packit b099d7
            break ;
Packit b099d7
        }
Packit b099d7
}