|
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 |
|