 a72f3e2b82
			
		
	
	
	a72f3e2b82
	
	
	
		
			
			Remove the old hotkeys feature, and replace it by an interactive string
search.
From nconfig help:
Searching: pressing '/' triggers interactive search mode.
           nconfig performs a case insensitive search for the string
           in the menu prompts (no regex support).
           Pressing the up/down keys highlights the previous/next
           matching item. Backspace removes one character from the
           match string. Pressing either '/' again or ESC exits
           search mode. All other keys behave normally.
Miscellaneous other changes (including Rundy's and Justin's input).
Signed-off-by: Nir Tzachar <nir.tzachar@gmail.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
		
	
			
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			1.9 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
 | |
|  * Released under the terms of the GNU GPL v2.0.
 | |
|  *
 | |
|  * Derived from menuconfig.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #include <ctype.h>
 | |
| #include <errno.h>
 | |
| #include <fcntl.h>
 | |
| #include <limits.h>
 | |
| #include <stdarg.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <unistd.h>
 | |
| #include <locale.h>
 | |
| #include <curses.h>
 | |
| #include <menu.h>
 | |
| #include <panel.h>
 | |
| #include <form.h>
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <time.h>
 | |
| #include <sys/time.h>
 | |
| 
 | |
| #include "ncurses.h"
 | |
| 
 | |
| #define max(a, b) ({\
 | |
| 		typeof(a) _a = a;\
 | |
| 		typeof(b) _b = b;\
 | |
| 		_a > _b ? _a : _b; })
 | |
| 
 | |
| #define min(a, b) ({\
 | |
| 		typeof(a) _a = a;\
 | |
| 		typeof(b) _b = b;\
 | |
| 		_a < _b ? _a : _b; })
 | |
| 
 | |
| typedef enum {
 | |
| 	NORMAL = 1,
 | |
| 	MAIN_HEADING,
 | |
| 	MAIN_MENU_BOX,
 | |
| 	MAIN_MENU_FORE,
 | |
| 	MAIN_MENU_BACK,
 | |
| 	MAIN_MENU_GREY,
 | |
| 	MAIN_MENU_HEADING,
 | |
| 	SCROLLWIN_TEXT,
 | |
| 	SCROLLWIN_HEADING,
 | |
| 	SCROLLWIN_BOX,
 | |
| 	DIALOG_TEXT,
 | |
| 	DIALOG_MENU_FORE,
 | |
| 	DIALOG_MENU_BACK,
 | |
| 	DIALOG_BOX,
 | |
| 	INPUT_BOX,
 | |
| 	INPUT_HEADING,
 | |
| 	INPUT_TEXT,
 | |
| 	INPUT_FIELD,
 | |
| 	FUNCTION_TEXT,
 | |
| 	FUNCTION_HIGHLIGHT,
 | |
| 	ATTR_MAX
 | |
| } attributes_t;
 | |
| extern attributes_t attributes[];
 | |
| 
 | |
| typedef enum {
 | |
| 	F_HELP = 1,
 | |
| 	F_SYMBOL = 2,
 | |
| 	F_INSTS = 3,
 | |
| 	F_CONF = 4,
 | |
| 	F_BACK = 5,
 | |
| 	F_SAVE = 6,
 | |
| 	F_LOAD = 7,
 | |
| 	F_SEARCH = 8,
 | |
| 	F_EXIT = 9,
 | |
| } function_key;
 | |
| 
 | |
| void set_colors(void);
 | |
| 
 | |
| /* this changes the windows attributes !!! */
 | |
| void print_in_middle(WINDOW *win,
 | |
| 		int starty,
 | |
| 		int startx,
 | |
| 		int width,
 | |
| 		const char *string,
 | |
| 		chtype color);
 | |
| int get_line_length(const char *line);
 | |
| int get_line_no(const char *text);
 | |
| const char *get_line(const char *text, int line_no);
 | |
| void fill_window(WINDOW *win, const char *text);
 | |
| int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...);
 | |
| int dialog_inputbox(WINDOW *main_window,
 | |
| 		const char *title, const char *prompt,
 | |
| 		const char *init, char *result, int result_len);
 | |
| void refresh_all_windows(WINDOW *main_window);
 | |
| void show_scroll_win(WINDOW *main_window,
 | |
| 		const char *title,
 | |
| 		const char *text);
 |