OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [scripts/] [kconfig/] [lxdialog/] [dialog.h] - Blame information for rev 62

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.