comparison src/dialogs.c @ 2527:c9e316b04048

[gaim-migrate @ 2540] You can now specify which protocol to add buddies to. committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 18 Oct 2001 00:24:08 +0000
parents 1b7a1133962d
children 44b56faccb22
comparison
equal deleted inserted replaced
2526:413a81136e3a 2527:c9e316b04048
113 struct addbuddy { 113 struct addbuddy {
114 GtkWidget *window; 114 GtkWidget *window;
115 GtkWidget *combo; 115 GtkWidget *combo;
116 GtkWidget *entry; 116 GtkWidget *entry;
117 GtkWidget *entry_for_alias; 117 GtkWidget *entry_for_alias;
118 GtkWidget *account;
118 struct gaim_connection *gc; 119 struct gaim_connection *gc;
119 }; 120 };
120 121
121 struct addperm { 122 struct addperm {
122 GtkWidget *window; 123 GtkWidget *window;
808 aol_icon(a->window->window); 809 aol_icon(a->window->window);
809 810
810 gtk_widget_show(a->window); 811 gtk_widget_show(a->window);
811 } 812 }
812 813
814 static void addbuddy_select_account(GtkObject *w, struct gaim_connection *gc)
815 {
816 struct addbuddy *b = gtk_object_get_user_data(w);
817
818 b->gc = gc;
819 }
820
821 static void create_online_user_names(struct addbuddy *b)
822 {
823 char buf[2048]; /* Never hurts to be safe ;-) */
824 GSList *g = connections;
825 struct gaim_connection *c;
826 GtkWidget *menu, *opt;
827 int count = 0;
828 int place = 0;
829
830 menu = gtk_menu_new();
831
832 while (g) {
833 c = (struct gaim_connection *)g->data;
834 g_snprintf(buf, sizeof(buf), "%s (%s)",
835 c->username, (*c->prpl->name)());
836 opt = gtk_menu_item_new_with_label(buf);
837 gtk_object_set_user_data(GTK_OBJECT(opt), b);
838 gtk_signal_connect(GTK_OBJECT(opt), "activate",
839 GTK_SIGNAL_FUNC(addbuddy_select_account),
840 c);
841 gtk_widget_show(opt);
842 gtk_menu_append(GTK_MENU(menu), opt);
843
844 /* Now check to see if it's our current menu */
845 if (c == b->gc) {
846 place = count;
847 gtk_menu_item_activate(GTK_MENU_ITEM(opt));
848 gtk_option_menu_set_history(GTK_OPTION_MENU(b->account), count);
849
850 /* Do the cha cha cha */
851 }
852
853 count++;
854
855 g = g->next;
856 }
857
858 gtk_option_menu_remove_menu(GTK_OPTION_MENU(b->account));
859 gtk_option_menu_set_menu(GTK_OPTION_MENU(b->account), menu);
860 gtk_option_menu_set_history(GTK_OPTION_MENU(b->account), place);
861
862 gtk_widget_show(b->account);
863 gtk_widget_show(b->account->parent);
864
865 }
866
813 void show_add_buddy(struct gaim_connection *gc, char *buddy, char *group) 867 void show_add_buddy(struct gaim_connection *gc, char *buddy, char *group)
814 { 868 {
815 GtkWidget *mainbox; 869 GtkWidget *mainbox;
816 GtkWidget *frame; 870 GtkWidget *frame;
817 GtkWidget *table; 871 GtkWidget *table;
818 GtkWidget *bbox; 872 GtkWidget *bbox;
819 GtkWidget *cancel; 873 GtkWidget *cancel;
820 GtkWidget *add; 874 GtkWidget *add;
821 GtkWidget *label; 875 GtkWidget *label;
876 GList *tmp;
822 877
823 struct addbuddy *a = g_new0(struct addbuddy, 1); 878 struct addbuddy *a = g_new0(struct addbuddy, 1);
824 a->gc = gc; 879 a->gc = gc;
825 880
826 a->window = gtk_window_new(GTK_WINDOW_DIALOG); 881 a->window = gtk_window_new(GTK_WINDOW_DIALOG);
840 895
841 frame = gtk_frame_new(_("Add Buddy")); 896 frame = gtk_frame_new(_("Add Buddy"));
842 gtk_box_pack_start(GTK_BOX(mainbox), frame, TRUE, TRUE, 0); 897 gtk_box_pack_start(GTK_BOX(mainbox), frame, TRUE, TRUE, 0);
843 gtk_widget_show(frame); 898 gtk_widget_show(frame);
844 899
845 table = gtk_table_new(3, 2, FALSE); 900 table = gtk_table_new(3, 3, FALSE);
846 gtk_table_set_row_spacings(GTK_TABLE(table), 5); 901 gtk_table_set_row_spacings(GTK_TABLE(table), 5);
847 gtk_table_set_col_spacings(GTK_TABLE(table), 5); 902 gtk_table_set_col_spacings(GTK_TABLE(table), 5);
848 gtk_container_set_border_width(GTK_CONTAINER(table), 5); 903 gtk_container_set_border_width(GTK_CONTAINER(table), 5);
849 gtk_container_add(GTK_CONTAINER(frame), table); 904 gtk_container_add(GTK_CONTAINER(frame), table);
850 905
870 a->combo = gtk_combo_new(); 925 a->combo = gtk_combo_new();
871 gtk_combo_set_popdown_strings(GTK_COMBO(a->combo), groups_tree(gc ? gc : connections->data)); 926 gtk_combo_set_popdown_strings(GTK_COMBO(a->combo), groups_tree(gc ? gc : connections->data));
872 if (group != NULL) 927 if (group != NULL)
873 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(a->combo)->entry), group); 928 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(a->combo)->entry), group);
874 gtk_table_attach_defaults(GTK_TABLE(table), a->combo, 1, 2, 2, 3); 929 gtk_table_attach_defaults(GTK_TABLE(table), a->combo, 1, 2, 2, 3);
930
931 /* Set up stuff for the account box */
932 label = gtk_label_new(_("Add To"));
933 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
934
935 a->account = gtk_option_menu_new();
936 gtk_table_attach_defaults(GTK_TABLE(table), a->account, 1, 2, 3, 4);
937
938 create_online_user_names(a);
939
940 /* End of account box */
875 941
876 bbox = gtk_hbox_new(FALSE, 5); 942 bbox = gtk_hbox_new(FALSE, 5);
877 gtk_box_pack_start(GTK_BOX(mainbox), bbox, TRUE, TRUE, 0); 943 gtk_box_pack_start(GTK_BOX(mainbox), bbox, TRUE, TRUE, 0);
878 944
879 cancel = picture_button(a->window, _("Cancel"), cancel_xpm); 945 cancel = picture_button(a->window, _("Cancel"), cancel_xpm);