void fe_userlist_insert (session *sess, struct User *newuser, int row, bool sel) { GtkTreeModel *model = static_cast<GtkTreeModel*>(sess->res->user_model); GdkPixbuf *pix = get_user_icon (sess->server, newuser); GtkTreeIter iter; int nick_color = 0; if (prefs.hex_away_track && newuser->away) nick_color = COL_AWAY; else if (prefs.hex_gui_ulist_color) nick_color = text_color_of(newuser->nick); std::string nick(newuser->nick); if (!prefs.hex_gui_ulist_icons) { if (newuser->prefix[0] || newuser->prefix[0] != ' ') nick.insert(nick.begin(), newuser->prefix[0]); pix = NULL; } gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, row, COL_PIX, pix, COL_NICK, nick.c_str(), COL_HOST, newuser->hostname ? newuser->hostname->c_str() : nullptr, COL_USER, newuser, COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, -1); /* is it me? */ if (newuser->me && sess->gui->nick_box) { if (!sess->gui->is_tab || sess == current_tab) mg_set_access_icon (sess->gui, pix, sess->server->is_away); } /* is it the front-most tab? */ if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) == model) { if (sel) gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (sess->gui->user_tree)), &iter); } }
void fe_userlist_rehash (session *sess, struct User const *user) { auto result = find_row (GTK_TREE_VIEW (sess->gui->user_tree), static_cast<GtkTreeModel*>(sess->res->user_model), user); if (!result.first) return; int nick_color = 0; if (prefs.hex_away_track && user->away) nick_color = COL_AWAY; else if (prefs.hex_gui_ulist_color) nick_color = text_color_of(user->nick); gtk_list_store_set (GTK_LIST_STORE (sess->res->user_model), result.first.get(), COL_HOST, user->hostname ? user->hostname->c_str() : nullptr, COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, -1); }
void fe_userlist_rehash (session *sess, struct User *user) { GtkTreeIter *iter; int sel; int nick_color = 0; iter = find_row (GTK_TREE_VIEW (sess->gui->user_tree), sess->res->user_model, user, &sel); if (!iter) return; if (prefs.hex_away_track && user->away) nick_color = COL_AWAY; else if (prefs.hex_gui_ulist_color) nick_color = text_color_of(user->nick); gtk_list_store_set (GTK_LIST_STORE (sess->res->user_model), iter, COL_HOST, user->hostname, COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, -1); }
static attr_t get_trouble_color(const char *stat) { attr_t res = curses_color_attr(CLR_GRAY, 0); const struct statcolor *clr; for (clr = default_colors; clr->txt; clr++) { if (stat && !strcmp(clr->txt, stat)) { #ifdef STATUS_COLORS /* Check if we have a color enabled with statuscolors */ if (!iflags.use_status_colors) return curses_color_attr(CLR_GRAY, 0); /* no color configured */ struct color_option stat_color; stat_color = text_color_of(clr->txt, text_colors); if (stat_color.color == NO_COLOR && !stat_color.attr_bits) return curses_color_attr(CLR_GRAY, 0); if (stat_color.color != NO_COLOR) res = curses_color_attr(stat_color.color, 0); res = curses_color_attr(stat_color.color, 0); int count; for (count = 0; (1 << count) <= stat_color.attr_bits; count++) { if (count != ATR_NONE && (stat_color.attr_bits & (1 << count))) res |= curses_convert_attr(count); } return res; #else return curses_color_attr(clr->color, 0); #endif } } return res; }
void fe_userlist_insert (session *sess, struct User *newuser, int row, int sel) { GtkTreeModel *model = sess->res->user_model; GdkPixbuf *pix = get_user_icon (sess->server, newuser); GtkTreeIter iter; char *nick; int nick_color = 0; if (prefs.hex_away_track && newuser->away) nick_color = COL_AWAY; else if (prefs.hex_gui_ulist_color) nick_color = text_color_of(newuser->nick); nick = newuser->nick; if (!prefs.hex_gui_ulist_icons) { nick = malloc (strlen (newuser->nick) + 2); nick[0] = newuser->prefix[0]; if (!nick[0] || nick[0] == ' ') strcpy (nick, newuser->nick); else strcpy (nick + 1, newuser->nick); pix = NULL; } gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, row, COL_PIX, pix, COL_NICK, nick, COL_HOST, newuser->hostname, COL_USER, newuser, COL_GDKCOLOR, nick_color ? &colors[nick_color] : NULL, -1); if (!prefs.hex_gui_ulist_icons) { free (nick); } /* is it me? */ if (newuser->me && sess->gui->nick_box) { if (!sess->gui->is_tab || sess == current_tab) mg_set_access_icon (sess->gui, pix, sess->server->is_away); } #if 0 if (prefs.hilitenotify && notify_isnotify (sess, newuser->nick)) { gtk_clist_set_foreground ((GtkCList *) sess->gui->user_clist, row, &colors[prefs.nu_color]); } #endif /* is it the front-most tab? */ if (gtk_tree_view_get_model (GTK_TREE_VIEW (sess->gui->user_tree)) == model) { if (sel) gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (sess->gui->user_tree)), &iter); } }