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