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