comparison src/dialogs.c @ 5880:1b85ff65be57

[gaim-migrate @ 6312] The neat little account drop-down is now used in the Send IM and Get Info dialogs. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 15 Jun 2003 05:24:57 +0000
parents 059d95c67cda
children ea6dfabdf60f
comparison
equal deleted inserted replaced
5879:d58406d31a1a 5880:1b85ff65be57
594 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); 594 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
595 595
596 gtk_widget_show_all(window); 596 gtk_widget_show_all(window);
597 } 597 }
598 598
599 void show_info_select_account(GObject *w, GaimConnection *gc) 599 void show_info_select_account(GObject *w, GaimAccount *account,
600 { 600 struct getuserinfo *info)
601 struct getuserinfo *info = g_object_get_data(w, "getuserinfo"); 601 {
602 info->gc = gc; 602 info->gc = gaim_account_get_connection(account);
603 } 603 }
604 604
605 static void dialog_set_ok_sensitive(GtkWidget *entry, GtkWidget *dlg) { 605 static void dialog_set_ok_sensitive(GtkWidget *entry, GtkWidget *dlg) {
606 const char *txt = gtk_entry_get_text(GTK_ENTRY(entry)); 606 const char *txt = gtk_entry_get_text(GTK_ENTRY(entry));
607 gtk_dialog_set_response_sensitive(GTK_DIALOG(dlg), GTK_RESPONSE_OK, 607 gtk_dialog_set_response_sensitive(GTK_DIALOG(dlg), GTK_RESPONSE_OK,
610 610
611 void show_im_dialog() 611 void show_im_dialog()
612 { 612 {
613 GtkWidget *hbox, *vbox; 613 GtkWidget *hbox, *vbox;
614 GtkWidget *label; 614 GtkWidget *label;
615 GtkWidget *table, *menu, *opt; 615 GtkWidget *table;
616 GList *g = gaim_connections_get_all();
617 GaimConnection *c;
618 GaimAccount *account;
619 struct gaim_gtk_buddy_list *gtkblist; 616 struct gaim_gtk_buddy_list *gtkblist;
620 char buf[256];
621 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); 617 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
622 struct getuserinfo *info = NULL; 618 struct getuserinfo *info = NULL;
623 619
624 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); 620 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
625 621
676 label = gtk_label_new(NULL); 672 label = gtk_label_new(NULL);
677 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); 673 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
678 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:")); 674 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:"));
679 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); 675 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
680 676
681 info->account = gtk_option_menu_new(); 677 info->account = gaim_gtk_account_option_menu_new(NULL, FALSE,
678 G_CALLBACK(show_info_select_account), info);
679
682 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2); 680 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2);
683 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account)); 681 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account));
684
685 menu = gtk_menu_new();
686
687 while (g) {
688 c = (GaimConnection *)g->data;
689
690 if (!GAIM_PLUGIN_PROTOCOL_INFO(c->prpl)->send_im) {
691 g = g->next;
692 continue;
693 }
694
695 account = gaim_connection_get_account(c);
696
697 g_snprintf(buf, sizeof(buf), "%s (%s)",
698 gaim_account_get_username(account),
699 c->prpl->info->name);
700 opt = gtk_menu_item_new_with_label(buf);
701 g_object_set_data(G_OBJECT(opt), "getuserinfo", info);
702
703 g_signal_connect(G_OBJECT(opt), "activate",
704 G_CALLBACK(show_info_select_account), c);
705
706 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt);
707 g = g->next;
708 }
709
710 gtk_option_menu_set_menu(GTK_OPTION_MENU(info->account), menu);
711 } 682 }
712 683
713 g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_im), info); 684 g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_im), info);
714 } 685 }
715 686
721 void show_info_dialog() 692 void show_info_dialog()
722 { 693 {
723 GtkWidget *window, *hbox, *vbox; 694 GtkWidget *window, *hbox, *vbox;
724 GtkWidget *label; 695 GtkWidget *label;
725 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); 696 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG);
726 GtkWidget *table, *menu, *opt; 697 GtkWidget *table;
727 GList *g = gaim_connections_get_all();
728 GaimConnection *c;
729 GaimAccount *account;
730 struct getuserinfo *info = g_new0(struct getuserinfo, 1); 698 struct getuserinfo *info = g_new0(struct getuserinfo, 1);
731 struct gaim_gtk_buddy_list *gtkblist; 699 struct gaim_gtk_buddy_list *gtkblist;
732 char buf[256];
733 700
734 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); 701 gtkblist = GAIM_GTK_BLIST(gaim_get_blist());
735 702
736 info->gc = gaim_connections_get_all()->data; 703 info->gc = gaim_connections_get_all()->data;
737 704
783 label = gtk_label_new(NULL); 750 label = gtk_label_new(NULL);
784 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); 751 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);
785 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:")); 752 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:"));
786 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); 753 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
787 754
788 info->account = gtk_option_menu_new(); 755 info->account = gaim_gtk_account_option_menu_new(NULL, FALSE,
756 G_CALLBACK(show_info_select_account), info);
757
789 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2); 758 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2);
790 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account)); 759 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account));
791
792 menu = gtk_menu_new();
793
794 while (g) {
795 c = (GaimConnection *)g->data;
796
797 if (!GAIM_PLUGIN_PROTOCOL_INFO(c->prpl)->get_info) {
798 g = g->next;
799 continue;
800 }
801
802 account = gaim_connection_get_account(c);
803
804 g_snprintf(buf, sizeof(buf), "%s (%s)",
805 gaim_account_get_username(account),
806 c->prpl->info->name);
807 opt = gtk_menu_item_new_with_label(buf);
808 g_object_set_data(G_OBJECT(opt), "getuserinfo", info);
809
810 g_signal_connect(G_OBJECT(opt), "activate",
811 G_CALLBACK(show_info_select_account), c);
812
813 gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt);
814 g = g->next;
815 }
816
817 gtk_option_menu_set_menu(GTK_OPTION_MENU(info->account), menu);
818 } 760 }
819 761
820 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_info), info); 762 g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_info), info);
821 763
822 764