#include <stdarg.h>
#include <Xm/Xm.h>
#include <Xm/PushBG.h>
#include <Xm/Label.h>
#include <Xm/LabelG.h>
#include <Xm/SeparatoG.h>
#include <Xm/RowColumn.h>


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);
}