* please see the file GPL in the top level source directory.
*/
-#include <lib-lib/lib-lib.h>
+#include <lib-ui/lib-ui.h>
-#include <termios.h>
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#elif defined(HAVE_IOCTL_H)
-# include <ioctl.h>
-#endif
#include <langinfo.h>
+#include <termios.h>
#include <lib-lua/lib-lua.h>
#include <lib-sys/unix.h>
#include <lib-sys/mutt_signal.h>
-#include "curses.h"
#include "menu.h"
#include "enter.h"
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;
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)
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;
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);
-}