Blame tests/Performance/Menu/PMenuBar1.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: PMenuBar1.c /main/8 1995/07/14 12:00:52 drk $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
/*  Standard C headers  */
Packit b099d7
Packit b099d7
/*	X headers */
Packit b099d7
#include <X11/Xlib.h>
Packit b099d7
#include <X11/StringDefs.h>
Packit b099d7
Packit b099d7
#include <testlib.h>
Packit b099d7
Packit b099d7
/*  Private Functions  */
Packit b099d7
static void  quitCB();
Packit b099d7
Packit b099d7
#define BUFSIZE 128
Packit b099d7
#define MAXBUTTONS 12
Packit b099d7
Packit b099d7
Widget	menubar = NULL;
Packit b099d7
Widget  BB,
Packit b099d7
    	menu1 = NULL,
Packit b099d7
    	submenu1 = NULL,
Packit b099d7
        submenu2 = NULL,
Packit b099d7
        pb1 = NULL,
Packit b099d7
        pb2 = NULL,
Packit b099d7
    	toggle_RC = NULL,
Packit b099d7
    	toggle_MS = NULL,
Packit b099d7
    	toggle_CB = NULL,
Packit b099d7
	toggle_CBG = NULL;
Packit b099d7
Widget  Text;
Packit b099d7
Packit b099d7
Widget  LabelScale, BorderScale, ChildrenScale;
Packit b099d7
Widget  BBD, defBtn, quitBtn;
Packit b099d7
   
Packit b099d7
Boolean	ownms;   
Packit b099d7
Packit b099d7
XmStringCharSet	CharSet = (XmStringCharSet) XmSTRING_DEFAULT_CHARSET;
Packit b099d7
Packit b099d7
void PrintMe (w, client_data, call_data)
Packit b099d7
Widget w;
Packit b099d7
XtPointer client_data, call_data;
Packit b099d7
Packit b099d7
{
Packit b099d7
Packit b099d7
printf ("Accelerator activated this button...\n");
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
void DoItJoe (w, client_data, call_data)
Packit b099d7
Widget w;
Packit b099d7
XtPointer client_data, call_data;
Packit b099d7
Packit b099d7
{
Packit b099d7
int border, num_chars, num_children;
Packit b099d7
char buf[BUFSIZE];
Packit b099d7
char buf2[32];
Packit b099d7
static int created = 0;
Packit b099d7
int n, i;
Packit b099d7
Arg args[30];
Packit b099d7
Widget cascadeButtons[MAXBUTTONS];
Packit b099d7
Packit b099d7
if (created)
Packit b099d7
   XtDestroyWidget (menubar);
Packit b099d7
Packit b099d7
/* get some info */
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNvalue, &border); n++;
Packit b099d7
    XtGetValues (BorderScale, args, n);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNvalue, &num_chars); n++;
Packit b099d7
    XtGetValues (LabelScale, args, n);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNvalue, &num_children); n++;
Packit b099d7
    XtGetValues(ChildrenScale, args, n);
Packit b099d7
   
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg (args[n], XmNborderWidth, border); n++;
Packit b099d7
    menubar = XmCreateMenuBar(BB, "menubar", args, n);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * XmPulldownMenu: submenu1
Packit b099d7
 */
Packit b099d7
   
Packit b099d7
    n = 0; 
Packit b099d7
    submenu1 = XmCreatePulldownMenu(menubar, "submenu1", args, n);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * XmPulldownMenu: submenu2
Packit b099d7
 */
Packit b099d7
   
Packit b099d7
    n = 0; 
Packit b099d7
    submenu2 = XmCreatePulldownMenu(menubar, "submenu2", args, n);
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * XmPushButton: toggle_MS
Packit b099d7
 */
Packit b099d7
Packit b099d7
    n = 0; 
Packit b099d7
Packit b099d7
    XtSetArg(args[n], XmNlabelString,
Packit b099d7
	     XmStringLtoRCreate("Toggle MenuShell", CharSet)); n++;
Packit b099d7
    XtSetArg(args[n], XmNaccelerator, "Ctrl<Key>M"); n++;
Packit b099d7
    XtSetArg(args[n], XmNacceleratorText,
Packit b099d7
             XmStringCreate("Ctrl-M", XmSTRING_DEFAULT_CHARSET)); n++;
Packit b099d7
    toggle_MS = XmCreatePushButton(submenu1, "toggle_MS", args, n);
Packit b099d7
    XtAddCallback (toggle_MS, XmNactivateCallback, PrintMe, NULL);
Packit b099d7
Packit b099d7
    XtManageChild(toggle_MS);
Packit b099d7
   
Packit b099d7
/*
Packit b099d7
 * XmPushButton: toggle_RC
Packit b099d7
 */
Packit b099d7
Packit b099d7
    n = 0; 
Packit b099d7
    XtSetArg(args[n], XmNlabelString, 
Packit b099d7
	     XmStringLtoRCreate("Toggle RowColumn", CharSet)); n++;
Packit b099d7
    XtSetArg(args[n], XmNaccelerator, "Ctrl<Key>R"); n++;
Packit b099d7
    XtSetArg(args[n], XmNacceleratorText,
Packit b099d7
             XmStringCreate("Ctrl-R", XmSTRING_DEFAULT_CHARSET)); n++;
Packit b099d7
    toggle_RC = XmCreatePushButton(submenu1, "toggle_RC", args, n);
Packit b099d7
Packit b099d7
    XtManageChild(toggle_RC);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * XmPushButton: toggle_CB
Packit b099d7
 */
Packit b099d7
Packit b099d7
    n = 0; 
Packit b099d7
    toggle_CB = XmCreatePushButton(submenu1, "toggle_CB", args, n);
Packit b099d7
Packit b099d7
    XtManageChild(toggle_CB);
Packit b099d7
   
Packit b099d7
/*
Packit b099d7
 * XmPushButton: toggle_CBG
Packit b099d7
 */
Packit b099d7
Packit b099d7
    n = 0; 
Packit b099d7
    XtSetArg(args[n], XmNlabelString, 
Packit b099d7
	     XmStringLtoRCreate("Toggle CascadeButtonGadget", CharSet)); n++;
Packit b099d7
    XtSetArg(args[n], XmNaccelerator, "Ctrl<Key>G"); n++;
Packit b099d7
    XtSetArg(args[n], XmNacceleratorText,
Packit b099d7
             XmStringCreate("Ctrl-G", XmSTRING_DEFAULT_CHARSET)); n++;
Packit b099d7
    toggle_CBG = XmCreatePushButton(submenu1, "toggle_CBG", args, n);
Packit b099d7
Packit b099d7
Packit b099d7
    XtManageChild(toggle_CBG);
Packit b099d7
/*
Packit b099d7
 * XmCascadeButton: menu1
Packit b099d7
 */
Packit b099d7
Packit b099d7
Packit b099d7
/* some children of submenu2 */
Packit b099d7
Packit b099d7
n = 0;
Packit b099d7
pb1 = XmCreatePushButtonGadget (submenu2, "pb1", args, n);
Packit b099d7
pb2 = XmCreatePushButtonGadget (submenu2, "pb2", args, n);
Packit b099d7
XtManageChild (pb1);
Packit b099d7
XtManageChild (pb2);
Packit b099d7
 
Packit b099d7
 /***/
Packit b099d7
 printf ("num_children is %d\n", num_children); 
Packit b099d7
Packit b099d7
/* We need several button children, let's try this */
Packit b099d7
    for (i = 0; i <= (num_children - 1); i++)
Packit b099d7
      { n = 0;
Packit b099d7
        for (n = 0; n <= (num_chars - 1); n++)
Packit b099d7
            buf[n] = '+';
Packit b099d7
        buf[n] = '\0';
Packit b099d7
        n = 0;
Packit b099d7
        XtSetArg(args[n], XmNlabelString, 
Packit b099d7
	     XmStringCreate (&buf[0], XmSTRING_DEFAULT_CHARSET)); n++;
Packit b099d7
	if (i%2)
Packit b099d7
	  {
Packit b099d7
           XtSetArg(args[n], XmNsubMenuId, submenu1); n++;
Packit b099d7
	 }
Packit b099d7
	else
Packit b099d7
	  {
Packit b099d7
	   XtSetArg(args[n], XmNsubMenuId, submenu2); n++;
Packit b099d7
	 }
Packit b099d7
        sprintf(buf2, "CascadeButton%d", i);
Packit b099d7
	printf ("I am creating child %d\n", i);
Packit b099d7
/*	cascadeButtons[i] = XmCreateCascadeButtonGadget(menubar,
Packit b099d7
							 buf2,
Packit b099d7
							 args, n);
Packit b099d7
*/
Packit b099d7
	cascadeButtons[i] = XmCreateCascadeButton(menubar,
Packit b099d7
							 buf2,
Packit b099d7
							 args, n);
Packit b099d7
Packit b099d7
        XtManageChild(cascadeButtons[i]);
Packit b099d7
      }
Packit b099d7
Packit b099d7
    XtManageChild(menubar);
Packit b099d7
Packit b099d7
    created = 1;
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
    Arg args[20];
Packit b099d7
    XmString tcs, tcs1, tcs2;
Packit b099d7
    int n;
Packit b099d7
    int border;
Packit b099d7
Packit b099d7
    CommonTestInit(argc, argv);
Packit b099d7
    
Packit b099d7
Packit b099d7
    /* create a dialog shell to run things */
Packit b099d7
    /* a scale for border width, a scale for number of chars in label */
Packit b099d7
    /* and an okay button to make things go! */
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNautoUnmanage, False); n++;
Packit b099d7
    BBD = XmCreateFormDialog (Shell1, "BBD", args, n);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
/*    XtSetArg (args[n], XmNgeometry, "+300+300"); n++; */
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
Packit b099d7
    XtSetArg (args[n], XmNlabelString,
Packit b099d7
	      XmStringCreateSimple("Set 'em up, Joe")); n++;
Packit b099d7
    defBtn = XmCreatePushButtonGadget (BBD, "defBtn", args, n);
Packit b099d7
    XtManageChild (defBtn);
Packit b099d7
    XtAddCallback (defBtn, XmNactivateCallback, DoItJoe, NULL);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg (args[n], XmNdefaultButton, defBtn);
Packit b099d7
    XtSetValues (BBD, args, n);
Packit b099d7
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;
Packit b099d7
    XtSetArg(args[n], XmNshowValue, True); n++;
Packit b099d7
    XtSetArg(args[n], XmNtitleString,
Packit b099d7
	     XmStringCreateSimple("Border Width")); n++;
Packit b099d7
    XtSetArg(args[n], XmNminimum, 0); n++;
Packit b099d7
    XtSetArg(args[n], XmNmaximum, 100); n++;
Packit b099d7
    XtSetArg(args[n], XmNvalue, 0); n++;
Packit b099d7
/*    XtSetArg(args[n], XmNx, 10); n++;
Packit b099d7
    XtSetArg(args[n], XmNy, 50); n++; */
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopWidget, defBtn); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopOffset, 10); n++;
Packit b099d7
    BorderScale = XmCreateScale (BBD, "BorderScale", args, n);
Packit b099d7
    XtManageChild (BorderScale);
Packit b099d7
   
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;
Packit b099d7
    XtSetArg(args[n], XmNshowValue, True); n++;
Packit b099d7
    XtSetArg(args[n], XmNtitleString,
Packit b099d7
	     XmStringCreateSimple("# Chars in Label")); n++;
Packit b099d7
    XtSetArg(args[n], XmNminimum, 1); n++;
Packit b099d7
    XtSetArg(args[n], XmNmaximum, BUFSIZE - 1); n++;
Packit b099d7
    XtSetArg(args[n], XmNvalue, 1); n++;
Packit b099d7
/*    XtSetArg(args[n], XmNx, 10); n++;
Packit b099d7
    XtSetArg(args[n], XmNy, 150); n++; */
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopWidget, BorderScale); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopOffset, 10); n++;
Packit b099d7
    LabelScale = XmCreateScale (BBD, "LabelScale", args, n);
Packit b099d7
    XtManageChild (LabelScale);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;
Packit b099d7
    XtSetArg(args[n], XmNshowValue, True); n++;
Packit b099d7
    XtSetArg(args[n], XmNtitleString,
Packit b099d7
	     XmStringCreateSimple("# Children")); n++;
Packit b099d7
    XtSetArg(args[n], XmNminimum, 1); n++;
Packit b099d7
    XtSetArg(args[n], XmNmaximum, MAXBUTTONS - 1); n++;
Packit b099d7
    XtSetArg(args[n], XmNvalue, 1); n++;
Packit b099d7
/*    XtSetArg(args[n], XmNx, 10); n++;
Packit b099d7
    XtSetArg(args[n], XmNy, 200); n++; */
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopWidget, LabelScale); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopOffset, 10); n++;
Packit b099d7
    ChildrenScale = XmCreateScale (BBD, "ChildrenScale", args, n);
Packit b099d7
    XtManageChild (ChildrenScale);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg (args[n], XmNlabelString,
Packit b099d7
	      XmStringCreateSimple ("Quit")); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopWidget, ChildrenScale); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopOffset, 10); n++;
Packit b099d7
    quitBtn = XmCreatePushButtonGadget (BBD, "quitBtn", args, n); 
Packit b099d7
    XtAddCallback (quitBtn, XmNactivateCallback, quitCB, NULL);
Packit b099d7
    XtManageChild(quitBtn);
Packit b099d7
Packit b099d7
    n = 0;
Packit b099d7
    XtSetArg (args[n], XmNeditable, False); n++;
Packit b099d7
    XtSetArg (args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;
Packit b099d7
    XtSetArg (args[n], XmNvalue, "Use the sliders\nto select the\nnumber of children,\nthe border width,\nand how many\ncharacters in\neach child\'s\nlabel. These will\nbe displayed\nwhen you create\nthe menubar using\nthe Set Up button."); n++;
Packit b099d7
    XtSetArg (args[n], XmNrows, 13); n++;
Packit b099d7
    XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopWidget, quitBtn); n++;
Packit b099d7
    XtSetArg (args[n], XmNtopOffset, 10); n++;
Packit b099d7
    Text = XmCreateText (BBD, "Text", args, n);
Packit b099d7
    XtManageChild (Text);
Packit b099d7
Packit b099d7
    XtManageChild (BBD);
Packit b099d7
Packit b099d7
/*
Packit b099d7
 * XmMenuBar: menubar
Packit b099d7
 */
Packit b099d7
   n = 0;
Packit b099d7
   XtSetArg (args[n], XmNheight, 400); n++;
Packit b099d7
   XtSetArg (args[n], XmNwidth, 300); n++;
Packit b099d7
   BB = XmCreateBulletinBoard (Shell1, "BB", args, n);
Packit b099d7
Packit b099d7
/* call the callback */
Packit b099d7
Packit b099d7
    XtManageChild (BB);
Packit b099d7
   XtRealizeWidget(Shell1);
Packit b099d7
 
Packit b099d7
    XtAppMainLoop(app_context);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static void  quitCB(w, client_data, call_data)
Packit b099d7
    Widget   w;
Packit b099d7
    XtPointer  client_data;
Packit b099d7
    XtPointer  call_data;
Packit b099d7
Packit b099d7
{
Packit b099d7
	printf("Exiting...Please Standby...\n");
Packit b099d7
	exit(0);
Packit b099d7
}