File: /usr/src/linux/scripts/lxdialog/dialog.h

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