void status_bar_set_all_inactive(void) { int i = 0; for (i = 0; i < 12; i++) { is_active[i] = FALSE; is_new[i] = FALSE; _mark_inactive(i); } g_hash_table_remove_all(remaining_active); g_hash_table_remove_all(remaining_new); _status_bar_draw(); }
void status_bar_resize(void) { int rows, cols; getmaxyx(stdscr, rows, cols); werase(status_bar); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); mvwin(status_bar, rows-2, 0); wresize(status_bar, 1, cols); wbkgd(status_bar, theme_attrs(THEME_STATUS_TEXT)); wattron(status_bar, bracket_attrs); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, bracket_attrs); if (message) { char *time_pref = prefs_get_string(PREF_TIME_STATUSBAR); gchar *date_fmt = NULL; if (g_strcmp0(time_pref, "off") == 0) { date_fmt = g_strdup(""); } else { date_fmt = g_date_time_format(last_time, time_pref); } assert(date_fmt != NULL); size_t len = strlen(date_fmt); g_free(date_fmt); if (g_strcmp0(time_pref, "off") != 0) { /* 01234567890123456 * [HH:MM] message */ mvwprintw(status_bar, 0, 5 + len, message); } else { mvwprintw(status_bar, 0, 1, message); } prefs_free_string(time_pref); } if (last_time) { g_date_time_unref(last_time); } last_time = g_date_time_new_now_local(); _status_bar_draw(); }
void status_bar_current(int i) { if (i == 0) { current = 10; } else if (i > 10) { current = 11; } else { current = i; } int cols = getmaxx(stdscr); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); wattron(status_bar, bracket_attrs); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, bracket_attrs); _status_bar_draw(); }
void status_bar_clear_message(void) { if (message) { free(message); message = NULL; } werase(status_bar); int cols = getmaxx(stdscr); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); wattron(status_bar, bracket_attrs); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, bracket_attrs); _status_bar_draw(); }
void status_bar_inactive(const int win) { int true_win = win; if (true_win == 0) { true_win = 10; } // extra windows if (true_win > 10) { g_hash_table_remove(remaining_active, GINT_TO_POINTER(true_win)); g_hash_table_remove(remaining_new, GINT_TO_POINTER(true_win)); // still have new windows if (g_hash_table_size(remaining_new) != 0) { is_active[11] = TRUE; is_new[11] = TRUE; _mark_new(11); // still have active windows } else if (g_hash_table_size(remaining_active) != 0) { is_active[11] = TRUE; is_new[11] = FALSE; _mark_active(11); // no active or new windows } else { is_active[11] = FALSE; is_new[11] = FALSE; _mark_inactive(11); } // visible window indicators } else { is_active[true_win] = FALSE; is_new[true_win] = FALSE; _mark_inactive(true_win); } _status_bar_draw(); }
void status_bar_print_message(const char * const msg) { werase(status_bar); if (message) { free(message); } message = strdup(msg); char *time_pref = prefs_get_string(PREF_TIME_STATUSBAR); gchar *date_fmt = NULL; if (g_strcmp0(time_pref, "off") == 0) { date_fmt = g_strdup(""); } else { date_fmt = g_date_time_format(last_time, time_pref); } assert(date_fmt != NULL); size_t len = strlen(date_fmt); g_free(date_fmt); if (g_strcmp0(time_pref, "off") != 0) { mvwprintw(status_bar, 0, 5 + len, message); } else { mvwprintw(status_bar, 0, 1, message); } prefs_free_string(time_pref); int cols = getmaxx(stdscr); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); wattron(status_bar, bracket_attrs); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, bracket_attrs); _status_bar_draw(); }
void status_bar_new(const int win) { int true_win = win; if (true_win == 0) { true_win = 10; } if (true_win > 10) { g_hash_table_add(remaining_active, GINT_TO_POINTER(true_win)); g_hash_table_add(remaining_new, GINT_TO_POINTER(true_win)); is_active[11] = TRUE; is_new[11] = TRUE; _mark_new(11); } else { is_active[true_win] = TRUE; is_new[true_win] = TRUE; _mark_new(true_win); } _status_bar_draw(); }
void status_bar_update_virtual(void) { _status_bar_draw(); }