mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	kconfig/lxdialog: refactor color support
Clean up and refactor color support. All color support are now in util.c including color definitions. In the process introduced a global variable named 'dlg' which is used all over to set color - thats the reason why all files are changed. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
		
							parent
							
								
									bf60362566
								
							
						
					
					
						commit
						98e5a1579e
					
				
					 10 changed files with 251 additions and 363 deletions
				
			
		| 
						 | 
					@ -34,18 +34,19 @@ static void print_item(WINDOW * win, const char *item, int status, int choice,
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Clear 'residue' of last item */
 | 
						/* Clear 'residue' of last item */
 | 
				
			||||||
	wattrset(win, menubox_attr);
 | 
						wattrset(win, dlg.menubox.atr);
 | 
				
			||||||
	wmove(win, choice, 0);
 | 
						wmove(win, choice, 0);
 | 
				
			||||||
	for (i = 0; i < list_width; i++)
 | 
						for (i = 0; i < list_width; i++)
 | 
				
			||||||
		waddch(win, ' ');
 | 
							waddch(win, ' ');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wmove(win, choice, check_x);
 | 
						wmove(win, choice, check_x);
 | 
				
			||||||
	wattrset(win, selected ? check_selected_attr : check_attr);
 | 
						wattrset(win, selected ? dlg.check_selected.atr
 | 
				
			||||||
 | 
							 : dlg.check.atr);
 | 
				
			||||||
	wprintw(win, "(%c)", status ? 'X' : ' ');
 | 
						wprintw(win, "(%c)", status ? 'X' : ' ');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(win, selected ? tag_selected_attr : tag_attr);
 | 
						wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
 | 
				
			||||||
	mvwaddch(win, choice, item_x, item[0]);
 | 
						mvwaddch(win, choice, item_x, item[0]);
 | 
				
			||||||
	wattrset(win, selected ? item_selected_attr : item_attr);
 | 
						wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
 | 
				
			||||||
	waddstr(win, (char *)item + 1);
 | 
						waddstr(win, (char *)item + 1);
 | 
				
			||||||
	if (selected) {
 | 
						if (selected) {
 | 
				
			||||||
		wmove(win, choice, check_x + 1);
 | 
							wmove(win, choice, check_x + 1);
 | 
				
			||||||
| 
						 | 
					@ -62,11 +63,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
 | 
				
			||||||
	wmove(win, y, x);
 | 
						wmove(win, y, x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (scroll > 0) {
 | 
						if (scroll > 0) {
 | 
				
			||||||
		wattrset(win, uarrow_attr);
 | 
							wattrset(win, dlg.uarrow.atr);
 | 
				
			||||||
		waddch(win, ACS_UARROW);
 | 
							waddch(win, ACS_UARROW);
 | 
				
			||||||
		waddstr(win, "(-)");
 | 
							waddstr(win, "(-)");
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		wattrset(win, menubox_attr);
 | 
							wattrset(win, dlg.menubox.atr);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
| 
						 | 
					@ -77,11 +78,11 @@ static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
 | 
				
			||||||
	wmove(win, y, x);
 | 
						wmove(win, y, x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((height < item_no) && (scroll + choice < item_no - 1)) {
 | 
						if ((height < item_no) && (scroll + choice < item_no - 1)) {
 | 
				
			||||||
		wattrset(win, darrow_attr);
 | 
							wattrset(win, dlg.darrow.atr);
 | 
				
			||||||
		waddch(win, ACS_DARROW);
 | 
							waddch(win, ACS_DARROW);
 | 
				
			||||||
		waddstr(win, "(+)");
 | 
							waddstr(win, "(+)");
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		wattrset(win, menubox_border_attr);
 | 
							wattrset(win, dlg.menubox_border.atr);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
| 
						 | 
					@ -145,17 +146,18 @@ int dialog_checklist(const char *title, const char *prompt, int height,
 | 
				
			||||||
	dialog = newwin(height, width, y, x);
 | 
						dialog = newwin(height, width, y, x);
 | 
				
			||||||
	keypad(dialog, TRUE);
 | 
						keypad(dialog, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
	wattrset(dialog, border_attr);
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
						wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
						mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
	for (i = 0; i < width - 2; i++)
 | 
						for (i = 0; i < width - 2; i++)
 | 
				
			||||||
		waddch(dialog, ACS_HLINE);
 | 
							waddch(dialog, ACS_HLINE);
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	waddch(dialog, ACS_RTEE);
 | 
						waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
						print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	list_width = width - 6;
 | 
						list_width = width - 6;
 | 
				
			||||||
| 
						 | 
					@ -170,7 +172,7 @@ int dialog_checklist(const char *title, const char *prompt, int height,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* draw a box around the list items */
 | 
						/* draw a box around the list items */
 | 
				
			||||||
	draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
 | 
						draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
 | 
				
			||||||
	         menubox_border_attr, menubox_attr);
 | 
						         dlg.menubox_border.atr, dlg.menubox.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Find length of longest item in order to center checklist */
 | 
						/* Find length of longest item in order to center checklist */
 | 
				
			||||||
	check_x = 0;
 | 
						check_x = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,154 +0,0 @@
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 *  colors.h -- color attribute definitions
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *  AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *  This program is free software; you can redistribute it and/or
 | 
					 | 
				
			||||||
 *  modify it under the terms of the GNU General Public License
 | 
					 | 
				
			||||||
 *  as published by the Free Software Foundation; either version 2
 | 
					 | 
				
			||||||
 *  of the License, or (at your option) any later version.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *  This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
 *  GNU General Public License for more details.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *  You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
 *  along with this program; if not, write to the Free Software
 | 
					 | 
				
			||||||
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 *   Default color definitions
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *   *_FG = foreground
 | 
					 | 
				
			||||||
 *   *_BG = background
 | 
					 | 
				
			||||||
 *   *_HL = highlight?
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#define SCREEN_FG                    COLOR_CYAN
 | 
					 | 
				
			||||||
#define SCREEN_BG                    COLOR_BLUE
 | 
					 | 
				
			||||||
#define SCREEN_HL                    TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SHADOW_FG                    COLOR_BLACK
 | 
					 | 
				
			||||||
#define SHADOW_BG                    COLOR_BLACK
 | 
					 | 
				
			||||||
#define SHADOW_HL                    TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIALOG_FG                    COLOR_BLACK
 | 
					 | 
				
			||||||
#define DIALOG_BG                    COLOR_WHITE
 | 
					 | 
				
			||||||
#define DIALOG_HL                    FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TITLE_FG                     COLOR_YELLOW
 | 
					 | 
				
			||||||
#define TITLE_BG                     COLOR_WHITE
 | 
					 | 
				
			||||||
#define TITLE_HL                     TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BORDER_FG                    COLOR_WHITE
 | 
					 | 
				
			||||||
#define BORDER_BG                    COLOR_WHITE
 | 
					 | 
				
			||||||
#define BORDER_HL                    TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_ACTIVE_FG             COLOR_WHITE
 | 
					 | 
				
			||||||
#define BUTTON_ACTIVE_BG             COLOR_BLUE
 | 
					 | 
				
			||||||
#define BUTTON_ACTIVE_HL             TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_INACTIVE_FG           COLOR_BLACK
 | 
					 | 
				
			||||||
#define BUTTON_INACTIVE_BG           COLOR_WHITE
 | 
					 | 
				
			||||||
#define BUTTON_INACTIVE_HL           FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_KEY_ACTIVE_FG         COLOR_WHITE
 | 
					 | 
				
			||||||
#define BUTTON_KEY_ACTIVE_BG         COLOR_BLUE
 | 
					 | 
				
			||||||
#define BUTTON_KEY_ACTIVE_HL         TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_KEY_INACTIVE_FG       COLOR_RED
 | 
					 | 
				
			||||||
#define BUTTON_KEY_INACTIVE_BG       COLOR_WHITE
 | 
					 | 
				
			||||||
#define BUTTON_KEY_INACTIVE_HL       FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_ACTIVE_FG       COLOR_YELLOW
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_ACTIVE_BG       COLOR_BLUE
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_ACTIVE_HL       TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_INACTIVE_FG     COLOR_BLACK
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_INACTIVE_BG     COLOR_WHITE
 | 
					 | 
				
			||||||
#define BUTTON_LABEL_INACTIVE_HL     TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define INPUTBOX_FG                  COLOR_BLACK
 | 
					 | 
				
			||||||
#define INPUTBOX_BG                  COLOR_WHITE
 | 
					 | 
				
			||||||
#define INPUTBOX_HL                  FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define INPUTBOX_BORDER_FG           COLOR_BLACK
 | 
					 | 
				
			||||||
#define INPUTBOX_BORDER_BG           COLOR_WHITE
 | 
					 | 
				
			||||||
#define INPUTBOX_BORDER_HL           FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SEARCHBOX_FG                 COLOR_BLACK
 | 
					 | 
				
			||||||
#define SEARCHBOX_BG                 COLOR_WHITE
 | 
					 | 
				
			||||||
#define SEARCHBOX_HL                 FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SEARCHBOX_TITLE_FG           COLOR_YELLOW
 | 
					 | 
				
			||||||
#define SEARCHBOX_TITLE_BG           COLOR_WHITE
 | 
					 | 
				
			||||||
#define SEARCHBOX_TITLE_HL           TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define SEARCHBOX_BORDER_FG          COLOR_WHITE
 | 
					 | 
				
			||||||
#define SEARCHBOX_BORDER_BG          COLOR_WHITE
 | 
					 | 
				
			||||||
#define SEARCHBOX_BORDER_HL          TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define POSITION_INDICATOR_FG        COLOR_YELLOW
 | 
					 | 
				
			||||||
#define POSITION_INDICATOR_BG        COLOR_WHITE
 | 
					 | 
				
			||||||
#define POSITION_INDICATOR_HL        TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MENUBOX_FG                   COLOR_BLACK
 | 
					 | 
				
			||||||
#define MENUBOX_BG                   COLOR_WHITE
 | 
					 | 
				
			||||||
#define MENUBOX_HL                   FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MENUBOX_BORDER_FG            COLOR_WHITE
 | 
					 | 
				
			||||||
#define MENUBOX_BORDER_BG            COLOR_WHITE
 | 
					 | 
				
			||||||
#define MENUBOX_BORDER_HL            TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ITEM_FG                      COLOR_BLACK
 | 
					 | 
				
			||||||
#define ITEM_BG                      COLOR_WHITE
 | 
					 | 
				
			||||||
#define ITEM_HL                      FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ITEM_SELECTED_FG             COLOR_WHITE
 | 
					 | 
				
			||||||
#define ITEM_SELECTED_BG             COLOR_BLUE
 | 
					 | 
				
			||||||
#define ITEM_SELECTED_HL             TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TAG_FG                       COLOR_YELLOW
 | 
					 | 
				
			||||||
#define TAG_BG                       COLOR_WHITE
 | 
					 | 
				
			||||||
#define TAG_HL                       TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TAG_SELECTED_FG              COLOR_YELLOW
 | 
					 | 
				
			||||||
#define TAG_SELECTED_BG              COLOR_BLUE
 | 
					 | 
				
			||||||
#define TAG_SELECTED_HL              TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TAG_KEY_FG                   COLOR_YELLOW
 | 
					 | 
				
			||||||
#define TAG_KEY_BG                   COLOR_WHITE
 | 
					 | 
				
			||||||
#define TAG_KEY_HL                   TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define TAG_KEY_SELECTED_FG          COLOR_YELLOW
 | 
					 | 
				
			||||||
#define TAG_KEY_SELECTED_BG          COLOR_BLUE
 | 
					 | 
				
			||||||
#define TAG_KEY_SELECTED_HL          TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CHECK_FG                     COLOR_BLACK
 | 
					 | 
				
			||||||
#define CHECK_BG                     COLOR_WHITE
 | 
					 | 
				
			||||||
#define CHECK_HL                     FALSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CHECK_SELECTED_FG            COLOR_WHITE
 | 
					 | 
				
			||||||
#define CHECK_SELECTED_BG            COLOR_BLUE
 | 
					 | 
				
			||||||
#define CHECK_SELECTED_HL            TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define UARROW_FG                    COLOR_GREEN
 | 
					 | 
				
			||||||
#define UARROW_BG                    COLOR_WHITE
 | 
					 | 
				
			||||||
#define UARROW_HL                    TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DARROW_FG                    COLOR_GREEN
 | 
					 | 
				
			||||||
#define DARROW_BG                    COLOR_WHITE
 | 
					 | 
				
			||||||
#define DARROW_HL                    TRUE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* End of default color definitions */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define C_ATTR(x,y)                  ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
 | 
					 | 
				
			||||||
#define COLOR_NAME_LEN               10
 | 
					 | 
				
			||||||
#define COLOR_COUNT                  8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Global variables
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern int color_table[][3];
 | 
					 | 
				
			||||||
| 
						 | 
					@ -87,62 +87,60 @@
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Attribute names
 | 
					 *   Color definitions
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#define screen_attr                   attributes[0]
 | 
					struct dialog_color {
 | 
				
			||||||
#define shadow_attr                   attributes[1]
 | 
						chtype atr;	/* Color attribute */
 | 
				
			||||||
#define dialog_attr                   attributes[2]
 | 
						int fg;		/* foreground */
 | 
				
			||||||
#define title_attr                    attributes[3]
 | 
						int bg;		/* background */
 | 
				
			||||||
#define border_attr                   attributes[4]
 | 
						int hl;		/* highlight this item */
 | 
				
			||||||
#define button_active_attr            attributes[5]
 | 
					};
 | 
				
			||||||
#define button_inactive_attr          attributes[6]
 | 
					 | 
				
			||||||
#define button_key_active_attr        attributes[7]
 | 
					 | 
				
			||||||
#define button_key_inactive_attr      attributes[8]
 | 
					 | 
				
			||||||
#define button_label_active_attr      attributes[9]
 | 
					 | 
				
			||||||
#define button_label_inactive_attr    attributes[10]
 | 
					 | 
				
			||||||
#define inputbox_attr                 attributes[11]
 | 
					 | 
				
			||||||
#define inputbox_border_attr          attributes[12]
 | 
					 | 
				
			||||||
#define searchbox_attr                attributes[13]
 | 
					 | 
				
			||||||
#define searchbox_title_attr          attributes[14]
 | 
					 | 
				
			||||||
#define searchbox_border_attr         attributes[15]
 | 
					 | 
				
			||||||
#define position_indicator_attr       attributes[16]
 | 
					 | 
				
			||||||
#define menubox_attr                  attributes[17]
 | 
					 | 
				
			||||||
#define menubox_border_attr           attributes[18]
 | 
					 | 
				
			||||||
#define item_attr                     attributes[19]
 | 
					 | 
				
			||||||
#define item_selected_attr            attributes[20]
 | 
					 | 
				
			||||||
#define tag_attr                      attributes[21]
 | 
					 | 
				
			||||||
#define tag_selected_attr             attributes[22]
 | 
					 | 
				
			||||||
#define tag_key_attr                  attributes[23]
 | 
					 | 
				
			||||||
#define tag_key_selected_attr         attributes[24]
 | 
					 | 
				
			||||||
#define check_attr                    attributes[25]
 | 
					 | 
				
			||||||
#define check_selected_attr           attributes[26]
 | 
					 | 
				
			||||||
#define uarrow_attr                   attributes[27]
 | 
					 | 
				
			||||||
#define darrow_attr                   attributes[28]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* number of attributes */
 | 
					struct dialog_info {
 | 
				
			||||||
#define ATTRIBUTE_COUNT               29
 | 
						const char *backtitle;
 | 
				
			||||||
 | 
						struct dialog_color screen;
 | 
				
			||||||
 | 
						struct dialog_color shadow;
 | 
				
			||||||
 | 
						struct dialog_color dialog;
 | 
				
			||||||
 | 
						struct dialog_color title;
 | 
				
			||||||
 | 
						struct dialog_color border;
 | 
				
			||||||
 | 
						struct dialog_color button_active;
 | 
				
			||||||
 | 
						struct dialog_color button_inactive;
 | 
				
			||||||
 | 
						struct dialog_color button_key_active;
 | 
				
			||||||
 | 
						struct dialog_color button_key_inactive;
 | 
				
			||||||
 | 
						struct dialog_color button_label_active;
 | 
				
			||||||
 | 
						struct dialog_color button_label_inactive;
 | 
				
			||||||
 | 
						struct dialog_color inputbox;
 | 
				
			||||||
 | 
						struct dialog_color inputbox_border;
 | 
				
			||||||
 | 
						struct dialog_color searchbox;
 | 
				
			||||||
 | 
						struct dialog_color searchbox_title;
 | 
				
			||||||
 | 
						struct dialog_color searchbox_border;
 | 
				
			||||||
 | 
						struct dialog_color position_indicator;
 | 
				
			||||||
 | 
						struct dialog_color menubox;
 | 
				
			||||||
 | 
						struct dialog_color menubox_border;
 | 
				
			||||||
 | 
						struct dialog_color item;
 | 
				
			||||||
 | 
						struct dialog_color item_selected;
 | 
				
			||||||
 | 
						struct dialog_color tag;
 | 
				
			||||||
 | 
						struct dialog_color tag_selected;
 | 
				
			||||||
 | 
						struct dialog_color tag_key;
 | 
				
			||||||
 | 
						struct dialog_color tag_key_selected;
 | 
				
			||||||
 | 
						struct dialog_color check;
 | 
				
			||||||
 | 
						struct dialog_color check_selected;
 | 
				
			||||||
 | 
						struct dialog_color uarrow;
 | 
				
			||||||
 | 
						struct dialog_color darrow;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Global variables
 | 
					 * Global variables
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
extern bool use_colors;
 | 
					extern struct dialog_info dlg;
 | 
				
			||||||
extern bool use_shadow;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern chtype attributes[];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern const char *backtitle;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Function prototypes
 | 
					 * Function prototypes
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
extern void create_rc(const char *filename);
 | 
					 | 
				
			||||||
extern int parse_rc(void);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void init_dialog(void);
 | 
					void init_dialog(void);
 | 
				
			||||||
void end_dialog(void);
 | 
					void end_dialog(void);
 | 
				
			||||||
void attr_clear(WINDOW * win, int height, int width, chtype attr);
 | 
					void attr_clear(WINDOW * win, int height, int width, chtype attr);
 | 
				
			||||||
void dialog_clear(void);
 | 
					void dialog_clear(void);
 | 
				
			||||||
void color_setup(void);
 | 
					 | 
				
			||||||
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
 | 
					void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
 | 
				
			||||||
void print_button(WINDOW * win, const char *label, int y, int x, int selected);
 | 
					void print_button(WINDOW * win, const char *label, int y, int x, int selected);
 | 
				
			||||||
void print_title(WINDOW *dialog, const char *title, int width);
 | 
					void print_title(WINDOW *dialog, const char *title, int width);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,17 +58,18 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
 | 
				
			||||||
	dialog = newwin(height, width, y, x);
 | 
						dialog = newwin(height, width, y, x);
 | 
				
			||||||
	keypad(dialog, TRUE);
 | 
						keypad(dialog, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
	wattrset(dialog, border_attr);
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
						wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
						mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
	for (i = 0; i < width - 2; i++)
 | 
						for (i = 0; i < width - 2; i++)
 | 
				
			||||||
		waddch(dialog, ACS_HLINE);
 | 
							waddch(dialog, ACS_HLINE);
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	waddch(dialog, ACS_RTEE);
 | 
						waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
						print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Draw the input field box */
 | 
						/* Draw the input field box */
 | 
				
			||||||
| 
						 | 
					@ -76,13 +77,14 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
 | 
				
			||||||
	getyx(dialog, y, x);
 | 
						getyx(dialog, y, x);
 | 
				
			||||||
	box_y = y + 2;
 | 
						box_y = y + 2;
 | 
				
			||||||
	box_x = (width - box_width) / 2;
 | 
						box_x = (width - box_width) / 2;
 | 
				
			||||||
	draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, border_attr, dialog_attr);
 | 
						draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
 | 
				
			||||||
 | 
							 dlg.border.atr, dlg.dialog.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_buttons(dialog, height, width, 0);
 | 
						print_buttons(dialog, height, width, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Set up the initial value */
 | 
						/* Set up the initial value */
 | 
				
			||||||
	wmove(dialog, box_y, box_x);
 | 
						wmove(dialog, box_y, box_x);
 | 
				
			||||||
	wattrset(dialog, inputbox_attr);
 | 
						wattrset(dialog, dlg.inputbox.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!init)
 | 
						if (!init)
 | 
				
			||||||
		instr[0] = '\0';
 | 
							instr[0] = '\0';
 | 
				
			||||||
| 
						 | 
					@ -120,7 +122,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
 | 
				
			||||||
			case KEY_BACKSPACE:
 | 
								case KEY_BACKSPACE:
 | 
				
			||||||
			case 127:
 | 
								case 127:
 | 
				
			||||||
				if (input_x || scroll) {
 | 
									if (input_x || scroll) {
 | 
				
			||||||
					wattrset(dialog, inputbox_attr);
 | 
										wattrset(dialog, dlg.inputbox.atr);
 | 
				
			||||||
					if (!input_x) {
 | 
										if (!input_x) {
 | 
				
			||||||
						scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
 | 
											scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
 | 
				
			||||||
						wmove(dialog, box_y, box_x);
 | 
											wmove(dialog, box_y, box_x);
 | 
				
			||||||
| 
						 | 
					@ -140,7 +142,7 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				if (key < 0x100 && isprint(key)) {
 | 
									if (key < 0x100 && isprint(key)) {
 | 
				
			||||||
					if (scroll + input_x < MAX_LEN) {
 | 
										if (scroll + input_x < MAX_LEN) {
 | 
				
			||||||
						wattrset(dialog, inputbox_attr);
 | 
											wattrset(dialog, dlg.inputbox.atr);
 | 
				
			||||||
						instr[scroll + input_x] = key;
 | 
											instr[scroll + input_x] = key;
 | 
				
			||||||
						instr[scroll + input_x + 1] = '\0';
 | 
											instr[scroll + input_x + 1] = '\0';
 | 
				
			||||||
						if (input_x == box_width - 1) {
 | 
											if (input_x == box_width - 1) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,11 +78,11 @@ int main(int argc, const char *const *argv)
 | 
				
			||||||
				offset += 2;
 | 
									offset += 2;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if (!strcmp(argv[offset + 1], "--backtitle")) {
 | 
							} else if (!strcmp(argv[offset + 1], "--backtitle")) {
 | 
				
			||||||
			if (backtitle != NULL) {
 | 
								if (dlg.backtitle != NULL) {
 | 
				
			||||||
				Usage(argv[0]);
 | 
									Usage(argv[0]);
 | 
				
			||||||
				exit(-1);
 | 
									exit(-1);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				backtitle = argv[offset + 2];
 | 
									dlg.backtitle = argv[offset + 2];
 | 
				
			||||||
				offset += 2;
 | 
									offset += 2;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if (!strcmp(argv[offset + 1], "--clear")) {
 | 
							} else if (!strcmp(argv[offset + 1], "--clear")) {
 | 
				
			||||||
| 
						 | 
					@ -123,7 +123,7 @@ int main(int argc, const char *const *argv)
 | 
				
			||||||
	retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
 | 
						retval = (*(modePtr->jumper)) (title, argc - offset, argv + offset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (opt_clear) {	/* clear screen before exit */
 | 
						if (opt_clear) {	/* clear screen before exit */
 | 
				
			||||||
		attr_clear(stdscr, LINES, COLS, screen_attr);
 | 
							attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
 | 
				
			||||||
		refresh();
 | 
							refresh();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	end_dialog();
 | 
						end_dialog();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
 | 
				
			||||||
	j = first_alpha(menu_item, "YyNnMmHh");
 | 
						j = first_alpha(menu_item, "YyNnMmHh");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Clear 'residue' of last item */
 | 
						/* Clear 'residue' of last item */
 | 
				
			||||||
	wattrset(win, menubox_attr);
 | 
						wattrset(win, dlg.menubox.atr);
 | 
				
			||||||
	wmove(win, choice, 0);
 | 
						wmove(win, choice, 0);
 | 
				
			||||||
#if OLD_NCURSES
 | 
					#if OLD_NCURSES
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -85,10 +85,11 @@ static void do_print_item(WINDOW * win, const char *item, int choice,
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
	wclrtoeol(win);
 | 
						wclrtoeol(win);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	wattrset(win, selected ? item_selected_attr : item_attr);
 | 
						wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
 | 
				
			||||||
	mvwaddstr(win, choice, item_x, menu_item);
 | 
						mvwaddstr(win, choice, item_x, menu_item);
 | 
				
			||||||
	if (hotkey) {
 | 
						if (hotkey) {
 | 
				
			||||||
		wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
 | 
							wattrset(win, selected ? dlg.tag_key_selected.atr
 | 
				
			||||||
 | 
								 : dlg.tag_key.atr);
 | 
				
			||||||
		mvwaddch(win, choice, item_x + j, menu_item[j]);
 | 
							mvwaddch(win, choice, item_x + j, menu_item[j]);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (selected) {
 | 
						if (selected) {
 | 
				
			||||||
| 
						 | 
					@ -117,11 +118,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
 | 
				
			||||||
	wmove(win, y, x);
 | 
						wmove(win, y, x);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (scroll > 0) {
 | 
						if (scroll > 0) {
 | 
				
			||||||
		wattrset(win, uarrow_attr);
 | 
							wattrset(win, dlg.uarrow.atr);
 | 
				
			||||||
		waddch(win, ACS_UARROW);
 | 
							waddch(win, ACS_UARROW);
 | 
				
			||||||
		waddstr(win, "(-)");
 | 
							waddstr(win, "(-)");
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		wattrset(win, menubox_attr);
 | 
							wattrset(win, dlg.menubox.atr);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
| 
						 | 
					@ -133,11 +134,11 @@ static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
 | 
				
			||||||
	wrefresh(win);
 | 
						wrefresh(win);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((height < item_no) && (scroll + height < item_no)) {
 | 
						if ((height < item_no) && (scroll + height < item_no)) {
 | 
				
			||||||
		wattrset(win, darrow_attr);
 | 
							wattrset(win, dlg.darrow.atr);
 | 
				
			||||||
		waddch(win, ACS_DARROW);
 | 
							waddch(win, ACS_DARROW);
 | 
				
			||||||
		waddstr(win, "(+)");
 | 
							waddstr(win, "(+)");
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		wattrset(win, menubox_border_attr);
 | 
							wattrset(win, dlg.menubox_border.atr);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
		waddch(win, ACS_HLINE);
 | 
							waddch(win, ACS_HLINE);
 | 
				
			||||||
| 
						 | 
					@ -199,18 +200,19 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
 | 
				
			||||||
	dialog = newwin(height, width, y, x);
 | 
						dialog = newwin(height, width, y, x);
 | 
				
			||||||
	keypad(dialog, TRUE);
 | 
						keypad(dialog, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
	wattrset(dialog, border_attr);
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
						wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
						mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
	for (i = 0; i < width - 2; i++)
 | 
						for (i = 0; i < width - 2; i++)
 | 
				
			||||||
		waddch(dialog, ACS_HLINE);
 | 
							waddch(dialog, ACS_HLINE);
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	wbkgdset(dialog, dialog_attr & A_COLOR);
 | 
						wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
 | 
				
			||||||
	waddch(dialog, ACS_RTEE);
 | 
						waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
						print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	menu_width = width - 6;
 | 
						menu_width = width - 6;
 | 
				
			||||||
| 
						 | 
					@ -224,7 +226,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* draw a box around the menu items */
 | 
						/* draw a box around the menu items */
 | 
				
			||||||
	draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
 | 
						draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
 | 
				
			||||||
		 menubox_border_attr, menubox_attr);
 | 
							 dlg.menubox_border.atr, dlg.menubox.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	item_x = (menu_width - 70) / 2;
 | 
						item_x = (menu_width - 70) / 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,19 +40,20 @@ int dialog_msgbox(const char *title, const char *prompt, int height, int width,
 | 
				
			||||||
	dialog = newwin(height, width, y, x);
 | 
						dialog = newwin(height, width, y, x);
 | 
				
			||||||
	keypad(dialog, TRUE);
 | 
						keypad(dialog, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	print_autowrap(dialog, prompt, width - 2, 1, 2);
 | 
						print_autowrap(dialog, prompt, width - 2, 1, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pause) {
 | 
						if (pause) {
 | 
				
			||||||
		wattrset(dialog, border_attr);
 | 
							wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
		mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
							mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
		for (i = 0; i < width - 2; i++)
 | 
							for (i = 0; i < width - 2; i++)
 | 
				
			||||||
			waddch(dialog, ACS_HLINE);
 | 
								waddch(dialog, ACS_HLINE);
 | 
				
			||||||
		wattrset(dialog, dialog_attr);
 | 
							wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
		waddch(dialog, ACS_RTEE);
 | 
							waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		print_button(dialog, "  Ok  ", height - 2, width / 2 - 4, TRUE);
 | 
							print_button(dialog, "  Ok  ", height - 2, width / 2 - 4, TRUE);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,20 +87,21 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Create window for text region, used for scrolling text */
 | 
						/* Create window for text region, used for scrolling text */
 | 
				
			||||||
	text = subwin(dialog, height - 4, width - 2, y + 1, x + 1);
 | 
						text = subwin(dialog, height - 4, width - 2, y + 1, x + 1);
 | 
				
			||||||
	wattrset(text, dialog_attr);
 | 
						wattrset(text, dlg.dialog.atr);
 | 
				
			||||||
	wbkgdset(text, dialog_attr & A_COLOR);
 | 
						wbkgdset(text, dlg.dialog.atr & A_COLOR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	keypad(text, TRUE);
 | 
						keypad(text, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* register the new window, along with its borders */
 | 
						/* register the new window, along with its borders */
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, border_attr);
 | 
						wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
						mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
	for (i = 0; i < width - 2; i++)
 | 
						for (i = 0; i < width - 2; i++)
 | 
				
			||||||
		waddch(dialog, ACS_HLINE);
 | 
							waddch(dialog, ACS_HLINE);
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	wbkgdset(dialog, dialog_attr & A_COLOR);
 | 
						wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
 | 
				
			||||||
	waddch(dialog, ACS_RTEE);
 | 
						waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
| 
						 | 
					@ -110,7 +111,7 @@ int dialog_textbox(const char *title, const char *file, int height, int width)
 | 
				
			||||||
	getyx(dialog, cur_y, cur_x);	/* Save cursor position */
 | 
						getyx(dialog, cur_y, cur_x);	/* Save cursor position */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Print first page of text */
 | 
						/* Print first page of text */
 | 
				
			||||||
	attr_clear(text, height - 4, width - 2, dialog_attr);
 | 
						attr_clear(text, height - 4, width - 2, dlg.dialog.atr);
 | 
				
			||||||
	print_page(text, height - 4, width - 2);
 | 
						print_page(text, height - 4, width - 2);
 | 
				
			||||||
	print_position(dialog, height, width);
 | 
						print_position(dialog, height, width);
 | 
				
			||||||
	wmove(dialog, cur_y, cur_x);	/* Restore cursor position */
 | 
						wmove(dialog, cur_y, cur_x);	/* Restore cursor position */
 | 
				
			||||||
| 
						 | 
					@ -524,8 +525,8 @@ static void print_position(WINDOW * win, int height, int width)
 | 
				
			||||||
		fprintf(stderr, "\nError moving file pointer in print_position().\n");
 | 
							fprintf(stderr, "\nError moving file pointer in print_position().\n");
 | 
				
			||||||
		exit(-1);
 | 
							exit(-1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	wattrset(win, position_indicator_attr);
 | 
						wattrset(win, dlg.position_indicator.atr);
 | 
				
			||||||
	wbkgdset(win, position_indicator_attr & A_COLOR);
 | 
						wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
 | 
				
			||||||
	percent = !file_size ?
 | 
						percent = !file_size ?
 | 
				
			||||||
	    100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
 | 
						    100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
 | 
				
			||||||
	wmove(win, height - 3, width - 9);
 | 
						wmove(win, height - 3, width - 9);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,85 +21,141 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "dialog.h"
 | 
					#include "dialog.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* use colors by default? */
 | 
					struct dialog_info dlg;
 | 
				
			||||||
bool use_colors = 1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *backtitle = NULL;
 | 
					static void set_mono_theme(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						dlg.screen.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.shadow.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.dialog.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.title.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.border.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.button_active.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.button_inactive.atr = A_DIM;
 | 
				
			||||||
 | 
						dlg.button_key_active.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.button_key_inactive.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.button_label_active.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.button_label_inactive.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.inputbox.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.inputbox_border.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.searchbox.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.searchbox_title.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.searchbox_border.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.position_indicator.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.menubox.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.menubox_border.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.item.atr = A_NORMAL;
 | 
				
			||||||
 | 
						dlg.item_selected.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.tag.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.tag_selected.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.tag_key.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.tag_key_selected.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.check.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.check_selected.atr = A_REVERSE;
 | 
				
			||||||
 | 
						dlg.uarrow.atr = A_BOLD;
 | 
				
			||||||
 | 
						dlg.darrow.atr = A_BOLD;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define DLG_COLOR(dialog, f, b, h) \
 | 
				
			||||||
 | 
					do {                               \
 | 
				
			||||||
 | 
						dlg.dialog.fg = (f);       \
 | 
				
			||||||
 | 
						dlg.dialog.bg = (b);       \
 | 
				
			||||||
 | 
						dlg.dialog.hl = (h);       \
 | 
				
			||||||
 | 
					} while (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void set_classic_theme(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						DLG_COLOR(screen,                COLOR_CYAN,   COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(shadow,                COLOR_BLACK,  COLOR_BLACK,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(dialog,                COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(title,                 COLOR_YELLOW, COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(border,                COLOR_WHITE,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(button_active,         COLOR_WHITE,  COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(button_inactive,       COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(button_key_active,     COLOR_WHITE,  COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(button_key_inactive,   COLOR_RED,    COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(button_label_active,   COLOR_YELLOW, COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(button_label_inactive, COLOR_BLACK,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(inputbox,              COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(inputbox_border,       COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(searchbox,             COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(searchbox_title,       COLOR_YELLOW, COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(searchbox_border,      COLOR_WHITE,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(position_indicator,    COLOR_YELLOW, COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(menubox,               COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(menubox_border,        COLOR_WHITE,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(item,                  COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(item_selected,         COLOR_WHITE,  COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(tag,                   COLOR_YELLOW, COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(tag_selected,          COLOR_YELLOW, COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(tag_key,               COLOR_YELLOW, COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(tag_key_selected,      COLOR_YELLOW, COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(check,                 COLOR_BLACK,  COLOR_WHITE,  false);
 | 
				
			||||||
 | 
						DLG_COLOR(check_selected,        COLOR_WHITE,  COLOR_BLUE,   true);
 | 
				
			||||||
 | 
						DLG_COLOR(uarrow,                COLOR_GREEN,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
						DLG_COLOR(darrow,                COLOR_GREEN,  COLOR_WHITE,  true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void init_one_color(struct dialog_color *color)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static int pair = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pair++;
 | 
				
			||||||
 | 
						init_pair(pair, color->fg, color->bg);
 | 
				
			||||||
 | 
						if (color->hl)
 | 
				
			||||||
 | 
							color->atr = A_BOLD | COLOR_PAIR(pair);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							color->atr = COLOR_PAIR(pair);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void init_dialog_colors(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						init_one_color(&dlg.screen);
 | 
				
			||||||
 | 
						init_one_color(&dlg.shadow);
 | 
				
			||||||
 | 
						init_one_color(&dlg.dialog);
 | 
				
			||||||
 | 
						init_one_color(&dlg.title);
 | 
				
			||||||
 | 
						init_one_color(&dlg.border);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_active);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_inactive);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_key_active);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_key_inactive);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_label_active);
 | 
				
			||||||
 | 
						init_one_color(&dlg.button_label_inactive);
 | 
				
			||||||
 | 
						init_one_color(&dlg.inputbox);
 | 
				
			||||||
 | 
						init_one_color(&dlg.inputbox_border);
 | 
				
			||||||
 | 
						init_one_color(&dlg.searchbox);
 | 
				
			||||||
 | 
						init_one_color(&dlg.searchbox_title);
 | 
				
			||||||
 | 
						init_one_color(&dlg.searchbox_border);
 | 
				
			||||||
 | 
						init_one_color(&dlg.position_indicator);
 | 
				
			||||||
 | 
						init_one_color(&dlg.menubox);
 | 
				
			||||||
 | 
						init_one_color(&dlg.menubox_border);
 | 
				
			||||||
 | 
						init_one_color(&dlg.item);
 | 
				
			||||||
 | 
						init_one_color(&dlg.item_selected);
 | 
				
			||||||
 | 
						init_one_color(&dlg.tag);
 | 
				
			||||||
 | 
						init_one_color(&dlg.tag_selected);
 | 
				
			||||||
 | 
						init_one_color(&dlg.tag_key);
 | 
				
			||||||
 | 
						init_one_color(&dlg.tag_key_selected);
 | 
				
			||||||
 | 
						init_one_color(&dlg.check);
 | 
				
			||||||
 | 
						init_one_color(&dlg.check_selected);
 | 
				
			||||||
 | 
						init_one_color(&dlg.uarrow);
 | 
				
			||||||
 | 
						init_one_color(&dlg.darrow);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Attribute values, default is for mono display
 | 
					 * Setup for color display
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
chtype attributes[] = {
 | 
					static void color_setup(void)
 | 
				
			||||||
	A_NORMAL,		/* screen_attr */
 | 
					{
 | 
				
			||||||
	A_NORMAL,		/* shadow_attr */
 | 
						if (has_colors()) {	/* Terminal supports color? */
 | 
				
			||||||
	A_NORMAL,		/* dialog_attr */
 | 
							start_color();
 | 
				
			||||||
	A_BOLD,			/* title_attr */
 | 
							set_classic_theme();
 | 
				
			||||||
	A_NORMAL,		/* border_attr */
 | 
							init_dialog_colors();
 | 
				
			||||||
	A_REVERSE,		/* button_active_attr */
 | 
						}
 | 
				
			||||||
	A_DIM,			/* button_inactive_attr */
 | 
						else
 | 
				
			||||||
	A_REVERSE,		/* button_key_active_attr */
 | 
						{
 | 
				
			||||||
	A_BOLD,			/* button_key_inactive_attr */
 | 
							set_mono_theme();
 | 
				
			||||||
	A_REVERSE,		/* button_label_active_attr */
 | 
						}
 | 
				
			||||||
	A_NORMAL,		/* button_label_inactive_attr */
 | 
					}
 | 
				
			||||||
	A_NORMAL,		/* inputbox_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* inputbox_border_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* searchbox_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* searchbox_title_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* searchbox_border_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* position_indicator_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* menubox_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* menubox_border_attr */
 | 
					 | 
				
			||||||
	A_NORMAL,		/* item_attr */
 | 
					 | 
				
			||||||
	A_REVERSE,		/* item_selected_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* tag_attr */
 | 
					 | 
				
			||||||
	A_REVERSE,		/* tag_selected_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* tag_key_attr */
 | 
					 | 
				
			||||||
	A_REVERSE,		/* tag_key_selected_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* check_attr */
 | 
					 | 
				
			||||||
	A_REVERSE,		/* check_selected_attr */
 | 
					 | 
				
			||||||
	A_BOLD,			/* uarrow_attr */
 | 
					 | 
				
			||||||
	A_BOLD			/* darrow_attr */
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "colors.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Table of color values
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
int color_table[][3] = {
 | 
					 | 
				
			||||||
	{SCREEN_FG, SCREEN_BG, SCREEN_HL},
 | 
					 | 
				
			||||||
	{SHADOW_FG, SHADOW_BG, SHADOW_HL},
 | 
					 | 
				
			||||||
	{DIALOG_FG, DIALOG_BG, DIALOG_HL},
 | 
					 | 
				
			||||||
	{TITLE_FG, TITLE_BG, TITLE_HL},
 | 
					 | 
				
			||||||
	{BORDER_FG, BORDER_BG, BORDER_HL},
 | 
					 | 
				
			||||||
	{BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
 | 
					 | 
				
			||||||
	{BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
 | 
					 | 
				
			||||||
	{BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
 | 
					 | 
				
			||||||
	{BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG,
 | 
					 | 
				
			||||||
	 BUTTON_KEY_INACTIVE_HL},
 | 
					 | 
				
			||||||
	{BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG,
 | 
					 | 
				
			||||||
	 BUTTON_LABEL_ACTIVE_HL},
 | 
					 | 
				
			||||||
	{BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
 | 
					 | 
				
			||||||
	 BUTTON_LABEL_INACTIVE_HL},
 | 
					 | 
				
			||||||
	{INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
 | 
					 | 
				
			||||||
	{INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
 | 
					 | 
				
			||||||
	{SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
 | 
					 | 
				
			||||||
	{SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
 | 
					 | 
				
			||||||
	{SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
 | 
					 | 
				
			||||||
	{POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
 | 
					 | 
				
			||||||
	{MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
 | 
					 | 
				
			||||||
	{MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
 | 
					 | 
				
			||||||
	{ITEM_FG, ITEM_BG, ITEM_HL},
 | 
					 | 
				
			||||||
	{ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
 | 
					 | 
				
			||||||
	{TAG_FG, TAG_BG, TAG_HL},
 | 
					 | 
				
			||||||
	{TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
 | 
					 | 
				
			||||||
	{TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
 | 
					 | 
				
			||||||
	{TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
 | 
					 | 
				
			||||||
	{CHECK_FG, CHECK_BG, CHECK_HL},
 | 
					 | 
				
			||||||
	{CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
 | 
					 | 
				
			||||||
	{UARROW_FG, UARROW_BG, UARROW_HL},
 | 
					 | 
				
			||||||
	{DARROW_FG, DARROW_BG, DARROW_HL},
 | 
					 | 
				
			||||||
};				/* color_table */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Set window to attribute 'attr'
 | 
					 * Set window to attribute 'attr'
 | 
				
			||||||
| 
						 | 
					@ -119,13 +175,13 @@ void attr_clear(WINDOW * win, int height, int width, chtype attr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void dialog_clear(void)
 | 
					void dialog_clear(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	attr_clear(stdscr, LINES, COLS, screen_attr);
 | 
						attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
 | 
				
			||||||
	/* Display background title if it exists ... - SLH */
 | 
						/* Display background title if it exists ... - SLH */
 | 
				
			||||||
	if (backtitle != NULL) {
 | 
						if (dlg.backtitle != NULL) {
 | 
				
			||||||
		int i;
 | 
							int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		wattrset(stdscr, screen_attr);
 | 
							wattrset(stdscr, dlg.screen.atr);
 | 
				
			||||||
		mvwaddstr(stdscr, 0, 1, (char *)backtitle);
 | 
							mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle);
 | 
				
			||||||
		wmove(stdscr, 1, 1);
 | 
							wmove(stdscr, 1, 1);
 | 
				
			||||||
		for (i = 1; i < COLS - 1; i++)
 | 
							for (i = 1; i < COLS - 1; i++)
 | 
				
			||||||
			waddch(stdscr, ACS_HLINE);
 | 
								waddch(stdscr, ACS_HLINE);
 | 
				
			||||||
| 
						 | 
					@ -142,33 +198,10 @@ void init_dialog(void)
 | 
				
			||||||
	keypad(stdscr, TRUE);
 | 
						keypad(stdscr, TRUE);
 | 
				
			||||||
	cbreak();
 | 
						cbreak();
 | 
				
			||||||
	noecho();
 | 
						noecho();
 | 
				
			||||||
 | 
						color_setup();
 | 
				
			||||||
	if (use_colors)		/* Set up colors */
 | 
					 | 
				
			||||||
		color_setup();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dialog_clear();
 | 
						dialog_clear();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Setup for color display
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
void color_setup(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (has_colors()) {	/* Terminal supports color? */
 | 
					 | 
				
			||||||
		start_color();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* Initialize color pairs */
 | 
					 | 
				
			||||||
		for (i = 0; i < ATTRIBUTE_COUNT; i++)
 | 
					 | 
				
			||||||
			init_pair(i + 1, color_table[i][0], color_table[i][1]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* Setup color attributes */
 | 
					 | 
				
			||||||
		for (i = 0; i < ATTRIBUTE_COUNT; i++)
 | 
					 | 
				
			||||||
			attributes[i] = C_ATTR(color_table[i][2], i + 1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * End using dialog functions.
 | 
					 * End using dialog functions.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -184,7 +217,7 @@ void print_title(WINDOW *dialog, const char *title, int width)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (title) {
 | 
						if (title) {
 | 
				
			||||||
		int tlen = MIN(width - 2, strlen(title));
 | 
							int tlen = MIN(width - 2, strlen(title));
 | 
				
			||||||
		wattrset(dialog, title_attr);
 | 
							wattrset(dialog, dlg.title.atr);
 | 
				
			||||||
		mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
 | 
							mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
 | 
				
			||||||
		mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
 | 
							mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
 | 
				
			||||||
		waddch(dialog, ' ');
 | 
							waddch(dialog, ' ');
 | 
				
			||||||
| 
						 | 
					@ -264,21 +297,23 @@ void print_button(WINDOW * win, const char *label, int y, int x, int selected)
 | 
				
			||||||
	int i, temp;
 | 
						int i, temp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wmove(win, y, x);
 | 
						wmove(win, y, x);
 | 
				
			||||||
	wattrset(win, selected ? button_active_attr : button_inactive_attr);
 | 
						wattrset(win, selected ? dlg.button_active.atr
 | 
				
			||||||
 | 
							 : dlg.button_inactive.atr);
 | 
				
			||||||
	waddstr(win, "<");
 | 
						waddstr(win, "<");
 | 
				
			||||||
	temp = strspn(label, " ");
 | 
						temp = strspn(label, " ");
 | 
				
			||||||
	label += temp;
 | 
						label += temp;
 | 
				
			||||||
	wattrset(win, selected ? button_label_active_attr
 | 
						wattrset(win, selected ? dlg.button_label_active.atr
 | 
				
			||||||
		 : button_label_inactive_attr);
 | 
							 : dlg.button_label_inactive.atr);
 | 
				
			||||||
	for (i = 0; i < temp; i++)
 | 
						for (i = 0; i < temp; i++)
 | 
				
			||||||
		waddch(win, ' ');
 | 
							waddch(win, ' ');
 | 
				
			||||||
	wattrset(win, selected ? button_key_active_attr
 | 
						wattrset(win, selected ? dlg.button_key_active.atr
 | 
				
			||||||
		 : button_key_inactive_attr);
 | 
							 : dlg.button_key_inactive.atr);
 | 
				
			||||||
	waddch(win, label[0]);
 | 
						waddch(win, label[0]);
 | 
				
			||||||
	wattrset(win, selected ? button_label_active_attr
 | 
						wattrset(win, selected ? dlg.button_label_active.atr
 | 
				
			||||||
		 : button_label_inactive_attr);
 | 
							 : dlg.button_label_inactive.atr);
 | 
				
			||||||
	waddstr(win, (char *)label + 1);
 | 
						waddstr(win, (char *)label + 1);
 | 
				
			||||||
	wattrset(win, selected ? button_active_attr : button_inactive_attr);
 | 
						wattrset(win, selected ? dlg.button_active.atr
 | 
				
			||||||
 | 
							 : dlg.button_inactive.atr);
 | 
				
			||||||
	waddstr(win, ">");
 | 
						waddstr(win, ">");
 | 
				
			||||||
	wmove(win, y, x + temp + 1);
 | 
						wmove(win, y, x + temp + 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -326,7 +361,7 @@ void draw_shadow(WINDOW * win, int y, int x, int height, int width)
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (has_colors()) {	/* Whether terminal supports color? */
 | 
						if (has_colors()) {	/* Whether terminal supports color? */
 | 
				
			||||||
		wattrset(win, shadow_attr);
 | 
							wattrset(win, dlg.shadow.atr);
 | 
				
			||||||
		wmove(win, y + height, x + 2);
 | 
							wmove(win, y + height, x + 2);
 | 
				
			||||||
		for (i = 0; i < width; i++)
 | 
							for (i = 0; i < width; i++)
 | 
				
			||||||
			waddch(win, winch(win) & A_CHARTEXT);
 | 
								waddch(win, winch(win) & A_CHARTEXT);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,17 +53,18 @@ int dialog_yesno(const char *title, const char *prompt, int height, int width)
 | 
				
			||||||
	dialog = newwin(height, width, y, x);
 | 
						dialog = newwin(height, width, y, x);
 | 
				
			||||||
	keypad(dialog, TRUE);
 | 
						keypad(dialog, TRUE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	draw_box(dialog, 0, 0, height, width, dialog_attr, border_attr);
 | 
						draw_box(dialog, 0, 0, height, width,
 | 
				
			||||||
	wattrset(dialog, border_attr);
 | 
							 dlg.dialog.atr, dlg.border.atr);
 | 
				
			||||||
 | 
						wattrset(dialog, dlg.border.atr);
 | 
				
			||||||
	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
						mvwaddch(dialog, height - 3, 0, ACS_LTEE);
 | 
				
			||||||
	for (i = 0; i < width - 2; i++)
 | 
						for (i = 0; i < width - 2; i++)
 | 
				
			||||||
		waddch(dialog, ACS_HLINE);
 | 
							waddch(dialog, ACS_HLINE);
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	waddch(dialog, ACS_RTEE);
 | 
						waddch(dialog, ACS_RTEE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_title(dialog, title, width);
 | 
						print_title(dialog, title, width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wattrset(dialog, dialog_attr);
 | 
						wattrset(dialog, dlg.dialog.atr);
 | 
				
			||||||
	print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
						print_autowrap(dialog, prompt, width - 2, 1, 3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print_buttons(dialog, height, width, 0);
 | 
						print_buttons(dialog, height, width, 0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue