Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/i386/config/dialog.h

Source at commit 1808 created 12 years 3 months ago.
By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier?
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#include <stdbool.h>
28
29#ifndef KBUILD_NO_NLS
30# include <libintl.h>
31#else
32# define gettext(Msgid) ((const char *) (Msgid))
33#endif
34
35#ifdef __sun__
36#define CURS_MACROS
37#endif
38#include CURSES_LOC
39
40/*
41 * Colors in ncurses 1.9.9e do not work properly since foreground and
42 * background colors are OR'd rather than separately masked. This version
43 * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
44 * with standard curses. The simplest fix (to make this work with standard
45 * curses) uses the wbkgdset() function, not used in the original hack.
46 * Turn it off if we're building with 1.9.9e, since it just confuses things.
47 */
48#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
49#define OLD_NCURSES 1
50#undef wbkgdset
51#define wbkgdset(w,p)/*nothing */
52#else
53#define OLD_NCURSES 0
54#endif
55
56#define TR(params) _tracef params
57
58#define KEY_ESC 27
59#define TAB 9
60#define MAX_LEN 2048
61#define BUF_SIZE (10*1024)
62#define MIN(x,y) (x < y ? x : y)
63#define MAX(x,y) (x > y ? x : y)
64
65#ifndef ACS_ULCORNER
66#define ACS_ULCORNER '+'
67#endif
68#ifndef ACS_LLCORNER
69#define ACS_LLCORNER '+'
70#endif
71#ifndef ACS_URCORNER
72#define ACS_URCORNER '+'
73#endif
74#ifndef ACS_LRCORNER
75#define ACS_LRCORNER '+'
76#endif
77#ifndef ACS_HLINE
78#define ACS_HLINE '-'
79#endif
80#ifndef ACS_VLINE
81#define ACS_VLINE '|'
82#endif
83#ifndef ACS_LTEE
84#define ACS_LTEE '+'
85#endif
86#ifndef ACS_RTEE
87#define ACS_RTEE '+'
88#endif
89#ifndef ACS_UARROW
90#define ACS_UARROW '^'
91#endif
92#ifndef ACS_DARROW
93#define ACS_DARROW 'v'
94#endif
95
96/* error return codes */
97#define ERRDISPLAYTOOSMALL (KEY_MAX + 1)
98
99/*
100 * Color definitions
101 */
102struct dialog_color {
103chtype atr;/* Color attribute */
104int fg;/* foreground */
105int bg;/* background */
106int hl;/* highlight this item */
107};
108
109struct dialog_info {
110const char *backtitle;
111struct dialog_color screen;
112struct dialog_color shadow;
113struct dialog_color dialog;
114struct dialog_color title;
115struct dialog_color border;
116struct dialog_color button_active;
117struct dialog_color button_inactive;
118struct dialog_color button_key_active;
119struct dialog_color button_key_inactive;
120struct dialog_color button_label_active;
121struct dialog_color button_label_inactive;
122struct dialog_color inputbox;
123struct dialog_color inputbox_border;
124struct dialog_color searchbox;
125struct dialog_color searchbox_title;
126struct dialog_color searchbox_border;
127struct dialog_color position_indicator;
128struct dialog_color menubox;
129struct dialog_color menubox_border;
130struct dialog_color item;
131struct dialog_color item_selected;
132struct dialog_color tag;
133struct dialog_color tag_selected;
134struct dialog_color tag_key;
135struct dialog_color tag_key_selected;
136struct dialog_color check;
137struct dialog_color check_selected;
138struct dialog_color uarrow;
139struct dialog_color darrow;
140};
141
142/*
143 * Global variables
144 */
145extern struct dialog_info dlg;
146extern char dialog_input_result[];
147
148/*
149 * Function prototypes
150 */
151
152/* item list as used by checklist and menubox */
153void item_reset(void);
154void item_make(const char *fmt, ...);
155void item_add_str(const char *fmt, ...);
156void item_set_tag(char tag);
157void item_set_data(void *p);
158void item_set_selected(int val);
159int item_activate_selected(void);
160void *item_data(void);
161char item_tag(void);
162
163/* item list manipulation for lxdialog use */
164#define MAXITEMSTR 200
165struct dialog_item {
166char str[MAXITEMSTR];/* promtp displayed */
167char tag;
168void *data;/* pointer to menu item - used by menubox+checklist */
169int selected;/* Set to 1 by dialog_*() function if selected. */
170};
171
172/* list of lialog_items */
173struct dialog_list {
174struct dialog_item node;
175struct dialog_list *next;
176};
177
178extern struct dialog_list *item_cur;
179extern struct dialog_list item_nil;
180extern struct dialog_list *item_head;
181
182int item_count(void);
183void item_set(int n);
184int item_n(void);
185const char *item_str(void);
186int item_is_selected(void);
187int item_is_tag(char tag);
188#define item_foreach() \
189for (item_cur = item_head ? item_head: item_cur; \
190 item_cur && (item_cur != &item_nil); item_cur = item_cur->next)
191
192/* generic key handlers */
193int on_key_esc(WINDOW *win);
194int on_key_resize(void);
195
196int init_dialog(const char *backtitle);
197void set_dialog_backtitle(const char *backtitle);
198void end_dialog(int x, int y);
199void attr_clear(WINDOW * win, int height, int width, chtype attr);
200void dialog_clear(void);
201void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
202void print_button(WINDOW * win, const char *label, int y, int x, int selected);
203void print_title(WINDOW *dialog, const char *title, int width);
204void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
205 chtype border);
206void draw_shadow(WINDOW * win, int y, int x, int height, int width);
207
208int first_alpha(const char *string, const char *exempt);
209int dialog_yesno(const char *title, const char *prompt, int height, int width);
210int dialog_msgbox(const char *title, const char *prompt, int height,
211 int width, int pause);
212int dialog_textbox(const char *title, const char *file, int height, int width);
213int dialog_menu(const char *title, const char *prompt,
214const void *selected, int *s_scroll);
215int dialog_checklist(const char *title, const char *prompt, int height,
216 int width, int list_height);
217extern char dialog_input_result[];
218int dialog_inputbox(const char *title, const char *prompt, int height,
219 int width, const char *init);
220
221/*
222 * This is the base for fictitious keys, which activate
223 * the buttons.
224 *
225 * Mouse-generated keys are the following:
226 * -- the first 32 are used as numbers, in addition to '0'-'9'
227 * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
228 * -- uppercase chars are used to invoke the button (M_EVENT + 'O')
229 */
230#define M_EVENT (KEY_MAX+1)
231

Archive Download this file

Revision: 1808