static void banlist_refresh (GtkWidget * wid, banlist_info *banl) { /* JG NOTE: Didn't see actual use of wid here, so just forwarding * * this to chanlist_do_refresh because I use it without any widget * * param in chanlist_build_gui_list when the user presses enter * * or apply for the first time if the list has not yet been * * received. * */ banlist_do_refresh (banl); }
static void banlist_unban (GtkWidget * wid, struct session *sess) { int num = 0; num += banlist_unban_inner (wid, sess, FALSE); num += banlist_unban_inner (wid, sess, TRUE); if (num < 1) { fe_message (_("You must select some bans."), FE_MSG_ERROR); return; } banlist_do_refresh (sess); }
void banlist_opengui (struct session *sess) { GtkWidget *vbox1; GtkWidget *bbox; char tbuf[256]; if (sess->res->banlist_window) { mg_bring_tofront (sess->res->banlist_window); return; } if (sess->type != SESS_CHANNEL) { fe_message (_("You can only open the Ban List window while in a channel tab."), FE_MSG_ERROR); return; } snprintf (tbuf, sizeof tbuf, _("XChat: Ban List (%s)"), sess->server->servername); sess->res->banlist_window = mg_create_generic_tab ("BanList", tbuf, FALSE, TRUE, banlist_closegui, sess, 550, 200, &vbox1, sess->server); /* create banlist view */ sess->res->banlist_treeview = banlist_treeview_new (vbox1); bbox = gtk_hbutton_box_new (); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); gtk_box_pack_end (GTK_BOX (vbox1), bbox, 0, 0, 0); gtk_widget_show (bbox); gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_unban, sess, _("Remove")); gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_crop, sess, _("Crop")); gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, banlist_clear, sess, _("Clear")); sess->res->banlist_butRefresh = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, banlist_refresh, sess, _("Refresh")); banlist_do_refresh (sess); gtk_widget_show (sess->res->banlist_window); }
static void banlist_unban (GtkWidget * wid, banlist_info *banl) { int i, num = 0; for (i = 0; i < MODE_CT; i++) num += banlist_unban_inner (wid, banl, i); /* This really should not occur with the redesign */ if (num < 1) { fe_message (_("You must select some bans."), FE_MSG_ERROR); return; } banlist_do_refresh (banl); }
static void banlist_toggle (GtkWidget *item, gpointer data) { banlist_info *banl = data; int i, bit = 0; for (i = 0; i < MODE_CT; i++) if (banl->checkboxes[i] == item) { bit = 1<<i; break; } if (bit) /* Should be gassert() */ { banl->checked &= ~bit; banl->checked |= (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (item)))? bit: 0; banlist_do_refresh (banl); } }
void banlist_opengui (struct session *sess) { banlist_info *banl; int i; GtkWidget *table, *vbox, *bbox; char tbuf[256]; if (sess->type != SESS_CHANNEL || sess->channel[0] == 0) { fe_message (_("You can only open the Ban List window while in a channel tab."), FE_MSG_ERROR); return; } if (!sess->res->banlist) { sess->res->banlist = g_malloc0 (sizeof (banlist_info)); if (!sess->res->banlist) { fe_message (_("Banlist initialization failed."), FE_MSG_ERROR); return; } } banl = sess->res->banlist; if (banl->window) { mg_bring_tofront (banl->window); return; } /* New banlist for this session -- Initialize it */ banl->sess = sess; /* For each mode set its bit in capable/readable/writeable */ for (i = 0; i < MODE_CT; i++) modes[i].tester (banl, i); /* Force on the checkmark in the "Bans" box */ banl->checked = 1<<MODE_BAN; g_snprintf (tbuf, sizeof tbuf, _(DISPLAY_NAME": Ban List (%s)"), sess->server->servername); banl->window = mg_create_generic_tab ("BanList", tbuf, FALSE, TRUE, banlist_closegui, banl, 550, 200, &vbox, sess->server); gtkutil_destroy_on_esc (banl->window); gtk_container_set_border_width (GTK_CONTAINER (banl->window), 3); gtk_box_set_spacing (GTK_BOX (vbox), 3); /* create banlist view */ banl->treeview = banlist_treeview_new (vbox, banl); table = gtk_table_new (1, MODE_CT, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 16); gtk_box_pack_start (GTK_BOX (vbox), table, 0, 0, 0); for (i = 0; i < MODE_CT; i++) { if (!(banl->capable & 1<<i)) continue; banl->checkboxes[i] = gtk_check_button_new_with_label (_(modes[i].name)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (banl->checkboxes[i]), (banl->checked & 1<<i? TRUE: FALSE)); g_signal_connect (G_OBJECT (banl->checkboxes[i]), "toggled", G_CALLBACK (banlist_toggle), banl); gtk_table_attach (GTK_TABLE (table), banl->checkboxes[i], i+1, i+2, 0, 1, GTK_FILL, GTK_FILL, 0, 0); } bbox = gtk_hbutton_box_new (); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_SPREAD); gtk_container_set_border_width (GTK_CONTAINER (bbox), 5); gtk_box_pack_end (GTK_BOX (vbox), bbox, 0, 0, 0); gtk_widget_show (bbox); banl->but_remove = gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_unban, banl, _("Remove")); banl->but_crop = gtkutil_button (bbox, GTK_STOCK_REMOVE, 0, banlist_crop, banl, _("Crop")); banl->but_clear = gtkutil_button (bbox, GTK_STOCK_CLEAR, 0, banlist_clear, banl, _("Clear")); banl->but_refresh = gtkutil_button (bbox, GTK_STOCK_REFRESH, 0, banlist_refresh, banl, _("Refresh")); banlist_do_refresh (banl); gtk_widget_show_all (banl->window); }