1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com? 3*53ee8cc1Swenshuai.xi * Released under the terms of the GNU GPL v2.0. 4*53ee8cc1Swenshuai.xi * 5*53ee8cc1Swenshuai.xi * Derived from menuconfig. 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi */ 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi #include <ctype.h> 10*53ee8cc1Swenshuai.xi #include <errno.h> 11*53ee8cc1Swenshuai.xi #include <fcntl.h> 12*53ee8cc1Swenshuai.xi #include <limits.h> 13*53ee8cc1Swenshuai.xi #include <stdarg.h> 14*53ee8cc1Swenshuai.xi #include <stdlib.h> 15*53ee8cc1Swenshuai.xi #include <string.h> 16*53ee8cc1Swenshuai.xi #include <unistd.h> 17*53ee8cc1Swenshuai.xi #include <locale.h> 18*53ee8cc1Swenshuai.xi #include <curses.h> 19*53ee8cc1Swenshuai.xi #include <menu.h> 20*53ee8cc1Swenshuai.xi #include <panel.h> 21*53ee8cc1Swenshuai.xi #include <form.h> 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi #include <stdio.h> 24*53ee8cc1Swenshuai.xi #include <time.h> 25*53ee8cc1Swenshuai.xi #include <sys/time.h> 26*53ee8cc1Swenshuai.xi 27*53ee8cc1Swenshuai.xi #include "ncurses.h" 28*53ee8cc1Swenshuai.xi 29*53ee8cc1Swenshuai.xi #define max(a, b) ({\ 30*53ee8cc1Swenshuai.xi typeof(a) _a = a;\ 31*53ee8cc1Swenshuai.xi typeof(b) _b = b;\ 32*53ee8cc1Swenshuai.xi _a > _b ? _a : _b; }) 33*53ee8cc1Swenshuai.xi 34*53ee8cc1Swenshuai.xi #define min(a, b) ({\ 35*53ee8cc1Swenshuai.xi typeof(a) _a = a;\ 36*53ee8cc1Swenshuai.xi typeof(b) _b = b;\ 37*53ee8cc1Swenshuai.xi _a < _b ? _a : _b; }) 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi typedef enum { 40*53ee8cc1Swenshuai.xi NORMAL = 1, 41*53ee8cc1Swenshuai.xi MAIN_HEADING, 42*53ee8cc1Swenshuai.xi MAIN_MENU_BOX, 43*53ee8cc1Swenshuai.xi MAIN_MENU_FORE, 44*53ee8cc1Swenshuai.xi MAIN_MENU_BACK, 45*53ee8cc1Swenshuai.xi MAIN_MENU_GREY, 46*53ee8cc1Swenshuai.xi MAIN_MENU_HEADING, 47*53ee8cc1Swenshuai.xi SCROLLWIN_TEXT, 48*53ee8cc1Swenshuai.xi SCROLLWIN_HEADING, 49*53ee8cc1Swenshuai.xi SCROLLWIN_BOX, 50*53ee8cc1Swenshuai.xi DIALOG_TEXT, 51*53ee8cc1Swenshuai.xi DIALOG_MENU_FORE, 52*53ee8cc1Swenshuai.xi DIALOG_MENU_BACK, 53*53ee8cc1Swenshuai.xi DIALOG_BOX, 54*53ee8cc1Swenshuai.xi INPUT_BOX, 55*53ee8cc1Swenshuai.xi INPUT_HEADING, 56*53ee8cc1Swenshuai.xi INPUT_TEXT, 57*53ee8cc1Swenshuai.xi INPUT_FIELD, 58*53ee8cc1Swenshuai.xi FUNCTION_TEXT, 59*53ee8cc1Swenshuai.xi FUNCTION_HIGHLIGHT, 60*53ee8cc1Swenshuai.xi ATTR_MAX 61*53ee8cc1Swenshuai.xi } attributes_t; 62*53ee8cc1Swenshuai.xi extern attributes_t attributes[]; 63*53ee8cc1Swenshuai.xi 64*53ee8cc1Swenshuai.xi typedef enum { 65*53ee8cc1Swenshuai.xi F_HELP = 1, 66*53ee8cc1Swenshuai.xi F_SYMBOL = 2, 67*53ee8cc1Swenshuai.xi F_INSTS = 3, 68*53ee8cc1Swenshuai.xi F_CONF = 4, 69*53ee8cc1Swenshuai.xi F_BACK = 5, 70*53ee8cc1Swenshuai.xi F_SAVE = 6, 71*53ee8cc1Swenshuai.xi F_LOAD = 7, 72*53ee8cc1Swenshuai.xi F_SEARCH = 8, 73*53ee8cc1Swenshuai.xi F_EXIT = 9, 74*53ee8cc1Swenshuai.xi } function_key; 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi void set_colors(void); 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi /* this changes the windows attributes !!! */ 79*53ee8cc1Swenshuai.xi void print_in_middle(WINDOW *win, 80*53ee8cc1Swenshuai.xi int starty, 81*53ee8cc1Swenshuai.xi int startx, 82*53ee8cc1Swenshuai.xi int width, 83*53ee8cc1Swenshuai.xi const char *string, 84*53ee8cc1Swenshuai.xi chtype color); 85*53ee8cc1Swenshuai.xi int get_line_length(const char *line); 86*53ee8cc1Swenshuai.xi int get_line_no(const char *text); 87*53ee8cc1Swenshuai.xi const char *get_line(const char *text, int line_no); 88*53ee8cc1Swenshuai.xi void fill_window(WINDOW *win, const char *text); 89*53ee8cc1Swenshuai.xi int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...); 90*53ee8cc1Swenshuai.xi int dialog_inputbox(WINDOW *main_window, 91*53ee8cc1Swenshuai.xi const char *title, const char *prompt, 92*53ee8cc1Swenshuai.xi const char *init, char *result, int result_len); 93*53ee8cc1Swenshuai.xi void refresh_all_windows(WINDOW *main_window); 94*53ee8cc1Swenshuai.xi void show_scroll_win(WINDOW *main_window, 95*53ee8cc1Swenshuai.xi const char *title, 96*53ee8cc1Swenshuai.xi const char *text); 97