diff options
Diffstat (limited to 'ui.c')
-rw-r--r-- | ui.c | 82 |
1 files changed, 0 insertions, 82 deletions
@@ -1,82 +0,0 @@ -#define NCURSES_WIDECHAR 1 - -#include <ncurses.h> -#include <math.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> -#include "ui.h" - -const char *uload = "█"; - -PROGRESS_BAR* new_progress_bar(WINDOW* scr, float total) { - PROGRESS_BAR *bar = (PROGRESS_BAR*)malloc(sizeof(PROGRESS_BAR)); - bar->scr = scr; - bar->total = total; - bar->current = 0; - return bar; -} - -void bar_step(PROGRESS_BAR* bar, float step){ - bar->current += step; - - int x, y; - int hx, hy; - - getmaxyx(bar->scr, y, x); - - hx = x/2; - hy = y/2; - - float total = (bar->current/bar->total); - - wmove(bar->scr, hy-1, 0); - for (int i = 0; i < ((float)x*total); i++) - wprintw(bar->scr, uload); - - wmove(bar->scr, hy, hx-4); - wprintw(bar->scr,"%03.0f%% ", total*100); - - int len = floor(log10(abs((int)bar->total))) + 3; - - wmove(bar->scr, hy+1, hx - len); - wprintw(bar->scr, "%.0f/%.0f", bar->current, bar->total); - - - 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); - } -} |