1 /* Yes/No window
2
3 * Copyright (C) 1998 J.A. Bezemer
4 *
5 * Licensed under the terms of the GNU General Public License.
6 * ABSOLUTELY NO WARRANTY.
7 * See the file `COPYING' in this directory.
8 */
9
10 #include "yesnowindow.h"
11 #include "buttons.h"
12 #include "boxes.h"
13 #include "textwindow.h"
14 #include <string.h>
15 #ifndef OLD_CURSES
16 #include <ncurses.h>
17 #else
18 #include <curses.h>
19 #endif
20
21
22 int
yesno_window(char * text,char * yestext,char * notext,int preselected)23 yesno_window (char *text, char *yestext, char *notext, int preselected)
24 /* returns 1 if yes-button selected,
25 0 if no-button selected or Escape pressed */
26 {
27 button_t yes_button, no_button;
28 int i;
29 int focus;
30
31 yes_button.text = yestext;
32 yes_button.y = YESNO_WINDOW_Y + YESNO_WINDOW_H - 1;
33 yes_button.x = YESNO_WINDOW_X + YESNO_WINDOW_W
34 - 1 - strlen (yes_button.text);
35 yes_button.selected = FALSE;
36
37 no_button.text = notext;
38 no_button.y = YESNO_WINDOW_Y + YESNO_WINDOW_H - 1;
39 no_button.x = YESNO_WINDOW_X + 1;
40 no_button.selected = FALSE;
41
42 mybox (YESNO_WINDOW_Y - 1, YESNO_WINDOW_X - 1,
43 YESNO_WINDOW_H + 2, YESNO_WINDOW_W + 2);
44 display_textwin ("", YESNO_WINDOW_Y, YESNO_WINDOW_X,
45 YESNO_WINDOW_H, YESNO_WINDOW_W);
46 display_textwin (text, YESNO_WINDOW_Y, YESNO_WINDOW_X + 1,
47 YESNO_WINDOW_H, YESNO_WINDOW_W - 2);
48
49 focus = preselected;
50
51 do
52 {
53 yes_button.selected = FALSE;
54 no_button.selected = FALSE;
55 if (focus == 0)
56 no_button.selected = TRUE;
57 if (focus == 1)
58 yes_button.selected = TRUE;
59
60 button_display (&yes_button);
61 button_display (&no_button);
62
63 move (0, 79);
64 refresh ();
65
66 do
67 i = getch ();
68 while (i != 13 && i != KEY_ENTER && i != 27 && i != KEY_LEFT
69 && i != KEY_RIGHT && i != 9);
70
71 switch (i)
72 {
73 case KEY_LEFT:
74 focus = 0;
75 break;
76
77 case KEY_RIGHT:
78 focus = 1;
79 break;
80
81 case 9:
82 focus = 1 - focus;
83 break;
84 }
85
86 }
87 while (i != 13 && i != KEY_ENTER && i != 27);
88
89 clear ();
90 refresh ();
91
92 if (i == 27)
93 return 0;
94 else
95 return focus;
96 }
97