comparison src/dialogs.c @ 1477:1d0fc2622b29

[gaim-migrate @ 1487] log viewer, courtesy bmiller. still needs work but it's good enough to be in CVS committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 07 Feb 2001 21:11:00 +0000
parents 6650776468b3
children 934041288fbb
comparison
equal deleted inserted replaced
1476:721cd9b73704 1477:1d0fc2622b29
1834 1834
1835 if (display_options & OPT_DISP_IGNORE_COLOUR) 1835 if (display_options & OPT_DISP_IGNORE_COLOUR)
1836 options ^= GTK_IMHTML_NO_COLOURS; 1836 options ^= GTK_IMHTML_NO_COLOURS;
1837 if (display_options & OPT_DISP_IGNORE_FONTS) 1837 if (display_options & OPT_DISP_IGNORE_FONTS)
1838 options ^= GTK_IMHTML_NO_FONTS; 1838 options ^= GTK_IMHTML_NO_FONTS;
1839 if (display_options & OPT_DISP_IGNORE_SIZES)
1840 options ^= GTK_IMHTML_NO_SIZES;
1839 options ^= GTK_IMHTML_NO_COMMENTS; 1841 options ^= GTK_IMHTML_NO_COMMENTS;
1840 options ^= GTK_IMHTML_NO_TITLE; 1842 options ^= GTK_IMHTML_NO_TITLE;
1841 options ^= GTK_IMHTML_NO_NEWLINE; 1843 options ^= GTK_IMHTML_NO_NEWLINE;
1842 options ^= GTK_IMHTML_NO_SCROLL; 1844 options ^= GTK_IMHTML_NO_SCROLL;
1843 gtk_imhtml_append_text(GTK_IMHTML(b->text), info, options); 1845 gtk_imhtml_append_text(GTK_IMHTML(b->text), info, options);
3636 gtk_widget_realize(aliasdlg); 3638 gtk_widget_realize(aliasdlg);
3637 aol_icon(aliasdlg->window); 3639 aol_icon(aliasdlg->window);
3638 3640
3639 gtk_widget_show(aliasdlg); 3641 gtk_widget_show(aliasdlg);
3640 } 3642 }
3643
3644
3645 static gboolean dont_destroy(gpointer a, gpointer b, gpointer c) {
3646 return TRUE;
3647 }
3648
3649 void
3650 show_log (char *name)
3651 {
3652 gchar filename[256];
3653 gchar buf[BUF_LONG];
3654 GString *string;
3655 FILE *fp;
3656 GtkWidget *window;
3657 GtkWidget *box;
3658 GtkWidget *sw;
3659 GtkWidget *layout;
3660 int options;
3661 guint block;
3662
3663 string = g_string_new("");
3664
3665 g_snprintf(filename, 256, "%s/logs/%s.log",
3666 gaim_user_dir(), normalize(name));
3667 if ((fp = fopen(filename, "r")) == NULL) {
3668 g_snprintf(buf, BUF_LONG, "Unable to open log file %s",
3669 filename);
3670 do_error_dialog(buf, "Error!");
3671 return;
3672 }
3673
3674 options = GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_SCROLL;
3675 if (display_options & OPT_DISP_IGNORE_COLOUR)
3676 options ^= GTK_IMHTML_NO_COLOURS;
3677 if (display_options & OPT_DISP_IGNORE_FONTS)
3678 options ^= GTK_IMHTML_NO_FONTS;
3679 if (display_options & OPT_DISP_IGNORE_SIZES)
3680 options ^= GTK_IMHTML_NO_SIZES;
3681
3682 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
3683 dialogwindows = g_list_prepend(dialogwindows, window);
3684 gtk_window_set_wmclass(GTK_WINDOW(window), "log", "Gaim");
3685 g_snprintf(buf, BUF_LONG, "Gaim - Conversations with %s", name);
3686 gtk_window_set_title(GTK_WINDOW(window), buf);
3687 gtk_container_set_border_width(GTK_CONTAINER(window), 15);
3688 gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, TRUE);
3689 block = gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3690 GTK_SIGNAL_FUNC(dont_destroy), window);
3691 gtk_widget_realize(window);
3692 aol_icon(window->window);
3693
3694 box = gtk_vbox_new(FALSE, 0);
3695 gtk_container_add(GTK_CONTAINER(window), box);
3696
3697 sw = gtk_scrolled_window_new(NULL, NULL);
3698 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);
3700 gtk_widget_set_usize(sw, 390, 220);
3701
3702 layout = gtk_imhtml_new(NULL, NULL);
3703 gtk_signal_connect(GTK_OBJECT(layout), "url_clicked", open_url_nw, NULL);
3704 gtk_container_add(GTK_CONTAINER(sw), layout);
3705 gtk_imhtml_show_comments(GTK_IMHTML(layout), TRUE);
3706 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:)", luke03_xpm);
3707 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "C:-)", luke03_xpm);
3708 gtk_imhtml_associate_smiley(GTK_IMHTML(layout), "O-)", oneeye_xpm);
3709
3710 gtk_widget_show_all(window);
3711
3712 while (fgets (buf, BUF_LONG, fp)) {
3713 if (strlen (buf) >= 5 &&
3714 (!strncmp (buf+strlen(buf)-5, "<BR>\n", 5)))
3715 /* take off the \n */
3716 buf[strlen(buf)-1] = '\0';
3717 if (strlen (buf) >= 21 &&
3718 strstr (buf, "---- New C")) {
3719 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options);
3720 g_string_free (string, TRUE);
3721 string = g_string_new (buf);
3722 } else {
3723 string = g_string_append (string, buf);
3724 }
3725 while (gtk_events_pending())
3726 gtk_main_iteration();
3727 }
3728 gtk_imhtml_append_text (GTK_IMHTML(layout), string->str, options);
3729
3730 gtk_signal_disconnect(GTK_OBJECT(window), block);
3731 gtk_signal_connect(GTK_OBJECT(window), "delete_event",
3732 GTK_SIGNAL_FUNC(destroy_dialog), window);
3733
3734 fclose(fp);
3735 g_string_free (string, TRUE);
3736
3737 return;
3738 }