|
|
1.1 ! root 1: /* $Header: popup.c,v 1.1 87/09/11 08:18:25 toddb Exp $ */ ! 2: /* popup.c -- Handle pop-up windows. */ ! 3: ! 4: #include "xmh.h" ! 5: ! 6: /* ! 7: static Window confirmwindow = NULL; ! 8: static char *confirmstring; ! 9: ! 10: static Window confirmparent; ! 11: static count = 0; ! 12: ! 13: static Window promptwindow; ! 14: static int (*promptfunc)(); ! 15: static char promptstring[210]; ! 16: ! 17: extern TellPrompt(); ! 18: extern DestroyPromptWindow(); ! 19: ! 20: ArgList arglist, promptarglist; ! 21: */ ! 22: ! 23: /* ! 24: InitPopup() ! 25: { ! 26: } ! 27: */ ! 28: ! 29: static Scrn lastscrn = NULL; ! 30: static char laststr[500]; ! 31: ! 32: static Window confirmwindow = NULL; ! 33: static int buttoncount = 0; ! 34: static Window promptwindow = NULL; ! 35: static void (*promptfunction)(); ! 36: ! 37: void CenterWindow(parent, child) ! 38: Window parent, child; ! 39: { ! 40: int x, y, parentwidth, parentheight, childwidth, childheight; ! 41: GetWindowSize(parent, &parentwidth, &parentheight); ! 42: GetWindowSize(child, &childwidth, &childheight); ! 43: x = (parentwidth - childwidth) / 2; ! 44: y = (parentheight - childheight) / 2; ! 45: if (x < 0) x = 0; ! 46: QXMoveWindow(theDisplay, child, x, y); ! 47: } ! 48: ! 49: ! 50: int Confirm(scrn, str) ! 51: Scrn scrn; ! 52: char *str; ! 53: { ! 54: static Arg arglist[] = { ! 55: {XtNname, (XtArgVal)"confirm"} ! 56: }; ! 57: extern void RedoLastButton(); ! 58: if (lastscrn == scrn && strcmp(str, laststr) == 0) { ! 59: DestroyConfirmWindow(); ! 60: return TRUE; ! 61: } ! 62: DestroyConfirmWindow(); ! 63: lastscrn = scrn; ! 64: scrn = LastButtonScreen(); ! 65: (void) strcpy(laststr, str); ! 66: confirmwindow = XtDialogCreate(DISPLAY scrn->window, str, (char *)NULL, ! 67: arglist, XtNumber(arglist)); ! 68: XtDialogAddButton(DISPLAY confirmwindow, ! 69: "yes", RedoLastButton, (caddr_t)NULL); ! 70: XtDialogAddButton(DISPLAY confirmwindow, ! 71: "no", DestroyConfirmWindow, (caddr_t)NULL); ! 72: CenterWindow(scrn->window, confirmwindow); ! 73: QXMapWindow(theDisplay, confirmwindow); ! 74: buttoncount = 0; ! 75: return FALSE; ! 76: } ! 77: ! 78: ! 79: DestroyConfirmWindow() ! 80: { ! 81: lastscrn = NULL; ! 82: *laststr = 0; ! 83: if (confirmwindow) { ! 84: QXDestroyWindow(theDisplay, confirmwindow); ! 85: (void) XtSendDestroyNotify(DISPLAY confirmwindow); ! 86: confirmwindow = NULL; ! 87: } ! 88: } ! 89: ! 90: ! 91: HandleConfirmEvent(event) ! 92: XEvent *event; ! 93: { ! 94: if (confirmwindow && ! 95: (event->type == ButtonRelease || event->type == KeyPress)) { ! 96: if (++buttoncount > 1) ! 97: DestroyConfirmWindow(); ! 98: } ! 99: } ! 100: ! 101: ! 102: DestroyPromptWindow() ! 103: { ! 104: if (promptwindow) { ! 105: (void) XtSendDestroyNotify(DISPLAY promptwindow); ! 106: QXDestroyWindow(theDisplay, promptwindow); ! 107: promptwindow = NULL; ! 108: } ! 109: } ! 110: ! 111: ! 112: TellPrompt() ! 113: { ! 114: (*promptfunction)(XtDialogGetValueString(DISPLAY promptwindow)); ! 115: DestroyPromptWindow(); ! 116: } ! 117: ! 118: MakePrompt(scrn, prompt, func) ! 119: Scrn scrn; ! 120: char *prompt; ! 121: void (*func)(); ! 122: { ! 123: static Arg arglist[] = { ! 124: {XtNname, (XtArgVal)"prompt"} ! 125: }; ! 126: DestroyPromptWindow(); ! 127: promptwindow = XtDialogCreate(DISPLAY scrn->window, prompt, "", ! 128: arglist, XtNumber(arglist)); ! 129: XtDialogAddButton(DISPLAY promptwindow, ! 130: "goAhead", TellPrompt, (caddr_t)NULL); ! 131: XtDialogAddButton(DISPLAY promptwindow, ! 132: "cancel", DestroyPromptWindow, ! 133: (caddr_t)NULL); ! 134: CenterWindow(scrn->window, promptwindow); ! 135: QXMapWindow(theDisplay, promptwindow); ! 136: promptfunction = func; ! 137: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.