|
|
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.