X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-ui%2Fcurs_lib.c;h=babbc72c48a230a4b405736c813d005ea5856083;hb=eab27dfc9eb0f7b21b560f37ec28f48cfbfa9f40;hp=53609b5b9c3184ad0c7b6dd95ce7c0fd8afce792;hpb=8e39affbf1cd8a2a5ff5c9991650d54fdcea4997;p=apps%2Fmadmutt.git diff --git a/lib-ui/curs_lib.c b/lib-ui/curs_lib.c index 53609b5..babbc72 100644 --- a/lib-ui/curs_lib.c +++ b/lib-ui/curs_lib.c @@ -11,21 +11,15 @@ * please see the file GPL in the top level source directory. */ -#include +#include -#include -#ifdef HAVE_SYS_IOCTL_H -# include -#elif defined(HAVE_IOCTL_H) -# include -#endif #include +#include #include #include #include -#include "curses.h" #include "menu.h" #include "enter.h" @@ -41,27 +35,6 @@ ssize_t UngetCount = 0; static ssize_t UngetBufLen = 0; static event_t *KeyEvent; -void mutt_refresh (void) -{ - /* don't refresh when we are waiting for a child. */ - if (option (OPTKEEPQUIET)) - return; - - /* don't refresh in the middle of macros unless necessary */ - if (UngetCount && !option (OPTFORCEREFRESH)) - return; - - /* else */ - wrefresh (stdscr); -} - -void mutt_need_hard_redraw (void) -{ - keypad (stdscr, TRUE); - clearok (stdscr, TRUE); - set_option (OPTNEEDREDRAW); -} - event_t mutt_getch (void) { int ch; @@ -317,20 +290,14 @@ void mutt_show_error (void) SETCOLOR (MT_COLOR_NORMAL); } -void mutt_endwin (const char *msg) +void curses_initialize(void) { - if (!option (OPTNOCURSES)) { - CLEARLINE (LINES - 1); - - wattrset (stdscr, A_NORMAL); - mutt_refresh (); - endwin (); - } - - if (msg && *msg) { - puts (msg); - fflush (stdout); - } + ci_start_color(); + keypad(stdscr, TRUE); + cbreak(); + noecho(); + typeahead (-1); /* simulate smooth scrolling */ + meta(stdscr, TRUE); } void _mutt_perror (const char *s, const char* filename, int line) @@ -339,6 +306,27 @@ void _mutt_perror (const char *s, const char* filename, int line) mutt_error ("%s: %s (errno = %d) from %s:%i", s, p ? p : _("unknown error"), errno, filename, line); } +/* + * prompts the user to enter a keystroke, and displays the octal value back + * to the user. + */ +void mutt_what_key (void) +{ + int ch; + + mvwprintw (stdscr, LINES - 1, 0, _("Enter keys (^G to abort): ")); + do { + ch = wgetch (stdscr); + if (ch != ERR && ch != ctrl ('G')) { + mutt_message (_("Char = %s, Octal = %o, Decimal = %d"), + km_keyname (ch), ch, ch); + } + } + while (ch != ERR && ch != ctrl ('G')); + + mutt_flushinp (); +} + int mutt_any_key_to_continue (const char *s) { struct termios t; @@ -655,37 +643,3 @@ void mutt_paddstr (int n, const char *s) while (n-- > 0) waddch (stdscr, ' '); } - -/* this routine should be called after receiving SIGWINCH */ -void mutt_resize_screen (void) -{ - char *cp; - int fd; - struct winsize w; - - int rows, cols; - - rows = -1; - cols = -1; - if ((fd = open ("/dev/tty", O_RDONLY)) != -1) { - if (ioctl (fd, TIOCGWINSZ, &w) != -1) { - rows = w.ws_row; - cols = w.ws_col; - } - close (fd); - } - if (rows <= 0) { - if ((cp = getenv ("LINES")) != NULL) { - rows = atoi (cp); - } - else - rows = 24; - } - if (cols <= 0) { - if ((cp = getenv ("COLUMNS")) != NULL) - cols = atoi (cp); - else - cols = 80; - } - resizeterm (rows, cols); -}