Blame tests/Performance/Menu/PPopupMenu1.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: PPopupMenu1.c /main/7 1995/07/14 12:01:30 drk $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
#include <testlib.h>
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
/*  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
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
    PushBtn1     = CreatePushButton("PushButton1", PopupMenu1);
Packit b099d7
Packit b099d7
    ToggleBtn1   = CreateToggle("Toggle1", PopupMenu1);
Packit b099d7
Packit b099d7
    PullDown2    = CreatePullDown(PopupMenu1);
Packit b099d7
Packit b099d7
    CascadeBtn1  = CreateCascade("Cascade1", PullDown2, PopupMenu1);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  Menu2
Packit b099d7
    */
Packit b099d7
    Label2       = CreateLabel("Menu2", PullDown2);
Packit b099d7
Packit b099d7
    Separator2   = CreateSeparator(PullDown2);
Packit b099d7
Packit b099d7
    ToggleBtn2   = CreateToggle("Toggle2", PullDown2);
Packit b099d7
Packit b099d7
    Separator2   = CreateSeparator(PullDown2);
Packit b099d7
Packit b099d7
    PullDown3    = CreatePullDown(PullDown2);
Packit b099d7
Packit b099d7
    CascadeBtn2  = CreateCascade("Cascade2", PullDown3, PullDown2);
Packit b099d7
Packit b099d7
    Separator2   = CreateSeparator(PullDown2);
Packit b099d7
Packit b099d7
    PushBtn2     = CreatePushButton("PushButton2", PullDown2);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  Menu3
Packit b099d7
    */
Packit b099d7
    Label3       = CreateLabel("Menu3", PullDown3);
Packit b099d7
Packit b099d7
    PullDown4    = CreatePullDown(PullDown3);
Packit b099d7
Packit b099d7
    CascadeBtn3  = CreateCascade("Cascade3", PullDown4, PullDown3);
Packit b099d7
Packit b099d7
    PushBtn3     = CreatePushButton("PushButton3", PullDown3);
Packit b099d7
Packit b099d7
    ToggleBtn3   = CreateToggle("Toggle3", PullDown3);
Packit b099d7
Packit b099d7
Packit b099d7
    /*
Packit b099d7
    **  Menu4
Packit b099d7
    */
Packit b099d7
    Label4       = CreateLabel("Menu4", PullDown4);
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