#include #include #include #include #include #include #include void AddPopupEntry(Widget parent, char* label, XtCallbackProc cb) { Widget ch; XmString str; Arg args[2]; str = XmStringCreateLocalized(label); XtSetArg(args[0], XmNlabelString, str); ch = XmCreatePushButtonGadget(parent, label, args, 1); XtAddCallback(ch, XmNactivateCallback, cb, (XtPointer)label); XtManageChild(ch); XmStringFree(str); } void AddPopupEntries(Widget popup, char* title, XtCallbackProc callback, ...) { XmString str; Arg args[2]; Widget child; va_list ap; char *label; str = XmStringCreateLocalized(title); XtSetArg(args[0], XmNlabelString, str); child = XmCreateLabelGadget(popup, "Title", args, 1); XtManageChild(child); XmStringFree(str); child = XmCreateSeparatorGadget(popup, "Sep", NULL, 0); XtManageChild(child); va_start(ap, callback); while(label = va_arg(ap, char*)) AddPopupEntry(popup, label, callback); va_end(ap); } .