Mercurial > pidgin.yaz
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 |