Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Ported palacios to Kbuild
[palacios.git] / scripts / kconfig / lxdialog / dialog.h
1 /*
2  *  dialog.h -- common declarations for all dialog modules
3  *
4  *  AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
5  *
6  *  This program is free software; you can redistribute it and/or
7  *  modify it under the terms of the GNU General Public License
8  *  as published by the Free Software Foundation; either version 2
9  *  of the License, or (at your option) any later version.
10  *
11  *  This program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with this program; if not, write to the Free Software
18  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  */
20
21 #include <sys/types.h>
22 #include <fcntl.h>
23 #include <unistd.h>
24 #include <ctype.h>
25 #include <stdlib.h>
26 #include <string.h>
27
28 #ifdef __sun__
29 #define CURS_MACROS
30 #endif
31 #include CURSES_LOC
32
33 /*
34  * Colors in ncurses 1.9.9e do not work properly since foreground and
35  * background colors are OR'd rather than separately masked.  This version
36  * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
37  * with standard curses.  The simplest fix (to make this work with standard
38  * curses) uses the wbkgdset() function, not used in the original hack.
39  * Turn it off if we're building with 1.9.9e, since it just confuses things.
40  */
41 #if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
42 #define OLD_NCURSES 1
43 #undef  wbkgdset
44 #define wbkgdset(w,p)           /*nothing */
45 #else
46 #define OLD_NCURSES 0
47 #endif
48
49 #define TR(params) _tracef params
50
51 #define ESC 27
52 #define TAB 9
53 #define MAX_LEN 2048
54 #define BUF_SIZE (10*1024)
55 #define MIN(x,y) (x < y ? x : y)
56 #define MAX(x,y) (x > y ? x : y)
57
58 #ifndef ACS_ULCORNER
59 #define ACS_ULCORNER '+'
60 #endif
61 #ifndef ACS_LLCORNER
62 #define ACS_LLCORNER '+'
63 #endif
64 #ifndef ACS_URCORNER
65 #define ACS_URCORNER '+'
66 #endif
67 #ifndef ACS_LRCORNER
68 #define ACS_LRCORNER '+'
69 #endif
70 #ifndef ACS_HLINE
71 #define ACS_HLINE '-'
72 #endif
73 #ifndef ACS_VLINE
74 #define ACS_VLINE '|'
75 #endif
76 #ifndef ACS_LTEE
77 #define ACS_LTEE '+'
78 #endif
79 #ifndef ACS_RTEE
80 #define ACS_RTEE '+'
81 #endif
82 #ifndef ACS_UARROW
83 #define ACS_UARROW '^'
84 #endif
85 #ifndef ACS_DARROW
86 #define ACS_DARROW 'v'
87 #endif
88
89 /*
90  * Attribute names
91  */
92 #define screen_attr                   attributes[0]
93 #define shadow_attr                   attributes[1]
94 #define dialog_attr                   attributes[2]
95 #define title_attr                    attributes[3]
96 #define border_attr                   attributes[4]
97 #define button_active_attr            attributes[5]
98 #define button_inactive_attr          attributes[6]
99 #define button_key_active_attr        attributes[7]
100 #define button_key_inactive_attr      attributes[8]
101 #define button_label_active_attr      attributes[9]
102 #define button_label_inactive_attr    attributes[10]
103 #define inputbox_attr                 attributes[11]
104 #define inputbox_border_attr          attributes[12]
105 #define searchbox_attr                attributes[13]
106 #define searchbox_title_attr          attributes[14]
107 #define searchbox_border_attr         attributes[15]
108 #define position_indicator_attr       attributes[16]
109 #define menubox_attr                  attributes[17]
110 #define menubox_border_attr           attributes[18]
111 #define item_attr                     attributes[19]
112 #define item_selected_attr            attributes[20]
113 #define tag_attr                      attributes[21]
114 #define tag_selected_attr             attributes[22]
115 #define tag_key_attr                  attributes[23]
116 #define tag_key_selected_attr         attributes[24]
117 #define check_attr                    attributes[25]
118 #define check_selected_attr           attributes[26]
119 #define uarrow_attr                   attributes[27]
120 #define darrow_attr                   attributes[28]
121
122 /* number of attributes */
123 #define ATTRIBUTE_COUNT               29
124
125 /*
126  * Global variables
127  */
128 extern bool use_colors;
129 extern bool use_shadow;
130
131 extern chtype attributes[];
132
133 extern const char *backtitle;
134
135 /*
136  * Function prototypes
137  */
138 extern void create_rc(const char *filename);
139 extern int parse_rc(void);
140
141 void init_dialog(void);
142 void end_dialog(void);
143 void attr_clear(WINDOW * win, int height, int width, chtype attr);
144 void dialog_clear(void);
145 void color_setup(void);
146 void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
147 void print_button(WINDOW * win, const char *label, int y, int x, int selected);
148 void print_title(WINDOW *dialog, const char *title, int width);
149 void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
150               chtype border);
151 void draw_shadow(WINDOW * win, int y, int x, int height, int width);
152
153 int first_alpha(const char *string, const char *exempt);
154 int dialog_yesno(const char *title, const char *prompt, int height, int width);
155 int dialog_msgbox(const char *title, const char *prompt, int height,
156                   int width, int pause);
157 int dialog_textbox(const char *title, const char *file, int height, int width);
158 int dialog_menu(const char *title, const char *prompt, int height, int width,
159                 int menu_height, const char *choice, int item_no,
160                 const char *const *items);
161 int dialog_checklist(const char *title, const char *prompt, int height,
162                      int width, int list_height, int item_no,
163                      const char *const *items);
164 extern char dialog_input_result[];
165 int dialog_inputbox(const char *title, const char *prompt, int height,
166                     int width, const char *init);
167
168 /*
169  * This is the base for fictitious keys, which activate
170  * the buttons.
171  *
172  * Mouse-generated keys are the following:
173  *   -- the first 32 are used as numbers, in addition to '0'-'9'
174  *   -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
175  *   -- uppercase chars are used to invoke the button (M_EVENT + 'O')
176  */
177 #define M_EVENT (KEY_MAX+1)