Annotation of qemu/roms/seabios/tools/kconfig/lxdialog/dialog.h, revision 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.