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; |