Annotation of qemu/roms/seabios/tools/kconfig/lxdialog/dialog.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *  dialog.h -- common declarations for all dialog modules
                      3:  *
                      4:  *  AUTHOR: Savio Lam ([email protected])
                      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:  */
                    102: struct dialog_color {
                    103:        chtype atr;     /* Color attribute */
                    104:        int fg;         /* foreground */
                    105:        int bg;         /* background */
                    106:        int hl;         /* highlight this item */
                    107: };
                    108: 
                    109: struct dialog_info {
                    110:        const char *backtitle;
                    111:        struct dialog_color screen;
                    112:        struct dialog_color shadow;
                    113:        struct dialog_color dialog;
                    114:        struct dialog_color title;
                    115:        struct dialog_color border;
                    116:        struct dialog_color button_active;
                    117:        struct dialog_color button_inactive;
                    118:        struct dialog_color button_key_active;
                    119:        struct dialog_color button_key_inactive;
                    120:        struct dialog_color button_label_active;
                    121:        struct dialog_color button_label_inactive;
                    122:        struct dialog_color inputbox;
                    123:        struct dialog_color inputbox_border;
                    124:        struct dialog_color searchbox;
                    125:        struct dialog_color searchbox_title;
                    126:        struct dialog_color searchbox_border;
                    127:        struct dialog_color position_indicator;
                    128:        struct dialog_color menubox;
                    129:        struct dialog_color menubox_border;
                    130:        struct dialog_color item;
                    131:        struct dialog_color item_selected;
                    132:        struct dialog_color tag;
                    133:        struct dialog_color tag_selected;
                    134:        struct dialog_color tag_key;
                    135:        struct dialog_color tag_key_selected;
                    136:        struct dialog_color check;
                    137:        struct dialog_color check_selected;
                    138:        struct dialog_color uarrow;
                    139:        struct dialog_color darrow;
                    140: };
                    141: 
                    142: /*
                    143:  * Global variables
                    144:  */
                    145: extern struct dialog_info dlg;
                    146: extern char dialog_input_result[];
                    147: 
                    148: /*
                    149:  * Function prototypes
                    150:  */
                    151: 
                    152: /* item list as used by checklist and menubox */
                    153: void item_reset(void);
                    154: void item_make(const char *fmt, ...);
                    155: void item_add_str(const char *fmt, ...);
                    156: void item_set_tag(char tag);
                    157: void item_set_data(void *p);
                    158: void item_set_selected(int val);
                    159: int item_activate_selected(void);
                    160: void *item_data(void);
                    161: char item_tag(void);
                    162: 
                    163: /* item list manipulation for lxdialog use */
                    164: #define MAXITEMSTR 200
                    165: struct dialog_item {
                    166:        char str[MAXITEMSTR];   /* promtp displayed */
                    167:        char tag;
                    168:        void *data;     /* pointer to menu item - used by menubox+checklist */
                    169:        int selected;   /* Set to 1 by dialog_*() function if selected. */
                    170: };
                    171: 
                    172: /* list of lialog_items */
                    173: struct dialog_list {
                    174:        struct dialog_item node;
                    175:        struct dialog_list *next;
                    176: };
                    177: 
                    178: extern struct dialog_list *item_cur;
                    179: extern struct dialog_list item_nil;
                    180: extern struct dialog_list *item_head;
                    181: 
                    182: int item_count(void);
                    183: void item_set(int n);
                    184: int item_n(void);
                    185: const char *item_str(void);
                    186: int item_is_selected(void);
                    187: int item_is_tag(char tag);
                    188: #define item_foreach() \
                    189:        for (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 */
                    193: int on_key_esc(WINDOW *win);
                    194: int on_key_resize(void);
                    195: 
                    196: int init_dialog(const char *backtitle);
                    197: void set_dialog_backtitle(const char *backtitle);
                    198: void end_dialog(int x, int y);
                    199: void attr_clear(WINDOW * win, int height, int width, chtype attr);
                    200: void dialog_clear(void);
                    201: void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
                    202: void print_button(WINDOW * win, const char *label, int y, int x, int selected);
                    203: void print_title(WINDOW *dialog, const char *title, int width);
                    204: void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
                    205:              chtype border);
                    206: void draw_shadow(WINDOW * win, int y, int x, int height, int width);
                    207: 
                    208: int first_alpha(const char *string, const char *exempt);
                    209: int dialog_yesno(const char *title, const char *prompt, int height, int width);
                    210: int dialog_msgbox(const char *title, const char *prompt, int height,
                    211:                  int width, int pause);
                    212: int dialog_textbox(const char *title, const char *file, int height, int width);
                    213: int dialog_menu(const char *title, const char *prompt,
                    214:                const void *selected, int *s_scroll);
                    215: int dialog_checklist(const char *title, const char *prompt, int height,
                    216:                     int width, int list_height);
                    217: extern char dialog_input_result[];
                    218: int 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)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.