From 7e89874f23e0423a4c9476cba8b566809685cfb9 Mon Sep 17 00:00:00 2001 From: Malfurious Date: Sun, 2 Jul 2023 04:22:41 -0400 Subject: Add convenience ncurses functions Signed-off-by: Malfurious --- curshelpers.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ curshelpers.h | 12 ++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 curshelpers.c create mode 100644 curshelpers.h diff --git a/curshelpers.c b/curshelpers.c new file mode 100644 index 0000000..7b2f1d1 --- /dev/null +++ b/curshelpers.c @@ -0,0 +1,47 @@ +#include +#include + +#include "curshelpers.h" + +void cursinit(void) { + setlocale(LC_ALL, ""); + initscr(); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(FALSE); + timeout(25); + refresh(); +} + +void cursupdate(void) { + update_panels(); + doupdate(); +} + +PANEL *newpan(int h, int w, int y, int x) { + WINDOW *win = newwin(h, w, y, x); + scrollok(win, TRUE); + return new_panel(win); +} + +void delpan(PANEL *pan) { + WINDOW *win = panel_window(pan); + del_panel(pan); + delwin(win); +} + +void reset_panel(PANEL *pan, int h, int w, int y, int x) { + WINDOW *win = panel_window(pan); + wresize(win, h, w); + replace_panel(pan, win); + move_panel(pan, y, x); +} + +int pprintw(PANEL *pan, const char *fmt, ...) { + va_list args; + va_start(args, fmt); + int res = vw_printw(panel_window(pan), fmt, args); + va_end(args); + return res; +} diff --git a/curshelpers.h b/curshelpers.h new file mode 100644 index 0000000..d8bda0d --- /dev/null +++ b/curshelpers.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +extern void cursinit(void); +extern void cursupdate(void); + +extern PANEL *newpan(int h, int w, int y, int x); +extern void delpan(PANEL *pan); +extern void reset_panel(PANEL *pan, int h, int w, int y, int x); +extern int pprintw(PANEL *pan, const char *fmt, ...); -- cgit v1.2.3