Mercurial > pidgin
comparison src/buddy.c @ 678:c72f58814e9f
[gaim-migrate @ 688]
permit/deny stuff moved to prefs; permit/deny stuff works *properly* now, permit/deny stuff much more logical in preferences.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 15 Aug 2000 01:29:35 +0000 |
parents | b3b5d9d18eea |
children | 4e3f5d9cacd5 |
comparison
equal
deleted
inserted
replaced
677:05f6f7dabb7e | 678:c72f58814e9f |
---|---|
68 static GtkTooltips *tips; | 68 static GtkTooltips *tips; |
69 static GtkWidget *editpane; | 69 static GtkWidget *editpane; |
70 static GtkWidget *buddypane; | 70 static GtkWidget *buddypane; |
71 static GtkWidget *permitpane; | 71 static GtkWidget *permitpane; |
72 static GtkWidget *edittree; | 72 static GtkWidget *edittree; |
73 static GtkWidget *permtree; | |
74 static GtkWidget *imbutton, *infobutton, *chatbutton; | 73 static GtkWidget *imbutton, *infobutton, *chatbutton; |
75 static GtkWidget *addbutton, *groupbutton, *rembutton; | 74 static GtkWidget *addbutton, *groupbutton, *rembutton; |
76 static GtkWidget *addpermbutton, *rempermbutton; | |
77 | 75 |
78 static int last_lag_us; | 76 static int last_lag_us; |
79 | 77 |
80 extern int ticker_prefs; | 78 extern int ticker_prefs; |
81 | 79 |
239 adjust_pic(groupbutton, _("Group"), NULL); | 237 adjust_pic(groupbutton, _("Group"), NULL); |
240 adjust_pic(rembutton, _("Remove"), (gchar **)daemon_buddydel_xpm); | 238 adjust_pic(rembutton, _("Remove"), (gchar **)daemon_buddydel_xpm); |
241 adjust_pic(chatbutton, _("Chat"), (gchar **)daemon_buddychat_xpm); | 239 adjust_pic(chatbutton, _("Chat"), (gchar **)daemon_buddychat_xpm); |
242 adjust_pic(imbutton, _("IM"), (gchar **)daemon_im_xpm); | 240 adjust_pic(imbutton, _("IM"), (gchar **)daemon_im_xpm); |
243 adjust_pic(infobutton, _("Info"), (gchar **)daemon_info_xpm); | 241 adjust_pic(infobutton, _("Info"), (gchar **)daemon_info_xpm); |
244 adjust_pic(addpermbutton, _("Add"), (gchar **)daemon_permadd_xpm); | 242 /* adjust_pic(addpermbutton, _("Add"), (gchar **)daemon_permadd_xpm); |
245 adjust_pic(rempermbutton, _("Remove"), (gchar **)daemon_permdel_xpm); | 243 adjust_pic(rempermbutton, _("Remove"), (gchar **)daemon_permdel_xpm); |
246 } else { | 244 */ } else { |
247 adjust_pic(addbutton, _("Add"), (gchar **)buddyadd_xpm); | 245 adjust_pic(addbutton, _("Add"), (gchar **)buddyadd_xpm); |
248 adjust_pic(groupbutton, _("Group"), NULL); | 246 adjust_pic(groupbutton, _("Group"), NULL); |
249 adjust_pic(rembutton, _("Remove"), (gchar **)buddydel_xpm); | 247 adjust_pic(rembutton, _("Remove"), (gchar **)buddydel_xpm); |
250 adjust_pic(chatbutton, _("Chat"), (gchar **)buddychat_xpm); | 248 adjust_pic(chatbutton, _("Chat"), (gchar **)buddychat_xpm); |
251 adjust_pic(imbutton, _("IM"), (gchar **)im_xpm); | 249 adjust_pic(imbutton, _("IM"), (gchar **)im_xpm); |
252 adjust_pic(infobutton, _("Info"), (gchar **)info_xpm); | 250 adjust_pic(infobutton, _("Info"), (gchar **)info_xpm); |
253 adjust_pic(addpermbutton, _("Add"), (gchar **)permadd_xpm); | 251 /* adjust_pic(addpermbutton, _("Add"), (gchar **)permadd_xpm); |
254 adjust_pic(rempermbutton, _("Remove"), (gchar **)permdel_xpm); | 252 adjust_pic(rempermbutton, _("Remove"), (gchar **)permdel_xpm); |
255 } | 253 */ } |
256 gtk_widget_hide(addbutton->parent); | 254 gtk_widget_hide(addbutton->parent); |
257 gtk_widget_show(addbutton->parent); | 255 gtk_widget_show(addbutton->parent); |
258 gtk_widget_hide(chatbutton->parent); | 256 gtk_widget_hide(chatbutton->parent); |
259 gtk_widget_show(chatbutton->parent); | 257 gtk_widget_show(chatbutton->parent); |
260 gtk_widget_hide(addpermbutton->parent); | 258 /* gtk_widget_hide(addpermbutton->parent); |
261 gtk_widget_show(addpermbutton->parent); | 259 gtk_widget_show(addpermbutton->parent); |
262 } | 260 */} |
263 | 261 |
264 | 262 |
265 | 263 |
266 #ifdef USE_APPLET | 264 #ifdef USE_APPLET |
267 gint applet_destroy_buddy( GtkWidget *widget, GdkEvent *event,gpointer *data ) { | 265 gint applet_destroy_buddy( GtkWidget *widget, GdkEvent *event,gpointer *data ) { |
552 do_export( (GtkWidget *) NULL, 0 ); | 550 do_export( (GtkWidget *) NULL, 0 ); |
553 } | 551 } |
554 | 552 |
555 | 553 |
556 | 554 |
557 void build_permit_tree() | |
558 { | |
559 GtkWidget *ti; | |
560 GtkWidget *sub; | |
561 GList *plist = permit; | |
562 GList *dlist = deny; | |
563 | |
564 gtk_tree_clear_items(GTK_TREE(permtree), 0, -1); | |
565 | |
566 ti = gtk_tree_item_new_with_label(_("Permit")); | |
567 sub = gtk_tree_new(); | |
568 gtk_widget_show(ti); | |
569 gtk_widget_show(sub); | |
570 gtk_tree_prepend(GTK_TREE(permtree), ti); | |
571 gtk_tree_item_set_subtree(GTK_TREE_ITEM(ti), sub); | |
572 gtk_tree_item_expand(GTK_TREE_ITEM(ti)); | |
573 | |
574 while(plist) { | |
575 ti = gtk_tree_item_new_with_label((char *)plist->data); | |
576 gtk_widget_show(ti); | |
577 gtk_tree_prepend(GTK_TREE(sub), ti); | |
578 plist = plist->next; | |
579 } | |
580 | |
581 | |
582 ti = gtk_tree_item_new_with_label(_("Deny")); | |
583 sub = gtk_tree_new(); | |
584 gtk_widget_show(ti); | |
585 gtk_widget_show(sub); | |
586 gtk_tree_prepend(GTK_TREE(permtree), ti); | |
587 gtk_tree_item_set_subtree(GTK_TREE_ITEM(ti), sub); | |
588 gtk_tree_item_expand(GTK_TREE_ITEM(ti)); | |
589 | |
590 while(dlist) { | |
591 ti = gtk_tree_item_new_with_label((char *)dlist->data); | |
592 gtk_widget_show(ti); | |
593 gtk_tree_prepend(GTK_TREE(sub), ti); | |
594 dlist = dlist->next; | |
595 } | |
596 | |
597 | |
598 } | |
599 | 555 |
600 | 556 |
601 gboolean edit_drag_compare_func (GtkCTree *ctree, GtkCTreeNode *source_node, | 557 gboolean edit_drag_compare_func (GtkCTree *ctree, GtkCTreeNode *source_node, |
602 GtkCTreeNode *new_parent, GtkCTreeNode *new_sibling) | 558 GtkCTreeNode *new_parent, GtkCTreeNode *new_sibling) |
603 { | 559 { |
986 /* Nothing selected. */ | 942 /* Nothing selected. */ |
987 } | 943 } |
988 update_num_groups(); | 944 update_num_groups(); |
989 } | 945 } |
990 | 946 |
991 static void do_del_perm(GtkWidget *w, GtkTree *permtree) | |
992 { | |
993 GtkLabel *label, *plabel; | |
994 GtkWidget *item, *pitem; | |
995 char *c, *d; | |
996 GList *i; | |
997 | |
998 GList *plist; | |
999 GList *dlist; | |
1000 int level; | |
1001 | |
1002 plist = permit; | |
1003 dlist = deny; | |
1004 | |
1005 i = GTK_TREE_SELECTION(permtree); | |
1006 if (i) { | |
1007 item = GTK_WIDGET(i->data); | |
1008 gtk_tree_unselect_child(GTK_TREE(permtree), item); | |
1009 label = GTK_LABEL(GTK_BIN(item)->child); | |
1010 gtk_label_get(label, &c); | |
1011 level = GTK_TREE(item->parent)->level; | |
1012 if (level > 0) { | |
1013 pitem = GTK_WIDGET(GTK_TREE(item->parent)->tree_owner); | |
1014 plabel = GTK_LABEL(GTK_BIN(pitem)->child); | |
1015 gtk_label_get(plabel, &d); | |
1016 if (!strcasecmp(d, _("Permit"))) { | |
1017 while(plist) { | |
1018 if (!strcasecmp((char *)(plist->data), c)) { | |
1019 permit = g_list_remove(permit, plist->data); | |
1020 break; | |
1021 } | |
1022 | |
1023 plist = plist->next; | |
1024 } | |
1025 | |
1026 } else { | |
1027 while(dlist) { | |
1028 if (!strcasecmp((char *)(dlist->data), c)) { | |
1029 deny = g_list_remove(deny, dlist->data); | |
1030 | |
1031 break; | |
1032 } | |
1033 dlist = dlist->next; | |
1034 } | |
1035 | |
1036 } | |
1037 | |
1038 | |
1039 } else { | |
1040 /* Can't delete groups here! :) */ | |
1041 return; | |
1042 } | |
1043 serv_set_permit_deny(); | |
1044 gtk_tree_clear_items(GTK_TREE(permtree), 0, -1); | |
1045 build_permit_tree(); | |
1046 serv_save_config(); | |
1047 } | |
1048 } | |
1049 | |
1050 | |
1051 | 947 |
1052 void gaimreg_callback(GtkWidget *widget) | 948 void gaimreg_callback(GtkWidget *widget) |
1053 { | 949 { |
1054 show_register_dialog(); | 950 show_register_dialog(); |
1055 } | 951 } |
1129 | 1025 |
1130 void add_group_callback(GtkWidget *widget, void *dummy) | 1026 void add_group_callback(GtkWidget *widget, void *dummy) |
1131 { | 1027 { |
1132 show_add_group(); | 1028 show_add_group(); |
1133 } | 1029 } |
1134 | |
1135 void add_perm_callback(GtkWidget *widget, void *dummy) | |
1136 { | |
1137 show_add_perm(NULL); | |
1138 } | |
1139 | |
1140 | 1030 |
1141 static void info_callback(GtkWidget *widget, GtkTree *tree) | 1031 static void info_callback(GtkWidget *widget, GtkTree *tree) |
1142 { | 1032 { |
1143 GList *i; | 1033 GList *i; |
1144 struct buddy *b = NULL; | 1034 struct buddy *b = NULL; |
1735 } | 1625 } |
1736 setup_buddy_chats(); | 1626 setup_buddy_chats(); |
1737 } | 1627 } |
1738 | 1628 |
1739 | 1629 |
1740 static void set_permit(GtkWidget *w, int *data) | |
1741 { | |
1742 permdeny = (int)data; | |
1743 /* printf("BLAH BLAH %d %d", permdeny, (int) data); */ | |
1744 /* We don't save this 'at home', it's on the server. | |
1745 * So, we gotta resend the config to the server. */ | |
1746 serv_save_config(); | |
1747 /* we do this here because we can :) */ | |
1748 serv_set_permit_deny(); | |
1749 } | |
1750 | |
1751 | |
1752 static void move_blist_window(GtkWidget *w, GdkEventConfigure *e, void *dummy) | 1630 static void move_blist_window(GtkWidget *w, GdkEventConfigure *e, void *dummy) |
1753 { | 1631 { |
1754 int x, y, width, height; | 1632 int x, y, width, height; |
1755 int save = 0; | 1633 int save = 0; |
1756 gdk_window_get_position(blist->window, &x, &y); | 1634 gdk_window_get_position(blist->window, &x, &y); |
1828 GtkWidget *notebook; | 1706 GtkWidget *notebook; |
1829 GtkWidget *label; | 1707 GtkWidget *label; |
1830 GtkWidget *bbox; | 1708 GtkWidget *bbox; |
1831 GtkWidget *permopt; | 1709 GtkWidget *permopt; |
1832 GtkWidget *tbox; | 1710 GtkWidget *tbox; |
1833 GtkWidget *xbox; | |
1834 GtkWidget *pbox; | |
1835 | 1711 |
1836 | 1712 |
1837 #ifdef USE_APPLET | 1713 #ifdef USE_APPLET |
1838 blist = gtk_window_new(GTK_WINDOW_DIALOG); | 1714 blist = gtk_window_new(GTK_WINDOW_DIALOG); |
1839 #else | 1715 #else |
2058 gtk_widget_show(tbox); | 1934 gtk_widget_show(tbox); |
2059 gtk_widget_show(bbox); | 1935 gtk_widget_show(bbox); |
2060 gtk_widget_show(editpane); | 1936 gtk_widget_show(editpane); |
2061 | 1937 |
2062 | 1938 |
2063 /* Permit/Deny */ | 1939 |
2064 | |
2065 permitpane = gtk_vbox_new(FALSE, 0); | |
2066 | |
2067 permopt = gtk_radio_button_new_with_label(NULL, _("Allow anyone")); | |
2068 gtk_box_pack_start(GTK_BOX(permitpane), permopt, FALSE, FALSE, 0); | |
2069 gtk_signal_connect(GTK_OBJECT(permopt), "clicked", GTK_SIGNAL_FUNC(set_permit), (void *)1); | |
2070 gtk_widget_show(permopt); | |
2071 if (permdeny == 1) | |
2072 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(permopt), TRUE); | |
2073 | |
2074 permopt = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(permopt)), _("Permit some")); | |
2075 gtk_box_pack_start(GTK_BOX(permitpane), permopt, FALSE, FALSE, 0); | |
2076 gtk_signal_connect(GTK_OBJECT(permopt), "clicked", GTK_SIGNAL_FUNC(set_permit), (void *)3); | |
2077 gtk_widget_show(permopt); | |
2078 if (permdeny == 3) | |
2079 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(permopt), TRUE); | |
2080 | |
2081 | |
2082 permopt = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(permopt)), _("Deny some")); | |
2083 gtk_box_pack_start(GTK_BOX(permitpane), permopt, FALSE, FALSE, 0); | |
2084 gtk_signal_connect(GTK_OBJECT(permopt), "clicked", GTK_SIGNAL_FUNC(set_permit), (void *)4); | |
2085 gtk_widget_show(permopt); | |
2086 if (permdeny == 4) | |
2087 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(permopt), TRUE); | |
2088 | |
2089 | |
2090 | |
2091 addpermbutton = gtk_button_new_with_label(_("Add")); | |
2092 rempermbutton = gtk_button_new_with_label(_("Remove")); | |
2093 | |
2094 if (display_options & OPT_DISP_COOL_LOOK) | |
2095 { | |
2096 gtk_button_set_relief(GTK_BUTTON(addpermbutton), GTK_RELIEF_NONE); | |
2097 gtk_button_set_relief(GTK_BUTTON(rempermbutton), GTK_RELIEF_NONE); | |
2098 } | |
2099 | |
2100 permtree = gtk_tree_new(); | |
2101 build_permit_tree(); | |
2102 pbox = gtk_hbox_new(TRUE, 10); | |
2103 xbox = gtk_scrolled_window_new(NULL, NULL); | |
2104 /* Put the buttons in the box */ | |
2105 gtk_box_pack_start(GTK_BOX(pbox), addpermbutton, TRUE, TRUE, 10); | |
2106 gtk_box_pack_start(GTK_BOX(pbox), rempermbutton, TRUE, TRUE, 10); | |
2107 | |
2108 | |
2109 gtk_tooltips_set_tip(tips, addpermbutton, _("Add buddy to permit/deny"), "Penguin"); | |
2110 gtk_tooltips_set_tip(tips, rempermbutton, _("Remove buddy from permit/deny"), "Penguin"); | |
2111 /* And the boxes in the box */ | |
2112 gtk_box_pack_start(GTK_BOX(permitpane), xbox, TRUE, TRUE, 5); | |
2113 gtk_box_pack_start(GTK_BOX(permitpane), pbox, FALSE, FALSE, 5); | |
2114 | |
2115 /* Handle closes right */ | |
2116 | |
2117 | |
2118 | |
2119 /* Finish up */ | |
2120 gtk_widget_show(addpermbutton); | |
2121 gtk_widget_show(rempermbutton); | |
2122 gtk_widget_show(permtree); | |
2123 gtk_widget_show(xbox); | |
2124 gtk_widget_show(pbox); | |
2125 gtk_widget_show(permitpane); | |
2126 | |
2127 | 1940 |
2128 | 1941 |
2129 label = gtk_label_new(_("Online")); | 1942 label = gtk_label_new(_("Online")); |
2130 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buddypane, label); | 1943 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buddypane, label); |
2131 label = gtk_label_new(_("Edit Buddies")); | 1944 label = gtk_label_new(_("Edit Buddies")); |
2132 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), editpane, label); | 1945 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), editpane, label); |
2133 label = gtk_label_new(_("Permit")); | |
2134 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), permitpane, label); | |
2135 | 1946 |
2136 gtk_widget_show_all(notebook); | 1947 gtk_widget_show_all(notebook); |
2137 | 1948 |
2138 /* Pack things in the vbox */ | 1949 /* Pack things in the vbox */ |
2139 gtk_widget_show(vbox); | 1950 gtk_widget_show(vbox); |
2147 gtk_signal_connect(GTK_OBJECT(infobutton), "clicked", GTK_SIGNAL_FUNC(info_callback), buddies); | 1958 gtk_signal_connect(GTK_OBJECT(infobutton), "clicked", GTK_SIGNAL_FUNC(info_callback), buddies); |
2148 gtk_signal_connect(GTK_OBJECT(chatbutton), "clicked", GTK_SIGNAL_FUNC(chat_callback), buddies); | 1959 gtk_signal_connect(GTK_OBJECT(chatbutton), "clicked", GTK_SIGNAL_FUNC(chat_callback), buddies); |
2149 gtk_signal_connect(GTK_OBJECT(rembutton), "clicked", GTK_SIGNAL_FUNC(do_del_buddy), edittree); | 1960 gtk_signal_connect(GTK_OBJECT(rembutton), "clicked", GTK_SIGNAL_FUNC(do_del_buddy), edittree); |
2150 gtk_signal_connect(GTK_OBJECT(addbutton), "clicked", GTK_SIGNAL_FUNC(add_buddy_callback), NULL); | 1961 gtk_signal_connect(GTK_OBJECT(addbutton), "clicked", GTK_SIGNAL_FUNC(add_buddy_callback), NULL); |
2151 gtk_signal_connect(GTK_OBJECT(groupbutton), "clicked", GTK_SIGNAL_FUNC(add_group_callback), NULL); | 1962 gtk_signal_connect(GTK_OBJECT(groupbutton), "clicked", GTK_SIGNAL_FUNC(add_group_callback), NULL); |
2152 gtk_signal_connect(GTK_OBJECT(addpermbutton), "clicked", GTK_SIGNAL_FUNC(add_perm_callback), NULL); | |
2153 gtk_signal_connect(GTK_OBJECT(rempermbutton), "clicked", GTK_SIGNAL_FUNC(do_del_perm), permtree); | |
2154 gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); | 1963 gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); |
2155 gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); | 1964 gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); |
2156 | 1965 |
2157 gtk_container_add(GTK_CONTAINER(blist), vbox); | 1966 gtk_container_add(GTK_CONTAINER(blist), vbox); |
2158 | 1967 |
2169 /* The edit tree */ | 1978 /* The edit tree */ |
2170 gtk_container_add(GTK_CONTAINER(tbox), edittree); | 1979 gtk_container_add(GTK_CONTAINER(tbox), edittree); |
2171 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tbox), | 1980 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tbox), |
2172 GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); | 1981 GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); |
2173 | 1982 |
2174 | |
2175 /* The permit tree */ | |
2176 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(xbox), permtree); | |
2177 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(xbox), | |
2178 GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | |
2179 | 1983 |
2180 gtk_window_set_title(GTK_WINDOW(blist), _("Gaim - Buddy List")); | 1984 gtk_window_set_title(GTK_WINDOW(blist), _("Gaim - Buddy List")); |
2181 | 1985 |
2182 if (general_options & OPT_GEN_SAVED_WINDOWS) { | 1986 if (general_options & OPT_GEN_SAVED_WINDOWS) { |
2183 if (blist_pos.width != 0) { /* Sanity check! */ | 1987 if (blist_pos.width != 0) { /* Sanity check! */ |
2190 void refresh_buddy_window() | 1994 void refresh_buddy_window() |
2191 { | 1995 { |
2192 setup_buddy_chats(); | 1996 setup_buddy_chats(); |
2193 | 1997 |
2194 build_edit_tree(); | 1998 build_edit_tree(); |
2195 build_permit_tree(); | 1999 build_permit_tree(); |
2196 | 2000 |
2197 update_button_pix(); | 2001 update_button_pix(); |
2198 gtk_widget_show(blist); | 2002 gtk_widget_show(blist); |
2199 | 2003 |
2200 | 2004 |