Mercurial > pidgin
comparison src/dialogs.c @ 3816:b983234cb3a3
[gaim-migrate @ 3963]
Thanks click81.
committer: Tailor Script <tailor@pidgin.im>
| author | Sean Egan <seanegan@gmail.com> |
|---|---|
| date | Tue, 29 Oct 2002 06:38:22 +0000 |
| parents | f9775881ea94 |
| children | 8997bc63417c |
comparison
equal
deleted
inserted
replaced
| 3815:b2ec492c9afe | 3816:b983234cb3a3 |
|---|---|
| 557 return d; | 557 return d; |
| 558 } | 558 } |
| 559 | 559 |
| 560 | 560 |
| 561 | 561 |
| 562 static void do_im(GtkWidget *widget, int resp, GtkWidget *imentry) | 562 static void do_im(GtkWidget *widget, int resp, struct getuserinfo *info) |
| 563 { | 563 { |
| 564 char *who; | 564 char *who; |
| 565 struct conversation *c; | 565 struct conversation *c; |
| 566 | 566 |
| 567 if (resp == GTK_RESPONSE_OK) { | 567 if (resp == GTK_RESPONSE_OK) { |
| 568 who = g_strdup(gtk_entry_get_text(GTK_ENTRY(imentry))); | 568 who = g_strdup(gtk_entry_get_text(GTK_ENTRY(info->entry))); |
| 569 destroy_dialog(NULL, imdialog); | |
| 570 imdialog = NULL; | |
| 571 | 569 |
| 572 if (!g_strcasecmp(who, "")) { | 570 if (!g_strcasecmp(who, "")) { |
| 573 g_free(who); | 571 g_free(who); |
| 574 return; | 572 return; |
| 575 } | 573 } |
| 579 if (c == NULL) { | 577 if (c == NULL) { |
| 580 c = new_conversation(who); | 578 c = new_conversation(who); |
| 581 } else { | 579 } else { |
| 582 gdk_window_raise(c->window->window); | 580 gdk_window_raise(c->window->window); |
| 583 } | 581 } |
| 582 if (info->gc) | |
| 583 set_convo_gc(c, info->gc); | |
| 584 | |
| 584 g_free(who); | 585 g_free(who); |
| 585 } | 586 } |
| 586 | 587 |
| 587 destroy_dialog(NULL, widget); | 588 destroy_dialog(NULL, imdialog); |
| 589 imdialog = NULL; | |
| 588 } | 590 } |
| 589 | 591 |
| 590 static void do_info(GtkWidget *widget, int resp, struct getuserinfo *info) | 592 static void do_info(GtkWidget *widget, int resp, struct getuserinfo *info) |
| 591 { | 593 { |
| 592 char *who; | 594 char *who; |
| 664 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 666 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 665 | 667 |
| 666 gtk_widget_show_all(window); | 668 gtk_widget_show_all(window); |
| 667 } | 669 } |
| 668 | 670 |
| 671 void show_info_select_account(GtkObject *w, struct gaim_connection *gc) | |
| 672 { | |
| 673 struct getuserinfo *info = gtk_object_get_user_data(w); | |
| 674 info->gc = gc; | |
| 675 } | |
| 676 | |
| 669 void show_im_dialog() | 677 void show_im_dialog() |
| 670 { | 678 { |
| 671 GtkWidget *hbox, *vbox; | 679 GtkWidget *hbox, *vbox; |
| 672 GtkWidget *label; | 680 GtkWidget *label; |
| 681 GtkWidget *table, *menu, *opt; | |
| 682 GSList *g = connections; | |
| 683 struct gaim_connection *c; | |
| 684 char buf[256]; | |
| 673 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL); | 685 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL); |
| 674 GtkWidget *img = gtk_image_new_from_file(filename); | 686 GtkWidget *img = gtk_image_new_from_file(filename); |
| 675 GtkWidget *entry; | 687 struct getuserinfo *info = NULL; |
| 676 | 688 |
| 677 if (!imdialog) { | 689 if (!imdialog) { |
| 690 info = g_new0(struct getuserinfo, 1); | |
| 691 info->gc = connections->data; | |
| 678 imdialog = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_MODAL, | 692 imdialog = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_MODAL, |
| 679 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); | 693 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); |
| 680 gtk_dialog_set_default_response (GTK_DIALOG(imdialog), GTK_RESPONSE_OK); | 694 gtk_dialog_set_default_response (GTK_DIALOG(imdialog), GTK_RESPONSE_OK); |
| 681 gtk_container_set_border_width (GTK_CONTAINER(imdialog), 6); | 695 gtk_container_set_border_width (GTK_CONTAINER(imdialog), 6); |
| 682 gtk_window_set_resizable(GTK_WINDOW(imdialog), FALSE); | 696 gtk_window_set_resizable(GTK_WINDOW(imdialog), FALSE); |
| 698 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | 712 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
| 699 | 713 |
| 700 hbox = gtk_hbox_new(FALSE, 6); | 714 hbox = gtk_hbox_new(FALSE, 6); |
| 701 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 715 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 702 | 716 |
| 717 table = gtk_table_new(2, 2, FALSE); | |
| 718 gtk_table_set_row_spacings(GTK_TABLE(table), 6); | |
| 719 gtk_table_set_col_spacings(GTK_TABLE(table), 6); | |
| 720 gtk_container_set_border_width(GTK_CONTAINER(table), 12); | |
| 721 gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | |
| 722 | |
| 703 label = gtk_label_new(NULL); | 723 label = gtk_label_new(NULL); |
| 704 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname")); | 724 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname:")); |
| 705 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 725 gtk_misc_set_alignment(GTK_LABEL(img), 0, 0); |
| 726 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | |
| 727 | |
| 728 info->entry = gtk_entry_new(); | |
| 729 gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); | |
| 730 gtk_entry_set_activates_default (GTK_ENTRY(info->entry), TRUE); | |
| 731 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->entry)); | |
| 732 | |
| 733 if (connections->next) { | |
| 734 | |
| 735 label = gtk_label_new(NULL); | |
| 736 gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); | |
| 737 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:")); | |
| 738 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 739 | |
| 740 info->account = gtk_option_menu_new(); | |
| 741 gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2); | |
| 742 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account)); | |
| 743 | |
| 744 menu = gtk_menu_new(); | |
| 745 | |
| 746 while (g) { | |
| 747 c = (struct gaim_connection *)g->data; | |
| 748 if (!c->prpl->send_im) { | |
| 749 g = g->next; | |
| 750 continue; | |
| 751 } | |
| 752 g_snprintf(buf, sizeof(buf), "%s (%s)", c->username, c->prpl->name); | |
| 753 opt = gtk_menu_item_new_with_label(buf); | |
| 754 gtk_object_set_user_data(GTK_OBJECT(opt), info); | |
| 755 | |
| 756 gtk_signal_connect(GTK_OBJECT(opt), "activate", | |
| 757 GTK_SIGNAL_FUNC(show_info_select_account), c); | |
| 758 | |
| 759 gtk_menu_append(GTK_MENU(menu), opt); | |
| 760 g = g->next; | |
| 761 } | |
| 762 | |
| 763 gtk_option_menu_set_menu(GTK_OPTION_MENU(info->account), menu); | |
| 764 } | |
| 706 | 765 |
| 707 entry = gtk_entry_new(); | 766 g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_im), info); |
| 708 gtk_entry_set_activates_default (GTK_ENTRY(entry), TRUE); | 767 |
| 709 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
| 710 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); | |
| 711 | |
| 712 g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_im), entry); | |
| 713 | |
| 714 dialogwindows = g_list_prepend(dialogwindows, imdialog->window); | 768 dialogwindows = g_list_prepend(dialogwindows, imdialog->window); |
| 715 } | 769 } |
| 716 | 770 |
| 717 gtk_widget_show_all(imdialog); | 771 gtk_widget_show_all(imdialog); |
| 718 if (entry) | 772 if (info) |
| 719 gtk_widget_grab_focus(GTK_WIDGET(entry)); | 773 gtk_widget_grab_focus(GTK_WIDGET(info->entry)); |
| 720 } | |
| 721 | |
| 722 void show_info_select_account(GtkObject *w, struct gaim_connection *gc) | |
| 723 { | |
| 724 struct getuserinfo *info = gtk_object_get_user_data(w); | |
| 725 info->gc = gc; | |
| 726 } | 774 } |
| 727 | 775 |
| 728 void show_info_dialog() | 776 void show_info_dialog() |
| 729 { | 777 { |
| 730 GtkWidget *window, *hbox, *vbox; | 778 GtkWidget *window, *hbox, *vbox; |
