Mercurial > pidgin.yaz
diff src/prefs.c @ 1030:38452403563b
[gaim-migrate @ 1040]
updating the buddy list to work better with multiple connections. there are still a bunch of things fucked up with this but i wanted more people to start working on it than just me, especially since i won't be here this weekend.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 27 Oct 2000 07:53:32 +0000 |
parents | 5bad25457843 |
children | b288f17c2fb2 |
line wrap: on
line diff
--- a/src/prefs.c Thu Oct 26 18:05:29 2000 +0000 +++ b/src/prefs.c Fri Oct 27 07:53:32 2000 +0000 @@ -406,251 +406,6 @@ gtk_widget_show(prefdialog); } -static GtkWidget *permtree = NULL; - -static void build_deny_tree() -{ - GtkWidget *ti; - GtkWidget *sub; - GList *plist = permit; - GList *dlist = deny; - - if (!permtree) return; - - gtk_tree_clear_items(GTK_TREE(permtree), 0, -1); - - ti = gtk_tree_item_new_with_label(_("Permit")); - sub = gtk_tree_new(); - gtk_widget_show(ti); - gtk_widget_show(sub); - gtk_tree_prepend(GTK_TREE(permtree), ti); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(ti), sub); - gtk_tree_item_expand(GTK_TREE_ITEM(ti)); - - while(plist) { - ti = gtk_tree_item_new_with_label((char *)plist->data); - gtk_widget_show(ti); - gtk_tree_prepend(GTK_TREE(sub), ti); - plist = plist->next; - } - - - ti = gtk_tree_item_new_with_label(_("Deny")); - sub = gtk_tree_new(); - gtk_widget_show(ti); - gtk_widget_show(sub); - gtk_tree_prepend(GTK_TREE(permtree), ti); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(ti), sub); - gtk_tree_item_expand(GTK_TREE_ITEM(ti)); - - while(dlist) { - ti = gtk_tree_item_new_with_label((char *)dlist->data); - gtk_widget_show(ti); - gtk_tree_prepend(GTK_TREE(sub), ti); - dlist = dlist->next; - } -} - -static void do_del_perm(GtkWidget *w, GtkTree *ptree) -{ - GtkLabel *label, *plabel; - GtkWidget *item, *pitem; - char *c, *d; - GList *i; - - GList *plist; - GList *dlist; - int level; - - plist = permit; - dlist = deny; - - i = GTK_TREE_SELECTION(ptree); - if (i) { - item = GTK_WIDGET(i->data); - gtk_tree_unselect_child(GTK_TREE(ptree), item); - label = GTK_LABEL(GTK_BIN(item)->child); - gtk_label_get(label, &c); - level = GTK_TREE(item->parent)->level; - if (level > 0) { - pitem = GTK_WIDGET(GTK_TREE(item->parent)->tree_owner); - plabel = GTK_LABEL(GTK_BIN(pitem)->child); - gtk_label_get(plabel, &d); - if (!strcasecmp(d, _("Permit"))) { - while(plist) { - if (!strcasecmp((char *)(plist->data), c)) { - permit = g_list_remove(permit, plist->data); - break; - } - - plist = plist->next; - } - - } else { - while(dlist) { - if (!strcasecmp((char *)(dlist->data), c)) { - deny = g_list_remove(deny, dlist->data); - - break; - } - dlist = dlist->next; - } - - } - - - } else { - /* Can't delete groups here! :) */ - return; - } - serv_set_permit_deny(); - gtk_tree_clear_items(GTK_TREE(ptree), 0, -1); - build_permit_tree(); - serv_save_config(); - do_export(0, 0); - } -} - - -static void set_permit(GtkWidget *w, int *data) -{ - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) { - permdeny = (int)data; - if (blist) { - do_export(0, 0); - serv_save_config(); - /* we do this here because we can :) */ - serv_set_permit_deny(); - } - } -} - -static GtkWidget *deny_radio(char *label, int which, GtkWidget *box, GtkWidget *set) -{ - GtkWidget *opt; - - if (!set) - opt = gtk_radio_button_new_with_label(NULL, label); - else - opt = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(set)), label); - gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(set_permit), (void *)which); - gtk_widget_show(opt); - if (permdeny == which) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE); - - return opt; -} - -static void permdest(GtkWidget *m, gpointer n) -{ - do_export(0, 0); - serv_save_config(); - gtk_widget_destroy(permtree); - permtree = NULL; -} - -static void add_perm_callback(GtkWidget *widget, void *dummy) -{ - if (!blist) - do_error_dialog(_("Please sign on before editing the permit/deny lists."), - _("Please sign on")); - else - show_add_perm(NULL); -} - -static void deny_page() -{ - GtkWidget *parent; - GtkWidget *box; - GtkWidget *label; - GtkWidget *sep; - GtkWidget *hbox; - GtkWidget *vbox; - GtkWidget *xbox; - GtkWidget *opt; - GtkWidget *button; - - parent = prefdialog->parent; - gtk_widget_destroy(prefdialog); - - prefdialog = gtk_frame_new(_("Permit/Deny List Options")); - gtk_container_add(GTK_CONTAINER(parent), prefdialog); - - box = gtk_vbox_new(FALSE, 5); - gtk_container_add(GTK_CONTAINER(prefdialog), box); - gtk_widget_show(box); - - label = gtk_label_new(_("All options take effect immediately unless otherwise noted.")); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); - gtk_widget_show(label); - - sep = gtk_hseparator_new(); - gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5); - gtk_widget_show(sep); - - label = gtk_label_new(_("The permit/deny configuration will change between users,\n" - "and changes while you are signed off will not be saved.")); - gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); - gtk_widget_show(label); - - hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); - gtk_widget_show(hbox); - - vbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5); - gtk_widget_show(vbox); - - opt = deny_radio(_("Allow Anyone"), PERMIT_ALL, vbox, NULL); -#if 0 - /* This doesn't work because TOC doesn't have a PERMIT_BUDDY setting - * and merging the two would be very difficult at best, most likely - * impossible. If we can guarantee only Oscar than this is easy */ - opt = deny_radio(_("Allow only users on Buddy List"), PERMIT_BUDDY, vbox, opt); -#endif - opt = deny_radio(_("Allow only the users in \"Permit\""), PERMIT_SOME, vbox, opt); - - vbox = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5); - gtk_widget_show(vbox); - - opt = deny_radio(_("Block all users"), PERMIT_NONE, vbox, opt); - opt = deny_radio(_("Block the users in \"Deny\""), DENY_SOME, vbox, opt); - - xbox = gtk_scrolled_window_new(NULL, NULL); - gtk_box_pack_start(GTK_BOX(box), xbox, TRUE, TRUE, 5); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(xbox), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show(xbox); - - permtree = gtk_tree_new(); - build_deny_tree(); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(xbox), permtree); - gtk_signal_connect(GTK_OBJECT(permtree), "destroy", GTK_SIGNAL_FUNC(permdest), 0); - gtk_widget_show(permtree); - - hbox = gtk_hbox_new(TRUE, 10); - gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); - gtk_widget_show(hbox); - - button = picture_button(prefs, _("Add"), gnome_add_xpm); - gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(add_perm_callback), NULL); - - button = picture_button(prefs, _("Remove"), gnome_remove_xpm); - gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 10); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_del_perm), permtree); - - gtk_widget_show(prefdialog); -} - -void build_permit_tree() -{ - if (permtree) - deny_page(); -} - static void convo_page() { GtkWidget *parent; @@ -2039,19 +1794,13 @@ void prefs_build_buddy(GtkWidget *preftree) { - GtkCTreeNode *parent, *node; + GtkCTreeNode *parent; char *text[1]; text[0] = _("Buddy List"); parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL, text, 5, NULL, NULL, NULL, NULL, 0, 1); gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, buddy_page); - - /* FIXME ! We should move this to a per-user configuration */ - text[0] = _("Permit/Deny"); - node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL, - text, 5, NULL, NULL, NULL, NULL, 0, 1); - gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, deny_page); } void prefs_build_convo(GtkWidget *preftree)