Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>
ui: refactor renders from main window to tabs/windows
src/ui.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++---------
diff --git a/src/ui.c b/src/ui.c index 4c8eb8aafc239a7a3bb344b70965704ff5a58535..1575acd21966b194ec3ee4c6fc9fb6ae68dbedd5 100644 --- a/src/ui.c +++ b/src/ui.c @@ -636,6 +636,79 @@ return 1; } static int +render_main_window_title(TickitWindow *win, TickitRenderBuffer *render_buffer) +{ + tickit_renderbuffer_savepen(render_buffer); + + TickitPen *pen = tickit_pen_new_attrs( + TICKIT_PEN_FG, 0, + TICKIT_PEN_BG, 6, + TICKIT_PEN_BOLD, 1, + 0); + + tickit_renderbuffer_setpen(render_buffer, pen); + + const char *welcome = "Hello, welcome to seamus"; + int cols = tickit_window_cols(win); + int len = strlen(welcome); + int pad = (cols - len) / 2; + if (pad < 0) pad = 0; + + tickit_renderbuffer_goto(render_buffer, 0, pad); + tickit_renderbuffer_text(render_buffer, welcome); + + tickit_renderbuffer_restore(render_buffer); + + return 0; +} + +static int +render_main_window_tabs(TickitWindow *win, TickitRenderBuffer *render_buffer, + struct seamus_frontend *seamus) +{ + const char *tab_queue = "[QUEUE \xe2\x97\x8f]"; + const char *tab_library = "[LIBRARY]"; + int active_is_queue = 1; + + if (seamus->current_window == WINDOW_LIBRARY) { + tab_queue = "[QUEUE]"; + tab_library = "[LIBRARY \xe2\x97\x8f]"; + active_is_queue = 0; + } + + const char *tab[2] = { tab_queue, tab_library }; + int total = strlen(tab[0]) + 1 + strlen(tab[1]); + int cols = tickit_window_cols(win); + int pad = (cols - total) / 2; + if (pad < 0) pad = 0; + + tickit_renderbuffer_goto(render_buffer, 1, pad); + + for (int i = 0; i < 2; i++) { + int active = (i == 0 && active_is_queue) || (i == 1 && !active_is_queue); + + if (active) { + tickit_renderbuffer_savepen(render_buffer); + TickitPen *tab_pen = tickit_pen_new_attrs( + TICKIT_PEN_BOLD, 1, + 0); + + tickit_renderbuffer_setpen(render_buffer, tab_pen); + tickit_renderbuffer_text(render_buffer, tab[i]); + tickit_renderbuffer_restore(render_buffer); + } else { + tickit_renderbuffer_text(render_buffer, tab[i]); + } + + if (i == 0) { + tickit_renderbuffer_text(render_buffer, " "); + } + } + + return 0; +} + +static int render_main_window(TickitWindow *win, TickitEventFlags flags, void *_info, void *data) { (void)win; @@ -647,20 +720,8 @@ struct seamus_frontend *seamus = (struct seamus_frontend*) data; tickit_renderbuffer_eraserect(render_buffer, &info->rect); - tickit_renderbuffer_goto(render_buffer, 0, 0); - { - tickit_renderbuffer_savepen(render_buffer); - - TickitPen *pen = tickit_pen_new_attrs( - TICKIT_PEN_FG, 0, - TICKIT_PEN_BG, 6, - TICKIT_PEN_BOLD, 1, - 0); - - tickit_renderbuffer_setpen(render_buffer, pen); - tickit_renderbuffer_text(render_buffer, "Hello, welcome to seamus"); - tickit_renderbuffer_restore(render_buffer); - } + render_main_window_title(win, render_buffer); + render_main_window_tabs(win, render_buffer, seamus); if (seamus->status->length == 0) { tickit_renderbuffer_goto(render_buffer, QUEUE_START_LINE, 0);