10c874100SMasahiro Yamada /* SPDX-License-Identifier: GPL-2.0 */ 2692d97c3Snir.tzachar@gmail.com /* 30c874100SMasahiro Yamada * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com> 4692d97c3Snir.tzachar@gmail.com * 5692d97c3Snir.tzachar@gmail.com * Derived from menuconfig. 6692d97c3Snir.tzachar@gmail.com */ 7692d97c3Snir.tzachar@gmail.com 8692d97c3Snir.tzachar@gmail.com #include <ctype.h> 9692d97c3Snir.tzachar@gmail.com #include <errno.h> 10692d97c3Snir.tzachar@gmail.com #include <fcntl.h> 11692d97c3Snir.tzachar@gmail.com #include <limits.h> 12692d97c3Snir.tzachar@gmail.com #include <stdarg.h> 13692d97c3Snir.tzachar@gmail.com #include <stdlib.h> 14692d97c3Snir.tzachar@gmail.com #include <string.h> 15692d97c3Snir.tzachar@gmail.com #include <unistd.h> 1626561514SMasahiro Yamada #include <ncurses.h> 17692d97c3Snir.tzachar@gmail.com #include <menu.h> 18692d97c3Snir.tzachar@gmail.com #include <panel.h> 19692d97c3Snir.tzachar@gmail.com #include <form.h> 20692d97c3Snir.tzachar@gmail.com 21692d97c3Snir.tzachar@gmail.com #include <stdio.h> 22692d97c3Snir.tzachar@gmail.com #include <time.h> 23692d97c3Snir.tzachar@gmail.com #include <sys/time.h> 24692d97c3Snir.tzachar@gmail.com 25692d97c3Snir.tzachar@gmail.com #define max(a, b) ({\ 26692d97c3Snir.tzachar@gmail.com typeof(a) _a = a;\ 27692d97c3Snir.tzachar@gmail.com typeof(b) _b = b;\ 28692d97c3Snir.tzachar@gmail.com _a > _b ? _a : _b; }) 29692d97c3Snir.tzachar@gmail.com 30692d97c3Snir.tzachar@gmail.com #define min(a, b) ({\ 31692d97c3Snir.tzachar@gmail.com typeof(a) _a = a;\ 32692d97c3Snir.tzachar@gmail.com typeof(b) _b = b;\ 33692d97c3Snir.tzachar@gmail.com _a < _b ? _a : _b; }) 34692d97c3Snir.tzachar@gmail.com 3593487b17SMasahiro Yamada extern int attr_normal; 3693487b17SMasahiro Yamada extern int attr_main_heading; 3793487b17SMasahiro Yamada extern int attr_main_menu_box; 3893487b17SMasahiro Yamada extern int attr_main_menu_fore; 3993487b17SMasahiro Yamada extern int attr_main_menu_back; 4093487b17SMasahiro Yamada extern int attr_main_menu_grey; 4193487b17SMasahiro Yamada extern int attr_main_menu_heading; 4293487b17SMasahiro Yamada extern int attr_scrollwin_text; 4393487b17SMasahiro Yamada extern int attr_scrollwin_heading; 4493487b17SMasahiro Yamada extern int attr_scrollwin_box; 4593487b17SMasahiro Yamada extern int attr_dialog_text; 4693487b17SMasahiro Yamada extern int attr_dialog_menu_fore; 4793487b17SMasahiro Yamada extern int attr_dialog_menu_back; 4893487b17SMasahiro Yamada extern int attr_dialog_box; 4993487b17SMasahiro Yamada extern int attr_input_box; 5093487b17SMasahiro Yamada extern int attr_input_heading; 5193487b17SMasahiro Yamada extern int attr_input_text; 5293487b17SMasahiro Yamada extern int attr_input_field; 5393487b17SMasahiro Yamada extern int attr_function_text; 5493487b17SMasahiro Yamada extern int attr_function_highlight; 55692d97c3Snir.tzachar@gmail.com 56692d97c3Snir.tzachar@gmail.com typedef enum { 57692d97c3Snir.tzachar@gmail.com F_HELP = 1, 58692d97c3Snir.tzachar@gmail.com F_SYMBOL = 2, 59692d97c3Snir.tzachar@gmail.com F_INSTS = 3, 60692d97c3Snir.tzachar@gmail.com F_CONF = 4, 61692d97c3Snir.tzachar@gmail.com F_BACK = 5, 62692d97c3Snir.tzachar@gmail.com F_SAVE = 6, 63692d97c3Snir.tzachar@gmail.com F_LOAD = 7, 64a72f3e2bSNir Tzachar F_SEARCH = 8, 65a72f3e2bSNir Tzachar F_EXIT = 9, 66692d97c3Snir.tzachar@gmail.com } function_key; 67692d97c3Snir.tzachar@gmail.com 68692d97c3Snir.tzachar@gmail.com void set_colors(void); 69692d97c3Snir.tzachar@gmail.com 70*1ba67cd3SJesse Taube typedef int (*extra_key_cb_fn)(int, size_t, size_t, void *); 71*1ba67cd3SJesse Taube 72692d97c3Snir.tzachar@gmail.com /* this changes the windows attributes !!! */ 7308718745SMasahiro Yamada void print_in_middle(WINDOW *win, int y, int width, const char *str, int attrs); 74692d97c3Snir.tzachar@gmail.com int get_line_length(const char *line); 75692d97c3Snir.tzachar@gmail.com int get_line_no(const char *text); 76692d97c3Snir.tzachar@gmail.com const char *get_line(const char *text, int line_no); 77692d97c3Snir.tzachar@gmail.com void fill_window(WINDOW *win, const char *text); 78692d97c3Snir.tzachar@gmail.com int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...); 79692d97c3Snir.tzachar@gmail.com int dialog_inputbox(WINDOW *main_window, 80692d97c3Snir.tzachar@gmail.com const char *title, const char *prompt, 815ea9f64fSCheng Renquan const char *init, char **resultp, int *result_len); 82692d97c3Snir.tzachar@gmail.com void refresh_all_windows(WINDOW *main_window); 83*1ba67cd3SJesse Taube int show_scroll_win_ext(WINDOW *main_window, const char *title, char *text, 84*1ba67cd3SJesse Taube int *vscroll, int *hscroll, 85*1ba67cd3SJesse Taube extra_key_cb_fn extra_key_cb, void *data); 86692d97c3Snir.tzachar@gmail.com void show_scroll_win(WINDOW *main_window, 87692d97c3Snir.tzachar@gmail.com const char *title, 88692d97c3Snir.tzachar@gmail.com const char *text); 89