Blame tests/Performance/Menu/PPopupMenu2.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: PPopupMenu2.c /main/7 1995/07/14 12:01:40 drk $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
#include <testlib.h>
Packit b099d7
Packit b099d7
#define	MAX_BUTTONS	40
Packit b099d7
Packit b099d7
/*  Global Variables  */
Packit b099d7
Widget    Label;
Packit b099d7
Widget    PopupMenu1;
Packit b099d7
Widget    Label1;
Packit b099d7
Widget    Separator1;
Packit b099d7
Widget    PushBtn1;
Packit b099d7
Widget    ToggleBtn1;
Packit b099d7
Widget    PullDown2;
Packit b099d7
Widget    CascadeBtn1;
Packit b099d7
Widget    Label2;
Packit b099d7
Widget    Separator2;
Packit b099d7
Widget    ToggleBtn2;
Packit b099d7
Widget    PullDown3;
Packit b099d7
Widget    CascadeBtn2;
Packit b099d7
Widget    PushBtn2;
Packit b099d7
Widget    Label3;
Packit b099d7
Widget    PullDown4;
Packit b099d7
Widget    CascadeBtn3;
Packit b099d7
Widget    PushBtn3;
Packit b099d7
Widget    ToggleBtn3;
Packit b099d7
Widget    Label4;
Packit b099d7
Packit b099d7
Widget	push_btns[MAX_BUTTONS];
Packit b099d7
Packit b099d7
char	*btn_labels[MAX_BUTTONS] = {
Packit b099d7
Packit b099d7
			"PushButton1",
Packit b099d7
			"PushButton2",
Packit b099d7
			"PushButton3",
Packit b099d7
			"PushButton4",
Packit b099d7
			"PushButton5",
Packit b099d7
			"PushButton6",
Packit b099d7
			"PushButton7",
Packit b099d7
			"PushButton8",
Packit b099d7
			"PushButton9",
Packit b099d7
			"PushButton10",
Packit b099d7
			"PushButton11",
Packit b099d7
			"PushButton12",
Packit b099d7
			"PushButton13",
Packit b099d7
			"PushButton14",
Packit b099d7
			"PushButton15",
Packit b099d7
			"PushButton16",
Packit b099d7
			"PushButton17",
Packit b099d7
			"PushButton18",
Packit b099d7
			"PushButton19",
Packit b099d7
			"PushButton20",
Packit b099d7
			"PushButton21",
Packit b099d7
			"PushButton22",
Packit b099d7
			"PushButton23",
Packit b099d7
			"PushButton24",
Packit b099d7
			"PushButton25",
Packit b099d7
			"PushButton26",
Packit b099d7
			"PushButton27",
Packit b099d7
			"PushButton28",
Packit b099d7
			"PushButton29",
Packit b099d7
			"PushButton30",
Packit b099d7
			"PushButton31",
Packit b099d7
			"PushButton32",
Packit b099d7
			"PushButton33",
Packit b099d7
			"PushButton34",
Packit b099d7
			"PushButton35",
Packit b099d7
			"PushButton36",
Packit b099d7
			"PushButton37",
Packit b099d7
			"PushButton38",
Packit b099d7
			"PushButton39",
Packit b099d7
			"PushButton40"
Packit b099d7
Packit b099d7
		};
Packit b099d7
Widget    PushBtn4;
Packit b099d7
Widget    PushBtn5;
Packit b099d7
Widget    PushBtn6;
Packit b099d7
Widget    PushBtn7;
Packit b099d7
Widget    PushBtn8;
Packit b099d7
Widget    PushBtn9;
Packit b099d7
Widget    PushBtn10;
Packit b099d7
Widget    PushBtn11;
Packit b099d7
Widget    PushBtn12;
Packit b099d7
Widget    PushBtn13;
Packit b099d7
Widget    PushBtn14;
Packit b099d7
Widget    PushBtn15;
Packit b099d7
Widget    PushBtn16;
Packit b099d7
Widget    PushBtn17;
Packit b099d7
Widget    PushBtn18;
Packit b099d7
Widget    PushBtn19;
Packit b099d7
Widget    PushBtn20;
Packit b099d7
Packit b099d7
/*  Private Functions  */
Packit b099d7
static void  Quit();
Packit b099d7
static XtCallbackProc  quitCB();
Packit b099d7
Packit b099d7
#define PUSHBUTTON 1
Packit b099d7
#define TOGGLEBUTTON 2
Packit b099d7
#define CASCADEBUTTON 3
Packit b099d7
Packit b099d7
XtCallbackProc CBHandler (w, client_data, call_data)
Packit b099d7
Widget w;
Packit b099d7
caddr_t client_data, call_data;
Packit b099d7
Packit b099d7
{
Packit b099d7
char *myname;
Packit b099d7
CoreWidget  *tmpwidget;
Packit b099d7
Packit b099d7
switch ( ((XmAnyCallbackStruct *)call_data)->reason)
Packit b099d7
  {    case XmCR_ARM:    printf ("Arm ");
Packit b099d7
                         break;
Packit b099d7
       case XmCR_ACTIVATE:    printf ("Activate ");
Packit b099d7
                         break;
Packit b099d7
       case XmCR_DISARM: printf ("Disarm ");
Packit b099d7
                         break;
Packit b099d7
       case XmCR_VALUE_CHANGED:  printf ("ValueChanged ");
Packit b099d7
                         break;
Packit b099d7
       case XmCR_CASCADING:  printf ("Cascading ");
Packit b099d7
                         break;
Packit b099d7
       default:           printf ("Other Callback ");
Packit b099d7
  }
Packit b099d7
Packit b099d7
printf ("%s\n", XtName(w));
Packit b099d7
XFlush(display);
Packit b099d7
fflush(stdout);
Packit b099d7
Packit b099d7
/*
Packit b099d7
tmpwidget = (CoreWidget)w;
Packit b099d7
*/
Packit b099d7
Packit b099d7
/* myname = ((CoreWidget *)w)->name;
Packit b099d7
   if (*myname != NULL) printf ("%s\n", myname);
Packit b099d7
*/
Packit b099d7
Packit b099d7
}
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
static Widget  CreateSeparator(parent)
Packit b099d7
	Widget parent ;
Packit b099d7
{
Packit b099d7
    Widget  widget;
Packit b099d7
Packit b099d7
Packit b099d7
    widget = XmCreateSeparator(parent, "separator", NULL, 0);
Packit b099d7
    XtManageChild(widget);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static Widget  CreatePullDown(parent)
Packit b099d7
	Widget parent ;
Packit b099d7
{
Packit b099d7
    Widget  widget;
Packit b099d7
    
Packit b099d7
Packit b099d7
    widget = XmCreatePulldownMenu (parent, "pulldown", NULL, 0);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static Widget  CreateCascade(label, submenu, parent)
Packit b099d7
    char   *label;
Packit b099d7
    Widget  submenu;
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
    XtSetArg(args[n], XmNsubMenuId, submenu); n++;
Packit b099d7
    widget = XmCreateCascadeButton(parent, "cascade", args,n);
Packit b099d7
    XtManageChild(widget);
Packit b099d7
    XmStringFree(tcs);
Packit b099d7
Packit b099d7
    return(widget);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
void  PostMenu (w, popup, event,c)
Packit b099d7
    Widget         w;
Packit b099d7
    XtPointer         popup;
Packit b099d7
    XEvent  *event;
Packit b099d7
    Boolean *c;
Packit b099d7
{
Packit b099d7
    if (event->xbutton.button != Button3)
Packit b099d7
        return;
Packit b099d7
Packit b099d7
    XmMenuPosition((Widget) popup, (XButtonPressedEvent *)event);
Packit b099d7
    XtManageChild ((Widget) popup);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
void  main(argc, argv)
Packit b099d7
    int     argc;
Packit b099d7
    char  **argv;
Packit b099d7
{
Packit b099d7
    register int  n;
Packit b099d7
    Arg           args[MAX_ARGS];
Packit b099d7
    XmString      tcs;
Packit b099d7
	int			num_buttons;
Packit b099d7
	int			i;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
    CommonTestInit(argc, argv);
Packit b099d7
    
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNwidth,  200);  n++;
Packit b099d7
    XtSetArg(args[n], XmNheight, 40);   n++;
Packit b099d7
    XtSetValues(Shell1, args, n);
Packit b099d7
    
Packit b099d7
Packit b099d7
    XtRealizeWidget(Shell1);
Packit b099d7
Packit b099d7
Packit b099d7
    Label = CreateLabel("Select Me", Shell1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  PopupMenu1
Packit b099d7
    */
Packit b099d7
    PopupMenu1 = XmCreatePopupMenu(Label, "popMenu", NULL, 0);
Packit b099d7
    XtAddEventHandler(Label, ButtonPressMask, False, PostMenu, (XtPointer) PopupMenu1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  Menu1
Packit b099d7
    */
Packit b099d7
    Label1       = CreateLabel("Menu1", PopupMenu1);
Packit b099d7
Packit b099d7
    Separator1   = CreateSeparator(PopupMenu1);
Packit b099d7
Packit b099d7
	num_buttons = MAX_BUTTONS; /* to be modified to take from command line */
Packit b099d7
	for (i = 0; i < num_buttons; i++)
Packit b099d7
		push_btns[i] = CreatePushButton(btn_labels[i], PopupMenu1);
Packit b099d7
    ToggleBtn1   = CreateToggle("Toggle1", PopupMenu1);
Packit b099d7
Packit b099d7
    XtAppMainLoop(app_context);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
static XtCallbackProc  quitCB(w, client_data, call_data)
Packit b099d7
    Widget   w;
Packit b099d7
    caddr_t  client_data;
Packit b099d7
    caddr_t  call_data;
Packit b099d7
Packit b099d7
{
Packit b099d7
	printf("Exiting...Please Standby...\n");
Packit b099d7
	exit(0);
Packit b099d7
}
Packit b099d7
Packit b099d7