/* fe_ban_list_end() returns TRUE if consumed, FALSE otherwise */ gboolean fe_ban_list_end (struct session *sess, int rplcode) { banlist_info *banl = sess->res->banlist; int i; if (!banl) return FALSE; for (i = 0; i < MODE_CT; i++) if (modes[i].endcode == rplcode) break; if (i == MODE_CT) { /* printf ("Unexpected rplcode value in fe_ban_list_end: %d\n", rplcode); */ return FALSE; } if (banl->pending & modes[i].bit) { banl->pending &= ~modes[i].bit; if (!banl->pending) { gtk_widget_set_sensitive (banl->but_refresh, TRUE); banlist_sensitize (banl); } return TRUE; } else return FALSE; }
static void banlist_select_changed (GtkWidget *item, banlist_info *banl) { GList *list; if (banl->line_ct == 0) banl->select_ct = 0; else { list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (item), NULL); banl->select_ct = g_list_length (list); g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL); g_list_free (list); } banlist_sensitize (banl); }
/** * * Performs the actual refresh operations. * */ static void banlist_do_refresh (banlist_info *banl) { session *sess = banl->sess; char tbuf[256]; int i; char *tbufp; banlist_sensitize (banl); if (sess->server->connected) { GtkListStore *store; g_snprintf (tbuf, sizeof tbuf, DISPLAY_NAME": Ban List (%s, %s)", sess->channel, sess->server->servername); mg_set_title (banl->window, tbuf); store = get_store (sess); gtk_list_store_clear (store); banl->line_ct = 0; banl->pending = banl->checked; if (banl->pending) { tbufp = tbuf + g_snprintf (tbuf, sizeof tbuf, "quote mode %s +", sess->channel); for (i = 0; i < MODE_CT; i++) if (banl->pending & 1<<i) { *tbufp++ = modes[i].letter; } *tbufp = 0; handle_command (sess, tbuf, FALSE); } } else { fe_message (_("Not connected."), FE_MSG_ERROR); } }