Blame lib/Xm/Simple.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: Simple.c /main/11 1995/09/19 23:08:54 cde-sun $"
Packit b099d7
#endif
Packit b099d7
#endif
Packit b099d7
/*
Packit b099d7
*  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#include <stdio.h>
Packit b099d7
#include <X11/StringDefs.h>
Packit b099d7
#include <Xm/RowColumnP.h>
Packit b099d7
#include <Xm/PushBG.h>
Packit b099d7
#include <Xm/ToggleBG.h>
Packit b099d7
#include <Xm/CascadeBG.h>
Packit b099d7
#include <Xm/LabelG.h>
Packit b099d7
#include <Xm/SeparatoG.h>
Packit b099d7
#include "XmI.h"
Packit b099d7
Packit b099d7
/********    Static Function Declarations    ********/
Packit b099d7
Packit b099d7
static void EvaluateConvenienceStructure( 
Packit b099d7
                        Widget wid,
Packit b099d7
                        XmSimpleMenu sm) ;
Packit b099d7
Packit b099d7
/********    End Static Function Declarations    ********/
Packit b099d7
Packit b099d7
static XtResource SimpleMenuResources[] =
Packit b099d7
{
Packit b099d7
	{ XmNbuttonCount, XmCButtonCount, XmRInt, sizeof(int),
Packit b099d7
	  XtOffsetOf( struct _XmSimpleMenuRec, count),
Packit b099d7
	  XmRImmediate, (XtPointer) 0
Packit b099d7
	},
Packit b099d7
	{ XmNpostFromButton, XmCPostFromButton, XmRInt, sizeof(int),
Packit b099d7
	  XtOffsetOf( struct _XmSimpleMenuRec, post_from_button),
Packit b099d7
	  XmRImmediate, (XtPointer) -1
Packit b099d7
	},
Packit b099d7
	{ XmNsimpleCallback, XmCCallback, XmRCallbackProc, 
Packit b099d7
	  sizeof(XtCallbackProc), XtOffsetOf( struct _XmSimpleMenuRec, callback),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttons, XmCButtons, XmRXmStringTable,
Packit b099d7
	  sizeof(XmStringTable), XtOffsetOf( struct _XmSimpleMenuRec, label_string),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonAccelerators, XmCButtonAccelerators, XmRStringTable, 
Packit b099d7
	  sizeof(String *), XtOffsetOf( struct _XmSimpleMenuRec,  accelerator),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonAcceleratorText, XmCButtonAcceleratorText, 
Packit b099d7
	  XmRXmStringTable, sizeof(XmStringTable),
Packit b099d7
	  XtOffsetOf( struct _XmSimpleMenuRec, accelerator_text),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonMnemonics, XmCButtonMnemonics, XmRKeySymTable,
Packit b099d7
	  sizeof(XmKeySymTable), XtOffsetOf( struct _XmSimpleMenuRec, mnemonic),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonMnemonicCharSets, XmCButtonMnemonicCharSets, 
Packit b099d7
	  XmRCharSetTable, sizeof(XmStringCharSetTable),
Packit b099d7
	  XtOffsetOf( struct _XmSimpleMenuRec, mnemonic_charset),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonType, XmCButtonType, XmRButtonType,
Packit b099d7
	  sizeof(XmButtonTypeTable), XtOffsetOf( struct _XmSimpleMenuRec, button_type),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNbuttonSet, XmCButtonSet, XmRInt,
Packit b099d7
	  sizeof(int), XtOffsetOf( struct _XmSimpleMenuRec, button_set),
Packit b099d7
	  XmRImmediate, (XtPointer) -1
Packit b099d7
	},
Packit b099d7
	{ XmNoptionLabel, XmCOptionLabel, XmRXmString,
Packit b099d7
	  sizeof(XmString), XtOffsetOf( struct _XmSimpleMenuRec, option_label),
Packit b099d7
	  XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
	{ XmNoptionMnemonic, XmCOptionMnemonic, XmRKeySym,
Packit b099d7
	  sizeof (KeySym), XtOffsetOf( struct _XmSimpleMenuRec, option_mnemonic),
Packit b099d7
          XmRImmediate, (XtPointer) NULL
Packit b099d7
	},
Packit b099d7
};
Packit b099d7
Packit b099d7
static void 
Packit b099d7
EvaluateConvenienceStructure(
Packit b099d7
        Widget wid,
Packit b099d7
        XmSimpleMenu sm )
Packit b099d7
{
Packit b099d7
        XmRowColumnWidget rc = (XmRowColumnWidget) wid ;
Packit b099d7
	int i, n;
Packit b099d7
	char name_buf[20];
Packit b099d7
	int button_count = 0;
Packit b099d7
	int separator_count = 0;
Packit b099d7
	int label_count = 0;
Packit b099d7
	Arg args[6];
Packit b099d7
	Widget child;
Packit b099d7
	XmButtonType btype;
Packit b099d7
Packit b099d7
	for (i = 0; i < sm->count; i++)
Packit b099d7
	{
Packit b099d7
		n = 0;
Packit b099d7
		if (sm->label_string && sm->label_string[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(args[n], XmNlabelString, sm->label_string[i]);
Packit b099d7
			n++;
Packit b099d7
		}
Packit b099d7
		if (sm->accelerator && sm->accelerator[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(args[n], XmNaccelerator, sm->accelerator[i]);
Packit b099d7
			n++;
Packit b099d7
		}
Packit b099d7
		if (sm->accelerator_text && sm->accelerator_text[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(args[n], XmNacceleratorText, 
Packit b099d7
				sm->accelerator_text[i]); 
Packit b099d7
			n++;
Packit b099d7
		}
Packit b099d7
		if (sm->mnemonic && sm->mnemonic[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(args[n], XmNmnemonic, sm->mnemonic[i]);
Packit b099d7
			n++;
Packit b099d7
		}
Packit b099d7
		if (sm->mnemonic_charset && sm->mnemonic_charset[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(args[n], XmNmnemonicCharSet, 
Packit b099d7
				sm->mnemonic_charset[i]); 
Packit b099d7
			n++;
Packit b099d7
		}
Packit b099d7
		
Packit b099d7
		/* Dynamic Defaulting of button type */
Packit b099d7
Packit b099d7
		if (sm->button_type && sm->button_type[i])
Packit b099d7
			btype = sm->button_type[i];
Packit b099d7
		else
Packit b099d7
			btype = XmNONE;
Packit b099d7
Packit b099d7
		if (btype == XmNONE)
Packit b099d7
		{
Packit b099d7
			if (rc->row_column.type == XmMENU_BAR)
Packit b099d7
				btype = XmCASCADEBUTTON;
Packit b099d7
			else
Packit b099d7
				btype = XmPUSHBUTTON;
Packit b099d7
		}
Packit b099d7
		
Packit b099d7
		switch (btype)
Packit b099d7
		{
Packit b099d7
			case XmTITLE:
Packit b099d7
				sprintf(name_buf,"label_%d", label_count++);
Packit b099d7
				child = XtCreateManagedWidget( name_buf,
Packit b099d7
                                     xmLabelGadgetClass, (Widget) rc, args, n);
Packit b099d7
			break;
Packit b099d7
			case XmDOUBLE_SEPARATOR:
Packit b099d7
				XtSetArg(args[n], XmNseparatorType, XmDOUBLE_LINE); n++;
Packit b099d7
			case XmSEPARATOR:
Packit b099d7
				sprintf(name_buf,"separator_%d", separator_count++);
Packit b099d7
				child = XtCreateManagedWidget(name_buf, 
Packit b099d7
                                 xmSeparatorGadgetClass, (Widget) rc, args, n);
Packit b099d7
			break;
Packit b099d7
			case XmPUSHBUTTON:
Packit b099d7
				sprintf(name_buf,"button_%d", button_count++);
Packit b099d7
				child = XtCreateManagedWidget(name_buf, 
Packit b099d7
                                                       xmPushButtonGadgetClass,
Packit b099d7
                                                         (Widget) rc, args, n);
Packit b099d7
				if (sm->callback)
Packit b099d7
					XtAddCallback(child,
Packit b099d7
                                             XmNactivateCallback, sm->callback,
Packit b099d7
                                               (XtPointer)(unsigned long)(button_count - 1));
Packit b099d7
			break;
Packit b099d7
			case XmRADIOBUTTON:
Packit b099d7
				XtSetArg(args[n], XmNindicatorType, XmONE_OF_MANY); n++;
Packit b099d7
			case XmCHECKBUTTON:
Packit b099d7
				sprintf(name_buf,"button_%d", button_count++);
Packit b099d7
				XtSetArg(args[n], XmNindicatorOn, TRUE); n++;
Packit b099d7
				child = XtCreateManagedWidget(name_buf,
Packit b099d7
                                                     xmToggleButtonGadgetClass,
Packit b099d7
                                                         (Widget) rc, args, n);
Packit b099d7
				if (sm->callback)
Packit b099d7
					XtAddCallback(child,
Packit b099d7
                                         XmNvalueChangedCallback, sm->callback,
Packit b099d7
                                               (XtPointer)(unsigned long)(button_count - 1));
Packit b099d7
			break;
Packit b099d7
			case XmCASCADEBUTTON:
Packit b099d7
				sprintf(name_buf,"button_%d", button_count++);
Packit b099d7
				child = XtCreateManagedWidget(name_buf,
Packit b099d7
                                                    xmCascadeButtonGadgetClass,
Packit b099d7
                                                         (Widget) rc, args, n);
Packit b099d7
				if (sm->callback)
Packit b099d7
					XtAddCallback(child,
Packit b099d7
                                             XmNactivateCallback, sm->callback,
Packit b099d7
                                               (XtPointer)(unsigned long)(button_count - 1));
Packit b099d7
			break;
Packit b099d7
			default:
Packit b099d7
				/* this is an error condition */
Packit b099d7
				;
Packit b099d7
			break;
Packit b099d7
		}
Packit b099d7
	}
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimpleMenuBar(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Widget rc;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	_XmWidgetToAppContext(parent);
Packit b099d7
Packit b099d7
	_XmAppLock(app);
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimpleMenuBar,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
Packit b099d7
	rc = XmCreateMenuBar(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	EvaluateConvenienceStructure( rc, &mr;;
Packit b099d7
Packit b099d7
	_XmAppUnlock(app);
Packit b099d7
	return(rc);
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimplePopupMenu(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Widget rc;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	_XmWidgetToAppContext(parent);
Packit b099d7
Packit b099d7
	_XmAppLock(app);
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimplePopupMenu,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
Packit b099d7
	rc = XmCreatePopupMenu(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	EvaluateConvenienceStructure( rc, &mr;;
Packit b099d7
Packit b099d7
	_XmAppUnlock(app);
Packit b099d7
	return(rc);
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimplePulldownMenu(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Widget rc;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	int n, i;
Packit b099d7
	Arg local_args[3];
Packit b099d7
	WidgetList buttons;
Packit b099d7
	Cardinal num_buttons;
Packit b099d7
Packit b099d7
	_XmWidgetToAppContext(parent);
Packit b099d7
	_XmAppLock(app);
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimplePulldownMenu,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
	
Packit b099d7
	rc = XmCreatePulldownMenu(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	EvaluateConvenienceStructure(rc, &mr;;
Packit b099d7
Packit b099d7
	if (mr.post_from_button >= 0)
Packit b099d7
	{
Packit b099d7
		n = 0;
Packit b099d7
		XtSetArg(local_args[n], XtNchildren, &buttons); n++;
Packit b099d7
		XtSetArg(local_args[n], XtNnumChildren, &num_buttons); n++;
Packit b099d7
		XtGetValues(parent, local_args, n);
Packit b099d7
Packit b099d7
		if (!num_buttons)
Packit b099d7
		{
Packit b099d7
			/* error condition */
Packit b099d7
			_XmAppUnlock(app);
Packit b099d7
			return(rc);
Packit b099d7
		}
Packit b099d7
		else
Packit b099d7
		{
Packit b099d7
			for (i = 0; i < num_buttons; i++)
Packit b099d7
			{
Packit b099d7
				if (((XmIsCascadeButtonGadget(buttons[i])) ||
Packit b099d7
					(XmIsCascadeButton(buttons[i])))
Packit b099d7
					&&
Packit b099d7
					(i == mr.post_from_button))
Packit b099d7
					break;
Packit b099d7
			}
Packit b099d7
Packit b099d7
			if ( i < num_buttons)
Packit b099d7
			{
Packit b099d7
				n = 0;
Packit b099d7
				XtSetArg(local_args[n], XmNsubMenuId, rc); n++;
Packit b099d7
				XtSetValues(buttons[i], local_args, n);
Packit b099d7
			}
Packit b099d7
		}
Packit b099d7
	}
Packit b099d7
	_XmAppUnlock(app);
Packit b099d7
	return(rc);
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimpleOptionMenu(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Widget rc, sub_rc;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	int n, i, button_count;
Packit b099d7
	Arg local_args[5];
Packit b099d7
	WidgetList buttons;
Packit b099d7
	Cardinal num_buttons;
Packit b099d7
	_XmWidgetToAppContext(parent);
Packit b099d7
Packit b099d7
	_XmAppLock(app);
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimpleOptionMenu,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
	
Packit b099d7
	rc = XmCreateOptionMenu(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	sub_rc = XmCreatePulldownMenu(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	EvaluateConvenienceStructure(sub_rc, &mr;;
Packit b099d7
Packit b099d7
	n = 0;
Packit b099d7
	if (mr.option_label)
Packit b099d7
	{
Packit b099d7
		XtSetArg(local_args[n], XmNlabelString, mr.option_label); n++;
Packit b099d7
	}
Packit b099d7
	if (mr.option_mnemonic)
Packit b099d7
	{
Packit b099d7
		XtSetArg(local_args[n], XmNmnemonic, mr.option_mnemonic); n++;
Packit b099d7
	}
Packit b099d7
	
Packit b099d7
	XtSetArg(local_args[n], XmNsubMenuId, sub_rc); n++;
Packit b099d7
	XtSetValues(rc, local_args, n);
Packit b099d7
Packit b099d7
	if (mr.button_set >= 0)
Packit b099d7
	{
Packit b099d7
		n = 0;
Packit b099d7
		XtSetArg(local_args[n], XtNchildren, &buttons); n++;
Packit b099d7
		XtSetArg(local_args[n], XtNnumChildren, &num_buttons); n++;
Packit b099d7
		XtGetValues(sub_rc, local_args, n);
Packit b099d7
Packit b099d7
		if (!num_buttons)
Packit b099d7
		{
Packit b099d7
			/* error condition */
Packit b099d7
			_XmAppUnlock(app);
Packit b099d7
			return(rc);
Packit b099d7
		}
Packit b099d7
		else
Packit b099d7
		{
Packit b099d7
			button_count = 0;
Packit b099d7
			for (i = 0; i < num_buttons; i++)
Packit b099d7
			{				/* count only PushB */
Packit b099d7
				if ((XmIsPushButtonGadget(buttons[i])) ||
Packit b099d7
					(XmIsPushButton(buttons[i])))
Packit b099d7
				{
Packit b099d7
					if (button_count == mr.button_set)
Packit b099d7
						break;
Packit b099d7
					button_count++;
Packit b099d7
				}
Packit b099d7
			}
Packit b099d7
Packit b099d7
			if ( i < num_buttons)
Packit b099d7
			{
Packit b099d7
				n = 0;
Packit b099d7
				XtSetArg(local_args[n], XmNmenuHistory, buttons[i]); n++;
Packit b099d7
				XtSetValues(rc, local_args, n);
Packit b099d7
			}
Packit b099d7
		}
Packit b099d7
	}
Packit b099d7
Packit b099d7
	_XmAppUnlock(app);
Packit b099d7
	return(rc);
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimpleRadioBox(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Arg local_args[5];
Packit b099d7
	Widget rc, child;
Packit b099d7
	int i, n;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	char name_buf[20];
Packit b099d7
Packit b099d7
	rc = XmCreateRadioBox(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimpleRadioBox,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
Packit b099d7
	for(i=0; i < mr.count; i++)
Packit b099d7
	{
Packit b099d7
		sprintf(name_buf,"button_%d", i);
Packit b099d7
Packit b099d7
		n = 0;
Packit b099d7
		if (mr.label_string && mr.label_string[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(local_args[n], 
Packit b099d7
				XmNlabelString, mr.label_string[i]); n++;
Packit b099d7
		}
Packit b099d7
		if (mr.button_set == i)
Packit b099d7
		{
Packit b099d7
			XtSetArg(local_args[n], XmNset, TRUE); n++;
Packit b099d7
		}
Packit b099d7
		child = XtCreateManagedWidget(name_buf, 
Packit b099d7
			xmToggleButtonGadgetClass, (Widget) rc, local_args, n);
Packit b099d7
		if (mr.callback)
Packit b099d7
			XtAddCallback(child, XmNvalueChangedCallback,
Packit b099d7
				mr.callback, (XtPointer)(unsigned long)i);
Packit b099d7
	}
Packit b099d7
	
Packit b099d7
	return(rc);
Packit b099d7
}
Packit b099d7
Packit b099d7
Widget 
Packit b099d7
XmCreateSimpleCheckBox(
Packit b099d7
        Widget parent,
Packit b099d7
        String name,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal arg_count )
Packit b099d7
{
Packit b099d7
	Arg local_args[5];
Packit b099d7
	Widget rc, child;
Packit b099d7
	int i, n;
Packit b099d7
	XmSimpleMenuRec mr;
Packit b099d7
	char name_buf[20];
Packit b099d7
Packit b099d7
Packit b099d7
	rc = XmCreateRadioBox(parent, name, args, arg_count);
Packit b099d7
Packit b099d7
	n = 0;
Packit b099d7
        XtSetArg(local_args[n], XmNradioBehavior, FALSE); n++;
Packit b099d7
Packit b099d7
	XtSetValues(rc, local_args, n);
Packit b099d7
	
Packit b099d7
Packit b099d7
	XtGetSubresources(parent, &mr, name, XmCSimpleCheckBox,
Packit b099d7
		SimpleMenuResources, XtNumber(SimpleMenuResources), 
Packit b099d7
		args, arg_count);
Packit b099d7
Packit b099d7
	for(i=0; i < mr.count; i++)
Packit b099d7
	{
Packit b099d7
		sprintf(name_buf,"button_%d", i);
Packit b099d7
Packit b099d7
		n = 0;
Packit b099d7
		if (mr.label_string && mr.label_string[i])
Packit b099d7
		{
Packit b099d7
			XtSetArg(local_args[n], 
Packit b099d7
				XmNlabelString, mr.label_string[i]); n++;
Packit b099d7
		}
Packit b099d7
		child = XtCreateManagedWidget(name_buf,
Packit b099d7
			xmToggleButtonGadgetClass, (Widget) rc, local_args, n);
Packit b099d7
		if (mr.callback)
Packit b099d7
			XtAddCallback(child, XmNvalueChangedCallback,
Packit b099d7
				mr.callback, (XtPointer)(unsigned long)i);
Packit b099d7
	}
Packit b099d7
Packit b099d7
	return(rc);
Packit b099d7
}