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;