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