From c573d3b7954296d95a0f8a79b8ac2ca261d86a02 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Giovanini" Date: Thu, 15 Feb 2024 23:20:23 +0100 Subject: fix: Add better support for utf-8 --- ui.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'ui.c') diff --git a/ui.c b/ui.c index 2e779e3..9762859 100644 --- a/ui.c +++ b/ui.c @@ -1,6 +1,10 @@ -#include "math.h" +#define NCURSES_WIDECHAR 1 + #include +#include #include +#include +#include #include "ui.h" const char *uload = "█"; @@ -42,3 +46,37 @@ void bar_step(PROGRESS_BAR* bar, float step){ wmove(bar->scr,0,0); wrefresh(bar->scr); } + + +TEXT_BOX* new_text_box(WINDOW* scr, int length) { + TEXT_BOX *text = (TEXT_BOX*)malloc(sizeof(TEXT_BOX)); + text->scr = scr; + text->length = length; + text->current = 0; + text->text = malloc(sizeof(char)*(length+1)); + memset(text->text, '\0', length); + return text; +} + +void get_char(TEXT_BOX* text) { + while(1){ + wchar_t c; + get_wch((wint_t*)&c); + + switch(c) { + case KEY_BACKSPACE: + if (text->current > 0) { + text->text[text->current--] = '\0'; + } + break; + default: + if (text->current < (text->length-2)) { + text->text[text->current] = c; + text->text[++text->current] = '\0'; + } + } + move(0,0); + wrefresh(text->scr); + wprintw(text->scr, "%*ls", text->current,text->text); + } +} -- cgit v1.2.3