Author: Pedro Lucas Porcellis <porcellis@eletrotupi.com>
ui: render a colored indicator for the window tabs
src/ui.c | 50 +++++++++++++++++++++++++++++++-------------------
diff --git a/src/ui.c b/src/ui.c index e8e0d2d2ed996a6c185d9d769791d59787edfeb4..9b1d82f21a69a8de65e7849f5f5e3f91649d14ff 100644 --- a/src/ui.c +++ b/src/ui.c @@ -679,43 +679,55 @@ 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; + int active = seamus->current_window; + const char *names[2] = { "QUEUE", "LIBRARY" }; - if (seamus->current_window == WINDOW_LIBRARY) { - tab_queue = "[QUEUE]"; - tab_library = "[LIBRARY \xe2\x97\x8f]"; - active_is_queue = 0; + int total = 0; + for (int i = 0; i < 2; i++) { + int w = strlen(names[i]) + 2; + if (i == active) w += 2; + total += w; } + total += 1; - 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); + TickitPen *bold = tickit_pen_new_attrs(TICKIT_PEN_BOLD, 1, 0); + TickitPen *green = tickit_pen_new_attrs( + TICKIT_PEN_FG, 2, + TICKIT_PEN_BOLD, 1, + 0); + for (int i = 0; i < 2; i++) { - int active = (i == 0 && active_is_queue) || (i == 1 && !active_is_queue); + if (i == active) { + tickit_renderbuffer_savepen(render_buffer); + tickit_renderbuffer_setpen(render_buffer, bold); + tickit_renderbuffer_text(render_buffer, "["); + tickit_renderbuffer_text(render_buffer, names[i]); + tickit_renderbuffer_text(render_buffer, " "); + tickit_renderbuffer_restore(render_buffer); - if (active) { tickit_renderbuffer_savepen(render_buffer); - TickitPen *tab_pen = tickit_pen_new_attrs( - TICKIT_PEN_BOLD, 1, - 0); + tickit_renderbuffer_setpen(render_buffer, green); + tickit_renderbuffer_text(render_buffer, "\xe2\x97\x8f"); + tickit_renderbuffer_restore(render_buffer); - tickit_renderbuffer_setpen(render_buffer, tab_pen); - tickit_renderbuffer_text(render_buffer, tab[i]); + tickit_renderbuffer_savepen(render_buffer); + tickit_renderbuffer_setpen(render_buffer, bold); + tickit_renderbuffer_text(render_buffer, "]"); tickit_renderbuffer_restore(render_buffer); } else { - tickit_renderbuffer_text(render_buffer, tab[i]); + tickit_renderbuffer_text(render_buffer, "["); + tickit_renderbuffer_text(render_buffer, names[i]); + tickit_renderbuffer_text(render_buffer, "]"); } - if (i == 0) { + if (i == 0) tickit_renderbuffer_text(render_buffer, " "); - } } return 0;