busybox/scripts/kconfig/lxdialog/dialog.h
<<
>>
Prefs
   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
  28#ifdef __sun__
  29#define CURS_MACROS
  30#endif
  31#include CURSES_LOC
  32
  33/*
  34 * Colors in ncurses 1.9.9e do not work properly since foreground and
  35 * background colors are OR'd rather than separately masked.  This version
  36 * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
  37 * with standard curses.  The simplest fix (to make this work with standard
  38 * curses) uses the wbkgdset() function, not used in the original hack.
  39 * Turn it off if we're building with 1.9.9e, since it just confuses things.
  40 */
  41#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
  42#define OLD_NCURSES 1
  43#undef  wbkgdset
  44#define wbkgdset(w,p)           /*nothing */
  45#else
  46#define OLD_NCURSES 0
  47#endif
  48
  49#define TR(params) _tracef params
  50
  51#define ESC 27
  52#define TAB 9
  53#define MAX_LEN 2048
  54#define BUF_SIZE (10*1024)
  55#define MIN(x,y) (x < y ? x : y)
  56#define MAX(x,y) (x > y ? x : y)
  57
  58#ifndef ACS_ULCORNER
  59#define ACS_ULCORNER '+'
  60#endif
  61#ifndef ACS_LLCORNER
  62#define ACS_LLCORNER '+'
  63#endif
  64#ifndef ACS_URCORNER
  65#define ACS_URCORNER '+'
  66#endif
  67#ifndef ACS_LRCORNER
  68#define ACS_LRCORNER '+'
  69#endif
  70#ifndef ACS_HLINE
  71#define ACS_HLINE '-'
  72#endif
  73#ifndef ACS_VLINE
  74#define ACS_VLINE '|'
  75#endif
  76#ifndef ACS_LTEE
  77#define ACS_LTEE '+'
  78#endif
  79#ifndef ACS_RTEE
  80#define ACS_RTEE '+'
  81#endif
  82#ifndef ACS_UARROW
  83#define ACS_UARROW '^'
  84#endif
  85#ifndef ACS_DARROW
  86#define ACS_DARROW 'v'
  87#endif
  88
  89/*
  90 * Attribute names
  91 */
  92#define screen_attr                   attributes[0]
  93#define shadow_attr                   attributes[1]
  94#define dialog_attr                   attributes[2]
  95#define title_attr                    attributes[3]
  96#define border_attr                   attributes[4]
  97#define button_active_attr            attributes[5]
  98#define button_inactive_attr          attributes[6]
  99#define button_key_active_attr        attributes[7]
 100#define button_key_inactive_attr      attributes[8]
 101#define button_label_active_attr      attributes[9]
 102#define button_label_inactive_attr    attributes[10]
 103#define inputbox_attr                 attributes[11]
 104#define inputbox_border_attr          attributes[12]
 105#define searchbox_attr                attributes[13]
 106#define searchbox_title_attr          attributes[14]
 107#define searchbox_border_attr         attributes[15]
 108#define position_indicator_attr       attributes[16]
 109#define menubox_attr                  attributes[17]
 110#define menubox_border_attr           attributes[18]
 111#define item_attr                     attributes[19]
 112#define item_selected_attr            attributes[20]
 113#define tag_attr                      attributes[21]
 114#define tag_selected_attr             attributes[22]
 115#define tag_key_attr                  attributes[23]
 116#define tag_key_selected_attr         attributes[24]
 117#define check_attr                    attributes[25]
 118#define check_selected_attr           attributes[26]
 119#define uarrow_attr                   attributes[27]
 120#define darrow_attr                   attributes[28]
 121
 122/* number of attributes */
 123#define ATTRIBUTE_COUNT               29
 124
 125/*
 126 * Global variables
 127 */
 128extern bool use_colors;
 129extern bool use_shadow;
 130
 131extern chtype attributes[];
 132
 133extern const char *backtitle;
 134
 135/*
 136 * Function prototypes
 137 */
 138extern void create_rc(const char *filename);
 139extern int parse_rc(void);
 140
 141void init_dialog(void);
 142void end_dialog(void);
 143void attr_clear(WINDOW * win, int height, int width, chtype attr);
 144void dialog_clear(void);
 145void color_setup(void);
 146void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
 147void print_button(WINDOW * win, const char *label, int y, int x, int selected);
 148void print_title(WINDOW *dialog, const char *title, int width);
 149void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
 150              chtype border);
 151void draw_shadow(WINDOW * win, int y, int x, int height, int width);
 152
 153int first_alpha(const char *string, const char *exempt);
 154int dialog_yesno(const char *title, const char *prompt, int height, int width);
 155int dialog_msgbox(const char *title, const char *prompt, int height,
 156                  int width, int pause);
 157int dialog_textbox(const char *title, const char *file, int height, int width);
 158int dialog_menu(const char *title, const char *prompt, int height, int width,
 159                int menu_height, const char *choice, int item_no,
 160                const char *const *items);
 161int dialog_checklist(const char *title, const char *prompt, int height,
 162                     int width, int list_height, int item_no,
 163                     const char *const *items);
 164extern char dialog_input_result[];
 165int dialog_inputbox(const char *title, const char *prompt, int height,
 166                    int width, const char *init);
 167
 168/*
 169 * This is the base for fictitious keys, which activate
 170 * the buttons.
 171 *
 172 * Mouse-generated keys are the following:
 173 *   -- the first 32 are used as numbers, in addition to '0'-'9'
 174 *   -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
 175 *   -- uppercase chars are used to invoke the button (M_EVENT + 'O')
 176 */
 177#define M_EVENT (KEY_MAX+1)
 178