+/*
+ * Creates a XmToggleButton menu item
+ */
+static Widget createToggleMenuItem(
+ Widget menu,
+ char *name,
+ char *label,
+ char mnemonic,
+ Boolean defaultValue,
+ const char *accelerator,
+ char *accelerator_text,
+ XtCallbackProc callback,
+ void *cbData)
+{
+ Arg args[16];
+ int n = 0;
+
+ XmString s1 = XmStringCreateSimple(label);
+ XtSetArg(args[n], XmNlabelString, s1); n++;
+ XtSetArg(args[n], XmNmnemonic, mnemonic); n++;
+ XtSetArg(args[n], XmNset, defaultValue); n++;
+ XmString at = NULL;
+ if(accelerator && accelerator_text) {
+ at = XmStringCreateSimple(accelerator_text);
+ XtSetArg(args[n], XmNaccelerator, accelerator); n++;
+ XtSetArg(args[n], XmNacceleratorText, at); n++;
+ }
+
+ Widget menuItem = XmCreateToggleButtonGadget(menu, name, args, n);
+ XtManageChild(menuItem);
+ XmStringFree(s1);
+ if(at) XmStringFree(at);
+
+ if(callback) {
+ XtAddCallback(menuItem, XmNvalueChangedCallback, (XtCallbackProc)callback, cbData);
+ }
+
+ return menuItem;
+}
+