| 3640 |
3642 |
| 3641 gtk_widget_show(aliasdlg); |
3643 gtk_widget_show(aliasdlg); |
| 3642 } |
3644 } |
| 3643 |
3645 |
| 3644 |
3646 |
| 3645 static gboolean dont_destroy(gpointer a, gpointer b, gpointer c) { |
3647 static gboolean dont_destroy(gpointer a, gpointer b, gpointer c) |
| |
3648 { |
| 3646 return TRUE; |
3649 return TRUE; |
| |
3650 } |
| |
3651 |
| |
3652 static void do_save_log(GtkWidget *w, GtkWidget *filesel) |
| |
3653 { |
| |
3654 char *file; |
| |
3655 char path[PATHSIZE]; |
| |
3656 char buf[BUF_LONG]; |
| |
3657 char error[BUF_LEN]; |
| |
3658 FILE *fp_old, *fp_new; |
| |
3659 char filename[PATHSIZE]; |
| |
3660 char *name; |
| |
3661 |
| |
3662 name = gtk_object_get_user_data(GTK_OBJECT(filesel)); |
| |
3663 g_snprintf(filename, PATHSIZE, "%s/logs/%s.log", |
| |
3664 gaim_user_dir(), normalize(name)); |
| |
3665 |
| |
3666 file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel)); |
| |
3667 strncpy(path, file, PATHSIZE-1); |
| |
3668 if (file_is_dir(path, filesel)) |
| |
3669 return; |
| |
3670 |
| |
3671 if ((fp_new = fopen(path, "w")) == NULL) { |
| |
3672 g_snprintf(error, BUF_LONG, |
| |
3673 "Can't open file %s for writing - %s", |
| |
3674 path, strerror(errno)); |
| |
3675 do_error_dialog(error, "Error"); |
| |
3676 return; |
| |
3677 } |
| |
3678 |
| |
3679 if ((fp_old = fopen(filename, "r")) == NULL) { |
| |
3680 g_snprintf(error, BUF_LONG, |
| |
3681 "Can't open file %s for reading - %s", |
| |
3682 filename, strerror(errno)); |
| |
3683 do_error_dialog(error, "Error"); |
| |
3684 fclose(fp_new); |
| |
3685 return; |
| |
3686 } |
| |
3687 |
| |
3688 while (fgets(buf, BUF_LONG, fp_old)) |
| |
3689 fputs(buf, fp_new); |
| |
3690 fclose(fp_old); |
| |
3691 fclose(fp_new); |
| |
3692 |
| |
3693 dialogwindows = g_list_remove(dialogwindows, filesel); |
| |
3694 gtk_widget_destroy(filesel); |
| |
3695 |
| |
3696 return; |
| |
3697 } |
| |
3698 |
| |
3699 static void show_save_log(GtkWidget *w, gchar *name) |
| |
3700 { |
| |
3701 GtkWidget *filesel; |
| |
3702 gchar buf[BUF_LEN]; |
| |
3703 |
| |
3704 g_snprintf(buf, BUF_LEN - 1, "%s/%s.log", |
| |
3705 getenv("HOME"), normalize(name)); |
| |
3706 |
| |
3707 filesel = gtk_file_selection_new(_("Gaim - Save Log File")); |
| |
3708 dialogwindows = g_list_prepend(dialogwindows, filesel); |
| |
3709 gtk_signal_connect(GTK_OBJECT(filesel), "delete_event", |
| |
3710 GTK_SIGNAL_FUNC(destroy_dialog), filesel); |
| |
3711 |
| |
3712 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(filesel)); |
| |
3713 gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), buf); |
| |
3714 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button), |
| |
3715 "clicked", GTK_SIGNAL_FUNC(do_save_log), filesel); |
| |
3716 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button), |
| |
3717 "clicked", GTK_SIGNAL_FUNC(destroy_dialog), |
| |
3718 filesel); |
| |
3719 gtk_object_set_user_data(GTK_OBJECT(filesel), name); |
| |
3720 |
| |
3721 gtk_widget_realize(filesel); |
| |
3722 aol_icon(filesel->window); |
| |
3723 gtk_widget_show(filesel); |
| |
3724 |
| |
3725 return; |
| |
3726 } |
| |
3727 |
| |
3728 static void do_clear_log_file(GtkWidget *w, gchar *name) |
| |
3729 { |
| |
3730 gchar buf[256]; |
| |
3731 gchar filename[256]; |
| |
3732 GtkWidget *window; |
| |
3733 |
| |
3734 g_snprintf(filename, 256, "%s/logs/%s.log", |
| |
3735 gaim_user_dir(), normalize(name)); |
| |
3736 |
| |
3737 if ((remove(filename)) == -1) { |
| |
3738 g_snprintf(buf, 256, _("Unable to remove file %s - %s"), |
| |
3739 filename, strerror(errno)); |
| |
3740 do_error_dialog(buf, _("Error")); |
| |
3741 } |
| |
3742 |
| |
3743 window = gtk_object_get_user_data(GTK_OBJECT(w)); |
| |
3744 destroy_dialog(NULL, window); |
| |
3745 } |
| |
3746 |
| |
3747 static void show_clear_log(GtkWidget *w, gchar *name) |
| |
3748 { |
| |
3749 GtkWidget *window; |
| |
3750 GtkWidget *box; |
| |
3751 GtkWidget *hbox; |
| |
3752 GtkWidget *button; |
| |
3753 GtkWidget *label; |
| |
3754 GtkWidget *hsep; |
| |
3755 |
| |
3756 window = gtk_window_new(GTK_WINDOW_DIALOG); |
| |
3757 dialogwindows = g_list_prepend(dialogwindows, window); |
| |
3758 gtk_window_set_wmclass(GTK_WINDOW(window), "dialog", "Gaim"); |
| |
3759 gtk_container_set_border_width(GTK_CONTAINER(window), 10); |
| |
3760 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE); |
| |
3761 gtk_signal_connect(GTK_OBJECT(window), "delete_event", |
| |
3762 GTK_SIGNAL_FUNC(destroy_dialog), window); |
| |
3763 gtk_widget_realize(window); |
| |
3764 aol_icon(window->window); |
| |
3765 |
| |
3766 box = gtk_vbox_new(FALSE, 5); |
| |
3767 gtk_container_add(GTK_CONTAINER(window), box); |
| |
3768 |
| |
3769 label = gtk_label_new(_("Really clear log?")); |
| |
3770 gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 15); |
| |
3771 |
| |
3772 hsep = gtk_hseparator_new(); |
| |
3773 gtk_box_pack_start(GTK_BOX(box), hsep, FALSE, FALSE, 0); |
| |
3774 |
| |
3775 hbox = gtk_hbox_new(FALSE, 0); |
| |
3776 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); |
| |
3777 gtk_widget_show(hbox); |
| |
3778 |
| |
3779 button = picture_button(window, _("Cancel"), cancel_xpm); |
| |
3780 if (display_options & OPT_DISP_COOL_LOOK) |
| |
3781 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| |
3782 gtk_signal_connect(GTK_OBJECT(button), "clicked", |
| |
3783 GTK_SIGNAL_FUNC(destroy_dialog), window); |
| |
3784 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); |
| |
3785 gtk_widget_show(button); |
| |
3786 |
| |
3787 button = picture_button(window, _("Okay"), ok_xpm); |
| |
3788 if (display_options & OPT_DISP_COOL_LOOK) |
| |
3789 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
| |
3790 gtk_object_set_user_data(GTK_OBJECT(button), |
| |
3791 gtk_object_get_user_data(GTK_OBJECT(w))); |
| |
3792 gtk_signal_connect(GTK_OBJECT(button), "clicked", |
| |
3793 GTK_SIGNAL_FUNC(do_clear_log_file), name); |
| |
3794 gtk_signal_connect(GTK_OBJECT(button), "clicked", |
| |
3795 GTK_SIGNAL_FUNC(destroy_dialog), window); |
| |
3796 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); |
| |
3797 gtk_widget_show(button); |
| |
3798 |
| |
3799 gtk_widget_show_all(window); |
| |
3800 |
| |
3801 return; |
| 3647 } |
3802 } |
| 3648 |
3803 |
| 3649 void |
3804 void |
| 3650 show_log (char *name) |
3805 show_log (char *name) |
| 3651 { |
3806 { |
| 3682 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
3840 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 3683 dialogwindows = g_list_prepend(dialogwindows, window); |
3841 dialogwindows = g_list_prepend(dialogwindows, window); |
| 3684 gtk_window_set_wmclass(GTK_WINDOW(window), "log", "Gaim"); |
3842 gtk_window_set_wmclass(GTK_WINDOW(window), "log", "Gaim"); |
| 3685 g_snprintf(buf, BUF_LONG, "Gaim - Conversations with %s", name); |
3843 g_snprintf(buf, BUF_LONG, "Gaim - Conversations with %s", name); |
| 3686 gtk_window_set_title(GTK_WINDOW(window), buf); |
3844 gtk_window_set_title(GTK_WINDOW(window), buf); |
| 3687 gtk_container_set_border_width(GTK_CONTAINER(window), 15); |
3845 gtk_container_set_border_width(GTK_CONTAINER(window), 10); |
| 3688 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE); |
3846 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE); |
| 3689 block = gtk_signal_connect(GTK_OBJECT(window), "delete_event", |
3847 block = gtk_signal_connect(GTK_OBJECT(window), "delete_event", |
| 3690 GTK_SIGNAL_FUNC(dont_destroy), window); |
3848 GTK_SIGNAL_FUNC(dont_destroy), window); |
| 3691 gtk_widget_realize(window); |
3849 gtk_widget_realize(window); |
| 3692 aol_icon(window->window); |
3850 aol_icon(window->window); |
| 3693 |
3851 |
| 3694 box = gtk_vbox_new(FALSE, 0); |
3852 box = gtk_vbox_new(FALSE, 5); |
| 3695 gtk_container_add(GTK_CONTAINER(window), box); |
3853 gtk_container_add(GTK_CONTAINER(window), box); |
| 3696 |
3854 |
| 3697 sw = gtk_scrolled_window_new(NULL, NULL); |
3855 sw = gtk_scrolled_window_new(NULL, NULL); |
| 3698 gtk_box_pack_start(GTK_BOX(box), sw, TRUE, TRUE, 0); |
3856 gtk_box_pack_start(GTK_BOX(box), sw, TRUE, TRUE, 0); |
| 3699 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
3857 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| 3706 gtk_imhtml_show_smileys(GTK_IMHTML(layout), FALSE); |
3864 gtk_imhtml_show_smileys(GTK_IMHTML(layout), FALSE); |
| 3707 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:)", luke03_xpm); |
3865 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:)", luke03_xpm); |
| 3708 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:-)", luke03_xpm); |
3866 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:-)", luke03_xpm); |
| 3709 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "O-)", oneeye_xpm); |
3867 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "O-)", oneeye_xpm); |
| 3710 |
3868 |
| |
3869 hbox = gtk_hbox_new(FALSE, 0); |
| |
3870 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); |
| |
3871 gtk_widget_show(hbox); |
| |
3872 |
| |
3873 close_button = picture_button(window, _("Close"), cancel_xpm); |
| |
3874 gtk_box_pack_end(GTK_BOX(hbox), close_button, FALSE, FALSE, 5); |
| |
3875 gtk_widget_set_sensitive(close_button, FALSE); |
| |
3876 |
| |
3877 clear_button = picture_button(window, _("Clear"), close_xpm); |
| |
3878 gtk_object_set_user_data(GTK_OBJECT(clear_button), window); |
| |
3879 gtk_box_pack_end(GTK_BOX(hbox), clear_button, FALSE, FALSE, 5); |
| |
3880 gtk_widget_set_sensitive(clear_button, FALSE); |
| |
3881 |
| |
3882 save_button = picture_button(window, _("Save"), save_xpm); |
| |
3883 gtk_box_pack_end(GTK_BOX(hbox), save_button, FALSE, FALSE, 5); |
| |
3884 gtk_widget_set_sensitive(save_button, FALSE); |
| |
3885 |
| 3711 gtk_widget_show_all(window); |
3886 gtk_widget_show_all(window); |
| 3712 |
3887 |
| 3713 while (fgets (buf, BUF_LONG, fp)) { |
3888 while (fgets (buf, BUF_LONG, fp)) { |
| 3714 if (strlen (buf) >= 5 && |
3889 if (strlen (buf) >= 5 && (!strncmp (buf+strlen(buf)-5, "<BR>\n", 5))) |
| 3715 (!strncmp (buf+strlen(buf)-5, "<BR>\n", 5))) |
|
| 3716 /* take off the \n */ |
3890 /* take off the \n */ |
| 3717 buf[strlen(buf)-1] = '\0'; |
3891 buf[strlen(buf)-1] = '\0'; |
| 3718 if (strlen (buf) >= 21 && |
3892 if (strlen (buf) >= 21 && strstr (buf, "---- New C")) { |
| 3719 strstr (buf, "---- New C")) { |
|
| 3720 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options); |
3893 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options); |
| 3721 g_string_free (string, TRUE); |
3894 g_string_free (string, TRUE); |
| 3722 string = g_string_new (buf); |
3895 string = g_string_new (buf); |
| 3723 } else { |
3896 } else { |
| 3724 string = g_string_append (string, buf); |
3897 string = g_string_append (string, buf); |
| 3729 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options); |
3902 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options); |
| 3730 |
3903 |
| 3731 gtk_signal_disconnect(GTK_OBJECT(window), block); |
3904 gtk_signal_disconnect(GTK_OBJECT(window), block); |
| 3732 gtk_signal_connect(GTK_OBJECT(window), "delete_event", |
3905 gtk_signal_connect(GTK_OBJECT(window), "delete_event", |
| 3733 GTK_SIGNAL_FUNC(destroy_dialog), window); |
3906 GTK_SIGNAL_FUNC(destroy_dialog), window); |
| |
3907 gtk_signal_connect(GTK_OBJECT(close_button), "clicked", |
| |
3908 GTK_SIGNAL_FUNC(destroy_dialog), window); |
| |
3909 gtk_signal_connect(GTK_OBJECT(clear_button), "clicked", |
| |
3910 GTK_SIGNAL_FUNC(show_clear_log), name); |
| |
3911 gtk_signal_connect(GTK_OBJECT(save_button), "clicked", |
| |
3912 GTK_SIGNAL_FUNC(show_save_log), name); |
| |
3913 gtk_widget_set_sensitive(close_button, TRUE); |
| |
3914 gtk_widget_set_sensitive(clear_button, TRUE); |
| |
3915 gtk_widget_set_sensitive(save_button, TRUE); |
| 3734 |
3916 |
| 3735 fclose(fp); |
3917 fclose(fp); |
| 3736 g_string_free (string, TRUE); |
3918 g_string_free (string, TRUE); |
| 3737 |
3919 |
| 3738 return; |
3920 return; |