static void mainbar_add_items(MAIN_WINDOW_REC *window) { mainbar = window->statusbar; mainbar_window = window; clock_item = statusbar_item_create(mainbar, 7, FALSE, statusbar_clock); nick_item = statusbar_item_create(mainbar, 2, FALSE, statusbar_nick); channel_item = statusbar_item_create(mainbar, 2, FALSE, statusbar_channel); activity_item = statusbar_item_create(mainbar, 0, FALSE, statusbar_activity); lag_item = statusbar_item_create(mainbar, 0, FALSE, statusbar_lag); }
static void topicbar_create(void) { if (topic_bar != NULL) return; topic_bar = statusbar_create(STATUSBAR_POS_UP, 0); topic_item = statusbar_item_create(topic_bar, 0, FALSE, statusbar_topic); statusbar_redraw(topic_bar); signal_add("window changed", (SIGNAL_FUNC) sig_statusbar_topic_redraw); signal_add("window item changed", (SIGNAL_FUNC) sig_statusbar_topic_redraw); signal_add("channel topic changed", (SIGNAL_FUNC) sig_statusbar_topic_redraw); signal_add("query address changed", (SIGNAL_FUNC) sig_statusbar_topic_redraw); }
void statusbar_recreate_items(STATUSBAR_REC *bar) { GSList *tmp; /* destroy */ while (bar->items != NULL) statusbar_item_destroy(bar->items->data); /* create */ for (tmp = bar->config->items; tmp != NULL; tmp = tmp->next) { SBAR_ITEM_CONFIG_REC *rec = tmp->data; statusbar_item_create(bar, rec); } statusbar_redraw(bar, TRUE); }
static void sig_statusbar_more_check(WINDOW_REC *window) { g_return_if_fail(window != NULL); if (!is_window_visible(window)) return; if (!WINDOW_GUI(window)->bottom) { if (more_item == NULL) { more_item = statusbar_item_create(mainbar, 10, FALSE, statusbar_more); statusbar_redraw(mainbar); } } else if (more_item != NULL) { statusbar_item_remove(more_item); more_item = NULL; } }
STATUSBAR_REC *statusbar_create(STATUSBAR_GROUP_REC *group, STATUSBAR_CONFIG_REC *config, MAIN_WINDOW_REC *parent_window) { STATUSBAR_REC *bar; THEME_REC *theme; GSList *tmp; char *name, *value; g_return_val_if_fail(group != NULL, NULL); g_return_val_if_fail(config != NULL, NULL); g_return_val_if_fail(config->type != STATUSBAR_TYPE_WINDOW || parent_window != NULL, NULL); bar = g_new0(STATUSBAR_REC, 1); group->bars = g_slist_append(group->bars, bar); bar->group = group; bar->config = config; bar->parent_window = parent_window; irssi_set_dirty(); bar->dirty = TRUE; bar->dirty_xpos = 0; signal_remove("terminal resized", (SIGNAL_FUNC) sig_terminal_resized); signal_remove("mainwindow resized", (SIGNAL_FUNC) sig_mainwindow_resized); signal_remove("mainwindow moved", (SIGNAL_FUNC) sig_mainwindow_resized); if (config->type == STATUSBAR_TYPE_ROOT) { /* top/bottom of the screen */ mainwindows_reserve_lines(config->placement == STATUSBAR_TOP, config->placement == STATUSBAR_BOTTOM); theme = current_theme; } else { /* top/bottom of the window */ parent_window->statusbars = g_slist_append(parent_window->statusbars, bar); mainwindow_set_statusbar_lines(parent_window, config->placement == STATUSBAR_TOP, config->placement == STATUSBAR_BOTTOM); theme = parent_window != NULL && parent_window->active != NULL && parent_window->active->theme != NULL ? parent_window->active->theme : current_theme; } signal_add("terminal resized", (SIGNAL_FUNC) sig_terminal_resized); signal_add("mainwindow resized", (SIGNAL_FUNC) sig_mainwindow_resized); signal_add("mainwindow moved", (SIGNAL_FUNC) sig_mainwindow_resized); /* get background color from sb_background abstract */ name = g_strdup_printf("{sb_%s_bg}", config->name); value = theme_format_expand(theme, name); g_free(name); if (*value == '\0') { /* try with the statusbar group name */ g_free(value); name = g_strdup_printf("{sb_%s_bg}", group->name); value = theme_format_expand(theme, name); g_free(name); if (*value == '\0') { /* fallback to default statusbar background (also provides backwards compatibility..) */ g_free(value); value = theme_format_expand(theme, "{sb_background}"); } } if (*value == '\0') { g_free(value); value = g_strdup("%8"); } bar->color = g_strconcat("%n", value, NULL); g_free(value); statusbars_recalc_ypos(bar); signal_emit("statusbar created", 1, bar); /* create the items to statusbar */ for (tmp = config->items; tmp != NULL; tmp = tmp->next) { SBAR_ITEM_CONFIG_REC *rec = tmp->data; statusbar_item_create(bar, rec); } return bar; }
static void sidebar_add_items(MAIN_WINDOW_REC *window) { window->statusbar_channel_item = statusbar_item_create(window->statusbar, 3, FALSE, statusbar_channel); }