#include "univ.h" #include #include struct confirmdata { Protocol p; long l; PadObj *pobject; PadObj *object; }; static void ConfirmPopDownCB(w, client_data, call_data) Widget w; XtPointer client_data; XtPointer call_data; { XtDestroyWidget(w); } static void ConfirmSelectCB(w, cd, call_data) Widget w; struct confirmdata *cd; XtPointer call_data; { ToHost(cd->p, cd->l, cd->pobject, cd->object); } Confirm(w, label, proto, l, pobject, object) Widget w; char *label; Protocol proto; long l; PadObj *pobject, *object; { Widget confirm; Widget control; Widget yes; char buffer[256]; static struct confirmdata cd; cd.p = proto; cd.l = l; cd.pobject = pobject; cd.object = object; sprintf(buffer, "Are you sure you want to %s?", label); confirm = XtVaCreatePopupShell("Confirm", noticeShellWidgetClass, w, XtNvPad, 10, XtNstring, buffer, NULL); XtAddCallback(confirm, XtNpopdownCallback, ConfirmPopDownCB, NULL); XtVaGetValues(confirm, XtNcontrolArea, &control, NULL); yes = XtVaCreateManagedWidget("Yes", oblongButtonWidgetClass, control, XtNdefault, TRUE, NULL); XtAddCallback(yes, XtNselect, ConfirmSelectCB, (XtPointer)&cd); XtVaCreateManagedWidget("No", oblongButtonWidgetClass, control, NULL); XtPopup(confirm, XtGrabNone); }